mirror of
https://github.com/retro-software/B5500-software.git
synced 2026-03-02 17:44:40 +00:00
1. Commit library tape images, directories, and extracted text files. 2. Commit additional utilities under Unisys-Emode-Tools.
661 lines
52 KiB
Plaintext
661 lines
52 KiB
Plaintext
BEGIN 00000000
|
|
COMMENT MISDATA/STATMAN JAN 21,1969; 00000100
|
|
COMMENT 00000200
|
|
THE FOLLOWING CORRELATION PROGRAM WAS DESIGNED TO COMPUTE N, 00000300
|
|
SUM XSQ, SUM YSQ, SUM Y, SUM X, AND SUMXY FOR UP TO 1023 SCORES (NVAR) 00000400
|
|
AND AS MANY CASES (NCASE) AS WILL FIT ON ONE MAGNETIC TAPE. THE PROGRAM00000500
|
|
WILL ACCEPT DATA FROM TAPE (FILE"MASTER") - THIS FILE MUST BE GENERATED 00000600
|
|
VIA SOME OTHER PROGRAM AND MUST CONTAIN ONE CASE PER RECORD (NO BLOCKING00000700
|
|
FACTOR) AND ONE VARIABLE OR SCORE PER COMPUTER WORD (FLT.PT.BINARY), 00000800
|
|
THEREFORE 65 SCORES AND 500 CASES WILL BE CONTAINED ON A TAPE COMPOSED 00000900
|
|
OF 500 RECORDS (NO BLOCKING) AND 65 WRDS/REC. A MISSING SCORE IS 00001000
|
|
INDICATED BY THE CHARACTERS "NULL" (45644343-RIGHT JUSTIFIED) IN THE 00001100
|
|
PLACE OF A SCORE-THESE CHARACTERS MUSTBE WRITTEN ON TAPE BY THE EDITING 00001200
|
|
PROGRAM. ANY "NULL" SCORE IS NOT CONSIDERED IN THE CORRELATION. 00001300
|
|
PARTITIONING OF THE MATRIX IS AUTOMATIC AND IS DEPENDENT ON 00001400
|
|
THE AMOUNT OF MEMORY AVAILABLE (MEM) AND THE NUMBER OF VARIABLES (NVAR).00001500
|
|
THE PARTITIONING FACTOR (NPART) IS INDEPENDENT OF THE NUMBER OF CASES. 00001600
|
|
NPART THEN DETERMINES THE NUMBER OF TAPE PASSES REQUIRED TO FORM ALL THE00001700
|
|
SUMS AFTER EACH PASS OF "MASTER" THE COMPUTED SUMS ARE WRITTEN ONTO TAPE00001800
|
|
"SUMS" UNTIL ALL SUMS ARE FORMED, IT IS THEN NECESSARY TO REARRANGE THE 00001900
|
|
SUMS AND WRITE THEM ONTO TAPE ARR OR ARR1 (7 WRDS/REC). THE FIRST WORD 00002000
|
|
OF EACH RECORD IS USED INTERNALLY WITHIN THE PROGRAM. WHEN REARRANGING 00002100
|
|
IS FINISHED (PERFORMED IN THE INNER BLOCK) THE RESULTS ARE PRINTED (TWO 00002200
|
|
TAPE PASSES REQ). 00002300
|
|
FOR RETART PURPOSES THE PROGRAM HAS BEEN BROKEN INTO 5 PHASES 00002400
|
|
DESCRIBED BELOW: 00002500
|
|
00002600
|
|
PHASE 0 - INITIAL STARTING OF THE PROGRAM, DATA COMES FROM 00002700
|
|
FILE "MASTER". (FILE PROTECT THIS TAPE) 00002800
|
|
00002900
|
|
PHASE 1 - THIS PHASE IS ENTERED ANY TIME AFTER FILE SUMS 00003000
|
|
IS OPENED. THIS PHASE READS MASTER AND WRITES SUMS.00003100
|
|
A CARD IS PUNCHED AT THE END OF EVERY TAPE WRITE FOR FILE "SUMS" 00003200
|
|
(EXCEPT THE LAST ONE). THE PUNCH IS THEN CLOSED AND REOPENED WHEN 00003300
|
|
WHEN AGAIN NEEDED. THE CARD THAT IS PUNCHED IS REQUIRED FOR ANY RESTART00003400
|
|
DURING PHASE 1 AND INDICATES TO THE PROGRAM WHERE FILE "SUMS" MUST BE 00003500
|
|
POSITIONED. THIS CARD ALONG WITH ITS "LABEL" AND "EOF" CARD MUST FOLLOW00003600
|
|
THE "EOF" CARD THAT FOLLOWS THE STANDARD INPUT CARD. IF A RESTART 00003700
|
|
IS MADE DURING ANY OTHER PHASE, THAN THIS SECOND CARD IS NOT REQUIRED. 00003800
|
|
IF NO CARD(S) IS PUNCHED THAN "NPART" EQUALS 1. IF "NPART" > 1 00003900
|
|
THEN (NPART-1) CARDS WILL BE PUNCHED (WITH THE PUNCH FILE OPENED 00004000
|
|
AND CLOSED FOR EACH CARD). 00004100
|
|
THE LAST CARD PUNCHED SHOULD BE USED IN A RESTART DURING PHASE 1 00004200
|
|
ALTHO, ANY OF THE PREVIOUSLY PUNCHED CARDS WOULD ALSO WORK . 00004300
|
|
00004400
|
|
PHASE 2 - ENTERED AFTER EOT MESSAGE GIVEN FOR SUMS. FILES 00004500
|
|
ARR AND/OR ARR1 ARE THEN OPENED. 00004600
|
|
FILE SUMS IS LOCKED AND THE 00004700
|
|
WRITE RING MUST BE PULLED BEFORE PROCEEDING (SAFETY 00004800
|
|
PRECAUTION). THIS PHASE READ SUMS AND WRITES ARR 00004900
|
|
AND/OR ARR1. 00005000
|
|
ONE PASS IS MADE ON FILE "MASTER" SO THAT THE 00005100
|
|
DIAGNAL ELEMENTS MAY BE FORMED - "MASTER" MAY 00005200
|
|
THEN BE REMOVED. (FOR A PHASE 2 RESTART) 00005300
|
|
(ALSO ON A PHASE 2 RESTART IT IS NECESSARY TO 00005400
|
|
PURGE FILES ARR AND/OR ARR1, IF OPENED) 00005500
|
|
00005600
|
|
PHASE 3 - ENTERED AFTER FILE ARR OR ARR1 IS LOCKED. REMOVE 00005700
|
|
WRITE RING-AS PER SPO MESSAGE-TO PROCEED. SUM XY, 00005800
|
|
N, ETC IS READ FROM TAPE AND PRINTED FOR ALL 00005900
|
|
COMBINATIONS. 00006000
|
|
00006100
|
|
PHASE 4 - ENTERED AFTER ALL SUMS HAVE BEEN PRINTED (IDENTITY 00006200
|
|
MATRIX IS LAST ONE PRINTED). MEANS, STANDARD 00006300
|
|
DEVIATION, ETC IS NOW COMPUTED AND PRINTED BY MAKING00006400
|
|
AN ADDITIONAL PASS OF TAPE ARR OR ARR1. 00006500
|
|
00006600
|
|
ONE DATA CARD OF THE FOLLOWING FORMAT IS READ: 00006700
|
|
(ALL COLUMN NUMBERS ARE INCLUSIVE) 00006800
|
|
1. COLS 1-6 - NO. OF CASES (NO. OF RECORDS) - RIGHT 00006900
|
|
JUSTIFIED. 00007000
|
|
2. COLS 7-12 - NO. OF VARIABLES (WDS/REC) - RIGHT 00007100
|
|
JUSTIFIED 00007200
|
|
3. COL 24 - RESTART NO. (0,1,2,3, OR 4) 00007300
|
|
4. COL 30-34 - MEMORY SIZE 00007400
|
|
5. COL 40-43, A NONBLANK CHARACTER ANYWHERE IN THIS 00007500
|
|
FIELD INHIBITS THE PRINTING OF PHASE 3 00007600
|
|
(PHASE 4 IS STILL PRINTED). IF THIS FIELD00007700
|
|
IS BLANK THAN BOTH PHASE 3 AND 4 ARE 00007800
|
|
PRINTED. 00007900
|
|
6. COL 45-48 - I (RIGHT JUSTIFIED) A NONZERO INDICATES 00008000
|
|
THAT ONLY ALL I,J COMBINATIONS WILL BE 00008100
|
|
FORMED AND PRINTED FOR I HELD CONSTANT 00008200
|
|
AND J=I,...NVAR (NO. OF VARIABLES) 00008300
|
|
NAMELY, IF THIS FIELD CONTAINS A 35 THEN 00008400
|
|
COMBINATIONS 35,35 35,36 35,37 35,38 .00008500
|
|
........35,NVAR-1, 35,NVAR ARE FORMED 00008600
|
|
AND PRINTED. THIS FIELD AND COLS 50-53 00008700
|
|
MAY NOT BOTH BE NONBLANK ON THE SAME RUN.00008800
|
|
THIS OPTION IS IGNORED IF THE FIELD IS 00008900
|
|
BLANK OR ZERO. 00009000
|
|
7. COL 50-53 - J (RIGHT JUSTIFIED). A NONZERO INDICATES00009100
|
|
THAT ONLY ALL I,J COMBINATIONS WILL BE 00009200
|
|
FORMED AND PRINTED FOR J HELD CONSTANT 00009300
|
|
AND I=1,2 ....J. NAMELY, IF THIS FIELD 00009400
|
|
CONTAINS A 35 THE COMBINATIONS 1,35 2,3500009500
|
|
3,35 4,35 5,35 ...... 34,35 35,35 00009600
|
|
ARE COMPUTED AND RESULTS PRINTED. IF 00009700
|
|
THIS FIELD IS BLANK OR A 1 THEN THE 00009800
|
|
STANDARD CORRELATION FOR ALL COMBINATIONS00009900
|
|
ARE COMPUTED. RESTART NUMBER IS IGNORED 00010000
|
|
IF THIS FIELD IS NONBLANK 00010100
|
|
THIS FIELD AND COLS 45-48 MAY NOT BOTH BE00010200
|
|
NONBLANK ON THE SAME RUN. 00010300
|
|
8. COL 54-58 - CORROUT, A BOOLEAN VARIABLE. 00010400
|
|
IF TRUE, THEN FULL CORRELATION MATRIX 00010500
|
|
IS WRITTEN ON TAPE LABELLED "CORMAT" 00010600
|
|
WITH 10-DAY SAVE DATE. 00010700
|
|
******* OPTIONS 6 AND 7 ARE PRIMARILY PROVIDED FOR DATA 00010800
|
|
******* DEBUGING INCASE CERTAIN SCORES ARE THOUGHT TO BE IN 00010900
|
|
******* ERROR 00011000
|
|
00011100
|
|
AFTER ITEMS 1,2, AND 4 HAVE BEEN ESTABLISHED, THEY MAY NOT BE 00011200
|
|
CHANGED ON ANY RESTART. 00011300
|
|
ITEM 5 MAY BE CHANGED ON ANY RESTART. IF COL 40-43 IS NON- 00011400
|
|
BLANK (OR CONTAINS A NONBLANK CHAR.) AND PHASE 3 IS INDICATED 00011500
|
|
ON THE RESTART CARD, THEN PHASE 3 IS PRINTED ANYWAY. FOR 00011600
|
|
A RESTART NO. OF 0,1, OR 2 AND ITEM 5 NONBLANK THAN PHASE 3 00011700
|
|
IS NOT PRINTED. 00011800
|
|
00011900
|
|
APPROX. RUNNING TIME FOR A PROBLEM OF 500 CASES AND 112 VARIABLES 00012000
|
|
IS 1 HOUR AND 30 MIN. PHASES 0,1, AND 2 ARE COMPUTE BOUND AND RAN 00012100
|
|
FOR ABOUT 1 HOUR AND 10 MIN, PHASES 3 AND 4 ARE PRINT BOUND AND ACCOUNT00012200
|
|
FOR THE REMAINDER OF THE TIME. 00012300
|
|
R.J.HAM - BURROUGHS CORP. ; 00012400
|
|
00012500
|
|
INTEGER NVAR,NVAR1,MEM,LLIM,ULIM,T1,T2,I,J,TEMP, 00012600
|
|
REQMEN,REM,NP,NCASE,K ; 00012700
|
|
INTEGER NPART,MEM1,REQMEM ; 00012800
|
|
INTEGER RSTT; 00012900
|
|
LABEL OK,CHECK ; 00013000
|
|
ALPHA PRINTORNOT; 00013100
|
|
ALPHA TITLE1,TITLE2,TITLE3; 00013200
|
|
FILE OUT LINE 4 (2,15); 00013300
|
|
FILE IN CARD (1,10); 00013400
|
|
FILE TEM 2(1,200); 00013500
|
|
BOOLEAN CORROUT; 00013600
|
|
LABEL STP; 00013700
|
|
INTEGER ELEMNO; 00013800
|
|
INTEGER ELEMN; 00013900
|
|
FILE OUT PUNCH 0 (1,10); 00014000
|
|
FORMAT FER(I6); 00014100
|
|
FORMAT FTITLE(/X45,3A6/); 00014200
|
|
FORMAT FIN (2I6,X11,I1,X5,I5,X5,A4,X1,I4,X1,I4,L5,X1,3A6); 00014300
|
|
PROCEDURE DATELINE(PROGRAM);VALUE PROGRAM;ALPHA PROGRAM;BEGIN OWN BOOLEA00014400
|
|
N USED;FORMAT HD(A4,I3,", ",A4,X2,"TIME:",I5,X10,"OUTPUT FROM PROGRAM ",00014500
|
|
A6,X10,"UNIVERSITY OF DENVER COMPUTING CENTER" ),LAYT(//"EXECUTION TIM00014600
|
|
E =",I5,X03,"I/O TIME =",I5," SECONDS ",A4,I3,", ",A4,X03,"TIME:",I7///00014700
|
|
);LABEL GOTIT;ALPHA MO,MINS,FEB,HRS,YR,DAY;USED~USED AND PROGRAM.[18:6]=00014800
|
|
0;DAY~TIME(0);YR~DAY.[18:12]+"1900";DAY~DAY.[42:6]+10|DAY.[36:6]+100|DAY00014900
|
|
.[30:6];FEB~IF YR.[42:6]MOD 4=0 THEN"(FEB."ELSE"&FEB.";FOR MO~"~JAN.",FE00015000
|
|
B,"~MAR.","<APR.","~ MAY","<JUNE","~JULY","~AUG.","<SEPT","~OCT.","<NOV.00015100
|
|
","~DEC."DO BEGIN IF DAY{MO.[18:06]THEN GO TO GOTIT;DAY~DAY-MO.[18:6];EN00015200
|
|
D;GOTIT:MINS~TIME(1)/3600;HRS~100|(MINS DIV 60)+MINS MOD 60;IF USED THEN00015300
|
|
WRITE(LINE,LAYT,TIME(2)/60,TIME(3)/60,MO,DAY,YR,HRS)ELSE WRITE(LINE,HD,00015400
|
|
MO,DAY,YR,HRS,PROGRAM);USED~TRUE;END OF DATELINE; 00015500
|
|
READ(CARD,FIN,NCASE,NVAR,RSTT,MEM,PRINTORNOT,ELEMN, 00015600
|
|
ELEMNO,CORROUT,TITLE1,TITLE2,TITLE3); 00015700
|
|
ELEMNO~ELEMNO-1; 00015800
|
|
CLOSE(CARD,RELEASE); 00015900
|
|
NVAR1 ~ NVAR-1; 00016000
|
|
COMMENT FIND BEST WAY TO PARTITION MATRIX CONSIDERING THE 00016100
|
|
AVAILABLE MOMORY AND NUMBER OF VARIABLES (NVAR) ; 00016200
|
|
NPART ~ 1; COMMENT PARTITION FACOTR ; 00016300
|
|
MEM1~MEM-2500; COMMENT DECREASE MEMORY FOR SAFETY 00016400
|
|
FACOTR ; 00016500
|
|
COMMENT DETERMINE MEMORY REQUIRED TO RUN THIS JOB; 00016600
|
|
CHECK: REQMEM ~ 3|NVAR*2/NPART; 00016700
|
|
COMMENT TRANSFER TO OK WHEN RIGHT"FIT" IS FOUND ; 00016800
|
|
IF REQMEM < MEM1 THEN GO TO OK; 00016900
|
|
NPART ~ NPART+1; GO TO CHECK; 00017000
|
|
COMMENT NOW THAT PARTITIONING FACTOR HAS BEEN FOUND IT IS 00017100
|
|
NECESSARY TO DETERMINE UPPER AND LOWER BOUNDS SO THAT00017200
|
|
ALL COMBINATIONS CAN BE FIGURED, ALL COMBINATIONS 00017300
|
|
WILL BE STORED IN ARRAY PARTIT 00017400
|
|
*********** NESTED BLOCK NUMBER 1 *********** ; 00017500
|
|
OK: 00017600
|
|
BEGIN 00017700
|
|
BOOLEAN DIR; 00017800
|
|
INTEGER ARRAY PARTIT[0:NPART|2]; 00017900
|
|
FILE SUMS (2,NVAR,SAVE 10); 00018000
|
|
FILE ARR (2,81,7,SAVE 10); 00018100
|
|
FILE ARR1(2,81,7,SAVE 10); 00018200
|
|
SWITCH FILE SC ~ ARR,ARR1; 00018300
|
|
INTEGER CT,M,M1,BOTTOM,TOP,T,T1; 00018400
|
|
FILE RAWSC "MASTER" (1,NVAR); 00018500
|
|
INTEGER M2,M3; 00018600
|
|
LABEL RSTART0,RSTART1,RSTART2,RSTART3,RSTART4; 00018700
|
|
SWITCH WHICH ~RSTART0,RSTART1,RSTART2,RSTART3,RSTART4; 00018800
|
|
ARRAY SCORE[0:NVAR1] ; 00018900
|
|
ARRAY A1[0:6]; 00019000
|
|
BOOLEAN ONCE; 00019100
|
|
LABEL PRT,EOF; 00019200
|
|
FORMAT FM(I4,I5,X5,E13.6,X7,E13.6,X6,E13.6,X6,E13.6,X7, 00019300
|
|
E13.6,X7,I4); 00019400
|
|
FORMAT HED(X3,"IDENT",X10,"SUM X",X14,"SUM X SQ",X12, 00019500
|
|
"SUM Y",X13,"SUM Y SQ",X13,"SUM XY",X12,"N"//); 00019600
|
|
ALPHA NULL; 00019700
|
|
PROCEDURE RESTART1; 00019800
|
|
BEGIN 00019900
|
|
READ(CARD,FER,NP); 00020000
|
|
CLOSE(CARD ,RELEASE); 00020100
|
|
FOR M ~ 1 STEP 1 UNTIL NP DO 00020200
|
|
BEGIN 00020300
|
|
LLIM ~ PARTIT[M |2-1]; 00020400
|
|
ULIM ~ PARTIT[M |2]; 00020500
|
|
FOR I~1 STEP 1 UNTIL 3 DO 00020600
|
|
FOR K~LLIM STEP 1 UNTIL ULIM DO 00020700
|
|
READ(SUMS); 00020800
|
|
END; 00020900
|
|
NP~NP+1; COMMENT DETERMINE PASS AND POSITION SUMS; 00021000
|
|
END RESTART1; 00021100
|
|
PROCEDURE DIAG(A); 00021200
|
|
ARRAY A[0]; 00021300
|
|
BEGIN 00021400
|
|
COMMENT THIS PROCEDURE COMPUTES Y ,Y*2,N, ETC. FOR 0,0, E,1 2,200021500
|
|
.... NVAR1,NVAR1 - RESULTS ARE RETAINED IN 00021600
|
|
MEMORY AND FINALLY WRITTEN ON THE BACK END OF SC[R1];00021700
|
|
A[0]~1; COMMENT FOR COMPATIRILITY WHEN WRITTEN 00021800
|
|
ON TAPE - INDICATES RECORD IS COMPLETE ; 00021900
|
|
A[6]~A[1]~A[1]+SCORE[M]; COMMENT SUM Y & X ; 00022000
|
|
A[4]~A[3]~A[2]~SCORE[M]*2+A[2]; COMMENT YSQ,XSQ,& XY;00022100
|
|
A[5]~1+A[5]; COMMENT N; 00022200
|
|
END DIAG; 00022300
|
|
ARRAY DIAGN[0:NVAR1,0:6]; 00022400
|
|
PROCEDURE ROW (D,D1,D2); 00022500
|
|
ARRAY D,D1,D2[0] ; COMMENT WAS *; 00022600
|
|
BEGIN 00022700
|
|
T2 ~ SCORE[I]; 00022800
|
|
FOR J ~ I+1 STEP 1 UNTIL NVAR1 DO 00022900
|
|
IF SCORE[J] ! NULL THEN 00023000
|
|
BEGIN 00023100
|
|
T1 ~ SCORE[J] ; 00023200
|
|
D[J] ~ T1 * 2 + D[J] ; COMMENT SUM Y SQ ; 00023300
|
|
D1[J] ~ D1[J] + T1 ; COMMENT SUM Y ; 00023400
|
|
D2[J] ~ T2 | T1 + D2[J] ; COMMENT SUM XY ; 00023500
|
|
END; 00023600
|
|
FOR J ~ I-1 STEP -1 UNTIL 0 DO 00023700
|
|
IF SCORE[J] ! NULL THEN 00023800
|
|
BEGIN 00023900
|
|
T1 ~ SCORE[J] ; 00024000
|
|
D[J] ~ D[J]+1; COMMENT N ; 00024100
|
|
D1[J] ~ T1*2 + D1[J] ; COMMENT SUM X SQ; 00024200
|
|
D2[J] ~ D2[J] + T1 ; COMMENT SUM X ; 00024300
|
|
END 00024400
|
|
END ROW ; 00024500
|
|
PROCEDURE CORR ; 00024600
|
|
BEGIN 00024700
|
|
LABEL L; 00024800
|
|
LLIM ~ PARTIT[NP|2-1]; 00024900
|
|
ULIM ~ PARTIT[NP|2]; 00025000
|
|
L: BEGIN 00025100
|
|
COMMENT SAVE REMOVED HERE BY WHE 1-25-67 ; 00025200
|
|
ARRAY XSQY,NYSQ,XXY[LLIM:ULIM,0:NVAR1]; 00025300
|
|
LABEL L1; 00025400
|
|
FOR K~ 1 STEP 1 UNTIL NCASE DO 00025500
|
|
BEGIN 00025600
|
|
IF DIR THEN READ(RAWSC,NVAR,SCORE[*]) ELSE 00025700
|
|
READ REVERSE (RAWSC,NVAR,SCORE[*]) ; 00025800
|
|
COMMENT FORM XSQ,X,ETC FOR ELEMENTS 0,0 1,1 2,2 ETC,"ONCE"00025900
|
|
IS TRUE ON 1ST TAPE PASS THEN BECOMES FALSE SO THAT, 00026000
|
|
IF NPART>1 THEN ELEMENTS FORMED ONLY ONCE; 00026100
|
|
IF ONCE THEN FOR M~0 STEP 1 UNTIL NVAR1 DO 00026200
|
|
IF SCORE[M]! NULL THEN DIAG(DIAGN[M,*]); 00026300
|
|
FOR I~ LLIM STEP 1 UNTIL ULIM DO 00026400
|
|
IF SCORE[I] ! NULL THEN 00026500
|
|
ROW(NYSQ[I,*],XSQY[I,*],XXY[I,*] ); 00026600
|
|
END; 00026700
|
|
FOR K ~ LLIM STEP 1 UNTIL ULIM DO 00026800
|
|
WRITE(SUMS,NVAR,XSQY[K,*]) ; 00026900
|
|
FOR K ~ LLIM STEP 1 UNTIL ULIM DO 00027000
|
|
WRITE(SUMS,NVAR,NYSQ[K,*]); 00027100
|
|
FOR K ~ LLIM STEP 1 UNTIL ULIM DO 00027200
|
|
WRITE(SUMS,NVAR,XXY[K,*]); 00027300
|
|
L1: 00027400
|
|
IF NP !NPART THEN 00027500
|
|
BEGIN 00027600
|
|
WRITE(PUNCH,FER,NP); 00027700
|
|
CLOSE(PUNCH,RELEASE); 00027800
|
|
NP~NP+1; 00027900
|
|
ONCE~FALSE; 00028000
|
|
DIR ~ NOT DIR ; 00028100
|
|
LLIM ~ PARTIT[NP|2-1] ; 00028200
|
|
ULIM ~ PARTIT[NP|2] ; 00028300
|
|
GO TO L ; 00028400
|
|
END; 00028500
|
|
END INNER BLOCK ; 00028600
|
|
END ; COMMENT END PROCEDURE CORR; 00028700
|
|
PROCEDURE ONECOMB; 00028800
|
|
BEGIN 00028900
|
|
ARRAY NN,XSQ,X,YSQ,Y,XY[0:NVAR1 ]; 00029000
|
|
REAL XT,T1,T2; 00029100
|
|
INTEGER N; 00029200
|
|
REAL DUMMY,SUMY,SUMYSQD,SUMXY,SUMXSQD,SUMX, 00029300
|
|
CORR,MEANX,MEANY,SIGMAX,SIGMAY; 00029400
|
|
LIST LST2 (I,J,CORR,N,MEANX,MEANY,SIGMAX,SIGMAY); 00029500
|
|
LIST LST3 (J,I,CORR,N,MEANY,MEANX,SIGMAY,SIGMAX); 00029600
|
|
FORMAT OUT FMT1 (X2,"IDENT",X8,"CORR",X9,"N",X11,"MEAN (X)", 00029700
|
|
X12,"MEAN (Y)",X11,"SIGMA (X)",X11, 00029800
|
|
"SIGMA (Y)"//); 00029900
|
|
FORMAT OUT FMT2 (I4,X1 ,I4,X4,F7.4,X6,I4,X7,F13.4,X7,F13.4, 00030000
|
|
X7,F13.4,X7,F13.4 ); 00030100
|
|
LABEL L; 00030200
|
|
BOOLEAN B; 00030300
|
|
COMMENT THIS PROCEDURE COMPUTES AND PRINTS ALL COMBINATIONS OF I,J FOR 00030400
|
|
EITHER I HELD CONSTANT AND J=I,...NVAR OR FOR J HELD CONSTANT 00030500
|
|
AND I=1,2,....J. OPTION COMES FROM THE INPUT CARD. "MASTER" IS 00030600
|
|
READ AND ALL COMBINATIONS ARE FORMED AND PRINTED (ALL 00030700
|
|
COMBINATIONS ARE RETAINED IN MEMORY; 00030800
|
|
ELEMN~ELEMN-1; 00030900
|
|
IF ELEMN}0 THEN 00031000
|
|
BEGIN 00031100
|
|
LLIM~ELEMN; ULIM~NVAR1; B~FALSE; 00031200
|
|
ELEMNO~ELEMN; 00031300
|
|
END ELSE 00031400
|
|
BEGIN 00031500
|
|
LLIM~0; ULIM~ELEMNO; B~TRUE; 00031600
|
|
END; 00031700
|
|
I~ELEMNO; 00031800
|
|
TOP~0; 00031900
|
|
FOR K~ 1 STEP 1 UNTIL NCASE DO 00032000
|
|
BEGIN 00032100
|
|
READ(RAWSC,NVAR,SCORE[*]); 00032200
|
|
IF SCORE[I] ! NULL THEN 00032300
|
|
BEGIN 00032400
|
|
T2~SCORE[I]; 00032500
|
|
FOR J~LLIM STEP 1 UNTIL ULIM DO 00032600
|
|
IF SCORE[J] ! NULL THEN 00032700
|
|
BEGIN 00032800
|
|
T1~SCORE[J]; 00032900
|
|
NN[J]~NN[J]+1; XSQ[J]~T1*2+XSQ[J]; X[J]~T1+X[J]; 00033000
|
|
YSQ[J]~T2*2+YSQ[J]; Y[J]~Y[J]+T2; XY[J]~XY[J]+T1|T2; 00033100
|
|
END; 00033200
|
|
END; 00033300
|
|
END; 00033400
|
|
CLOSE(RAWSC,SAVE); 00033500
|
|
J~ELEMNO+1; WRITE(LINE,HED); 00033600
|
|
FOR I~LLIM STEP 1 UNTIL ULIM DO 00033700
|
|
BEGIN 00033800
|
|
IF B THEN 00033900
|
|
WRITE(LINE,FM,I+1,J,X[I],XSQ[I],Y[I],YSQ[I],XY[I],NN[I]) 00034000
|
|
ELSE 00034100
|
|
WRITE(LINE,FM,J,I+1,Y[I],YSQ[I],X[I],XSQ[I],XY[I],NN[I]);00034200
|
|
TOP~TOP+1; 00034300
|
|
IF TOP>54 THEN 00034400
|
|
BEGIN 00034500
|
|
WRITE(LINE[PAGE]); 00034600
|
|
WRITE(LINE,FTITLE,TITLE1,TITLE2,TITLE3); 00034700
|
|
WRITE(LINE,HED); 00034800
|
|
TOP~0; 00034900
|
|
END; 00035000
|
|
END; 00035100
|
|
J~ELEMNO+1; 00035200
|
|
WRITE(LINE[PAGE]); WRITE(LINE,FMT1); 00035300
|
|
TOP~0; 00035400
|
|
FOR M~LLIM STEP 1 UNTIL ULIM DO 00035500
|
|
BEGIN 00035600
|
|
N~NN[M]; SUMY~Y[M]; SUMYSQD~YSQ[M]; SUMXY~XY[M]; 00035700
|
|
SUMXSQD~XSQ[M]; SUMX~X[M]; 00035800
|
|
IF N = 0 THEN 00035900
|
|
BEGIN 00036000
|
|
MEANX~MEANY~SIGMAX~SIGMAY~CORR~0; GO TO L; 00036100
|
|
END; 00036200
|
|
MEANY ~ SUMY / N; MEANX ~ SUMX / N; 00036300
|
|
SIGMAX ~ SQRT ((SUMXSQD / N) - (MEANX * 2)); 00036400
|
|
SIGMAY ~ SQRT ((SUMYSQD / N) - (MEANY * 2)); 00036500
|
|
XT~SUMXY-(SUMX | SUMY)/N; 00036600
|
|
T1~SUMXSQD - (SUMX*2)/N; 00036700
|
|
T2~SUMYSQD-(SUMY*2)/N; 00036800
|
|
IF T1=0 OR T2=0 THEN CORR~0 ELSE 00036900
|
|
CORR~XT/(SQRT(T1) | SQRT(T2)); 00037000
|
|
I~M+1; 00037100
|
|
L: 00037200
|
|
IF B THEN 00037300
|
|
WRITE(LINE,FMT2,LST2) 00037400
|
|
ELSE 00037500
|
|
WRITE(LINE,FMT2,LST3); 00037600
|
|
TOP~TOP+1; 00037700
|
|
IF TOP>54 THEN 00037800
|
|
BEGIN 00037900
|
|
WRITE(LINE[PAGE]); WRITE(LINE,FMT1); 00038000
|
|
TOP~0 00038100
|
|
END; 00038200
|
|
END; 00038300
|
|
GO TO STP; 00038400
|
|
END ONECOMB; 00038500
|
|
COMMENT STO COL. NOS. FOR PARTITIONED MATRIX IN PARTIT ; 00038600
|
|
NULL ~ "NULL"; 00038700
|
|
IF ELEMN}1 OR ELEMNO>0 THEN ONECOMB; 00038800
|
|
ONCE~TRUE; 00038900
|
|
TEMP ~ NPART | 2; 00039000
|
|
PARTIT[1] ~ 0; 00039100
|
|
PARTIT[2] ~ (NVAR DIV NPART) -1 ; 00039200
|
|
REM ~ NVAR MOD NPART ; 00039300
|
|
FOR I ~ 3 STEP 2 UNTIL TEMP DO 00039400
|
|
BEGIN 00039500
|
|
PARTIT[I] ~ PARTIT[I-1] + 1; 00039600
|
|
PARTIT[I+1] ~ PARTIT[2] + PARTIT[I] ; 00039700
|
|
END; 00039800
|
|
IF REM ! 0 THEN PARTIT[I-1] ~ PARTIT[I-1] + REM; 00039900
|
|
DIR ~ TRUE; 00040000
|
|
NP ~ 1 ; 00040100
|
|
IF RSTT = 2 THEN 00040200
|
|
BEGIN 00040300
|
|
FOR K~1 STEP 1 UNTIL NCASE DO 00040400
|
|
BEGIN 00040500
|
|
READ(RAWSC,NVAR,SCORE[*]); 00040600
|
|
FOR M~0 STEP 1 UNTIL NVAR1 DO IF SCORE[M]!NULL 00040700
|
|
THEN DIAG(DIAGN[M,*]); 00040800
|
|
END; 00040900
|
|
CLOSE(RAWSC,SAVE); 00041000
|
|
END; 00041100
|
|
GO TO WHICH[RSTT+1]; 00041200
|
|
COMMENT """"""""""""" START OF PHASE 1 """"""""""""" 00041300
|
|
THIS PHASE ACTUALLY BEGINS WHEN FILE SUMS IS OPENED 00041400
|
|
AND WRITTEN ON ; 00041500
|
|
RSTART1: RESTART1; 00041600
|
|
COMMENT """"""""""""" START OF PHASE 0 """"""""""""" ;00041700
|
|
RSTART0: 00041800
|
|
CORR; 00041900
|
|
CLOSE(RAWSC,SAVE); 00042000
|
|
CLOSE(SUMS,SAVE); 00042100
|
|
COMMENT REMOVE WRITE RING AS A SAFETY PRECAUTION AND READ 00042200
|
|
TAPE JUST LOCKED; 00042300
|
|
COMMENT 00042400
|
|
********************** INNER BLOCK ***************************** ;00042500
|
|
COMMENT """"""""""""" START OF PHASE 2 """"""""""""" ;00042600
|
|
RSTART2: 00042700
|
|
T~0 ; T1~1; 00042800
|
|
FOR CT ~ 1 STEP 1 UNTIL NPART DO 00042900
|
|
BEGIN 00043000
|
|
LABEL RD,REST,INIT; 00043100
|
|
COMMENT SAVE REMOVED HERE BY WHE 1-25-67; 00043200
|
|
ARRAY D,D1,D2[PARTIT[CT|2-1]:PARTIT[CT|2],0:NVAR1], 00043300
|
|
A[0:6]; 00043400
|
|
LLIM ~ PARTIT[CT|2-1]; 00043500
|
|
TOP ~ ULIM ~ PARTIT[CT|2] ; 00043600
|
|
M1 ~ ULIM; M ~ LLIM; 00043700
|
|
FOR I~M STEP 1 UNTIL M1 DO READ(SUMS,NVAR,D[I,*]); 00043800
|
|
FOR I~M STEP 1 UNTIL M1 DO READ(SUMS,NVAR,D1[I,*]); 00043900
|
|
FOR I~M STEP 1 UNTIL M1 DO READ(SUMS,NVAR,D2[I,*]); 00044000
|
|
IF CT=1 THEN GO TO INIT; 00044100
|
|
REWIND(SC[T]); COMMENT REW HERE SO THAT FINAL 00044200
|
|
TAPE IS NOT RESOUND ; 00044300
|
|
M2~0; M3~PARTIT[CT|2-1]-1; 00044400
|
|
COMMENT A[0] IS TRUE IF RECORD IS COMPLETE; 00044500
|
|
FOR I ~ M2 STEP 1 UNTIL M3 DO 00044600
|
|
BEGIN 00044700
|
|
RD: READ(SC[T][NO],7,A[*]); 00044800
|
|
IF BOOLEAN (A[0]) THEN 00044900
|
|
BEGIN 00045000
|
|
WRITE(SC[T1],7,A[*]) ; READ(SC[T]); 00045100
|
|
GO TO RD ; 00045200
|
|
END; 00045300
|
|
FOR J ~ M STEP 1 UNTIL M1 DO 00045400
|
|
BEGIN 00045500
|
|
READ(SC[T],7,A[*]); 00045600
|
|
A[4] ~ D[J,I]; A[5] ~ D1[J,I]; A[6]~D2[J,I]; 00045700
|
|
A[0] ~ 1; 00045800
|
|
WRITE(SC[T1],7,A[*]); 00045900
|
|
END; 00046000
|
|
REST: FOR J ~ TOP +1 STEP 1 UNTIL NVAR1 DO 00046100
|
|
BEGIN 00046200
|
|
READ(SC[T],7,A[*]); 00046300
|
|
WRITE(SC[T1],7,A[*]); 00046400
|
|
END; 00046500
|
|
END; 00046600
|
|
COMMENT FORM COMBINATIONS FROM TAPE SUMS; 00046700
|
|
INIT: FOR I ~ M STEP 1 UNTIL M1 DO 00046800
|
|
BEGIN 00046900
|
|
FOR J ~ I+1 STEP 1 UNTIL M1 DO 00047000
|
|
BEGIN 00047100
|
|
A[0]~1; A[1]~D [I,J];A[2]~D1[I,J]; A[3]~D2[I,J]; 00047200
|
|
A[4]~D[J,I]; A[5]~ D1[J,I]; A[6]~D2[J,I]; 00047300
|
|
WRITE (SC[T1],7,A[*]); 00047400
|
|
END; 00047500
|
|
A[4]~A[5]~A[6]~A[0]~ 0; 00047600
|
|
FOR J ~ ULIM+1 STEP 1 UNTIL NVAR1 DO 00047700
|
|
BEGIN 00047800
|
|
A[1]~D[I,J]; A[2]~D1[I,J]; A[3]~D2[I,J]; 00047900
|
|
WRITE(SC[T1],7,A[*]); 00048000
|
|
END; 00048100
|
|
END; 00048200
|
|
REWIND(SC[T]); 00048300
|
|
DOUBLE(T,T1,~,T1,T); 00048400
|
|
END; 00048500
|
|
COMMENT END OF INNER BLOCK; 00048600
|
|
COMMENT FINAL TAPE IS SC[T]; 00048700
|
|
COMMENT WRITE DIAG ELEMENTS ON BACK END OF SC[T] TAPE ; 00048800
|
|
FOR I ~ 0 STEP 1 UNTIL NVAR1 DO 00048900
|
|
WRITE(SC[T],7,DIAGN[I,*]); 00049000
|
|
CLOSE(SC[T],SAVE); 00049100
|
|
CLOSE(SUMS,SAVE); 00049200
|
|
COMMENT REMOVE WRITE RING AS A SAFETY PRECAUTION AND READ 00049300
|
|
TAPE JUST LOCKED; 00049400
|
|
CLOSE(SC[T1],RELEASE); 00049500
|
|
IF PRINTORNOT ! " " THEN GO TO RSTART4; 00049600
|
|
COMMENT """"""""""""" START OF PHASE 3 """"""""""""" ;00049700
|
|
RSTART3: 00049800
|
|
COMMENT DETERMINE WHICH TAPE WAS FINAL OUTPUT TAPE AND PRINT 00049900
|
|
IT - THIS IS REDUNDANT BUT IS NEEDED IN CASE OF A 00050000
|
|
RESTART FOR PHASE 3 OR 4 ; 00050100
|
|
IF BOOLEAN(NPART) THEN T~1 ELSE T~0; 00050200
|
|
WRITE(LINE[PAGE]); 00050300
|
|
DATELINE("MISDAT"); 00050400
|
|
WRITE(LINE,HED); TOP~ 0; 00050500
|
|
FOR M ~ 1 STEP 1 UNTIL NVAR1 DO 00050600
|
|
BEGIN 00050700
|
|
FOR M1~ M+1 STEP 1 UNTIL NVAR DO 00050800
|
|
BEGIN 00050900
|
|
READ(SC[T],7,A1[*]); 00051000
|
|
WRITE(LINE,FM,M,M1,A1[6],A1[4],A1[1],A1[2],A1[3], 00051100
|
|
A1[5]); 00051200
|
|
TOP ~ TOP+1; IF TOP>46 THEN 00051300
|
|
BEGIN 00051400
|
|
TOP~0; WRITE(LINE[PAGE]); 00051500
|
|
DATELINE("MISDAT"); 00051600
|
|
WRITE(LINE,HED); 00051700
|
|
END; 00051800
|
|
END; 00051900
|
|
WRITE(LINE); TOP ~ TOP+1; 00052000
|
|
END; 00052100
|
|
IF TOP>46 THEN BEGIN TOP~0; WRITE(LINE[PAGE]); %VR 1/69 00052110
|
|
WRITE(LINE,HED); END; %VR 1/69 00052120
|
|
TOP ~ TOP+2; 00052200
|
|
IF TOP>46 THEN BEGIN TOP~0; WRITE(LINE[PAGE]); %VR 1/69 00052210
|
|
WRITE(LINE,HED); END; %VR 1/69 00052220
|
|
WRITE(LINE[DBL]); COMMENT GET DIAG ELEMENTS; 00052300
|
|
FOR M~1 STEP 1 UNTIL NVAR DO 00052400
|
|
BEGIN 00052500
|
|
READ(SC[T],7,A1[*]); 00052600
|
|
WRITE(LINE,FM,M,M ,A1[6],A1[4],A1[1],A1[2],A1[3], 00052700
|
|
A1[5]); 00052800
|
|
TOP~TOP+1; IF TOP > 46 THEN 00052900
|
|
BEGIN 00053000
|
|
TOP ~ 0; WRITE(LINE[PAGE]); 00053100
|
|
DATELINE("MISDAT"); 00053200
|
|
WRITE(LINE,HED); 00053300
|
|
END; 00053400
|
|
END; 00053500
|
|
REWIND(SC[T]); 00053600
|
|
COMMENT SUM Y, SUM Y SQ, SUM XY, ETC JUST PRINTED, REWIND 00053700
|
|
TPAE AND READ,COMPUTE, AND PRINT MEAN, STANDARD 00053800
|
|
DEVIATION, ETC. ; 00053900
|
|
COMMENT """"""""""""" START OF PHASE 4 """"""""""""" ;00054000
|
|
RSTART4: 00054100
|
|
COMMENT DETERMINE WHICH TAPE WAS FINAL OUTPUT TAPE AND PRINT 00054200
|
|
IT - THIS IS REDUNDANT BUT IS NEEDED IN CASE OF A 00054300
|
|
RESTART FOR PHASE 3 OR 4 ; 00054400
|
|
IF BOOLEAN(NPART) THEN T~1 ELSE T~0; 00054500
|
|
BEGIN 00054600
|
|
COMMENT R M WATTERS, SUBPROGRAM TO COMPUTE AND PRINT THE 00054700
|
|
MEAN OF X ANY Y, STANDARD DEVIATION OF X AND Y, AND 00054800
|
|
THE COEFFICIENT OF CORRELATION; 00054900
|
|
FORMAT OUT FMT1 (X2,"IDENT",X8,"CORR",X9,"N",X11,"MEAN (X)", 00055000
|
|
X12,"MEAN (Y)",X11,"SIGMA (X)",X11, 00055100
|
|
"SIGMA (Y)"//); 00055200
|
|
FORMAT OUT FMT2 (I4,X1 ,I4,X4,F7.4,X6,I4,X7,F13.4,X7,F13.4, 00055300
|
|
X7,F13.4,X7,F13.4 ); 00055400
|
|
INTEGER I,J,N,PAGENO,LINENO; 00055500
|
|
REAL ARRAY CM[0:NVAR]; 00055600
|
|
REAL XT,T1,T2; 00055700
|
|
REAL DUMMY,SUMY,SUMYSQD,SUMXY,SUMXSQD,SUMX, 00055800
|
|
CORR,MEANX,MEANY,SIGMAX,SIGMAY; 00055900
|
|
LIST LST1 (DUMMY,SUMY,SUMYSQD,SUMXY,SUMXSQD,N,SUMX), 00056000
|
|
LST2 (I,J,CORR,N,MEANX,MEANY,SIGMAX,SIGMAY); 00056100
|
|
LABEL EOF; 00056200
|
|
PROCEDURE SOLVER; 00056300
|
|
BEGIN 00056400
|
|
LABEL L; 00056500
|
|
IF N = 0 THEN 00056600
|
|
BEGIN 00056700
|
|
MEANX~MEANY~SIGMAX~SIGMAY~CORR~0; GO TO L; 00056800
|
|
END; 00056900
|
|
MEANY ~ SUMY / N; MEANX ~ SUMX / N; 00057000
|
|
SIGMAX ~ SQRT ((SUMXSQD / N) - (MEANX * 2)); 00057100
|
|
SIGMAY ~ SQRT ((SUMYSQD / N) - (MEANY * 2)); 00057200
|
|
XT~SUMXY-(SUMX | SUMY)/N; 00057300
|
|
T1~SUMXSQD - (SUMX*2)/N; 00057400
|
|
T2~SUMYSQD-(SUMY*2)/N; 00057500
|
|
IF T1=0 OR T2=0 THEN CORR~0 ELSE 00057600
|
|
CORR~XT/(SQRT(T1) | SQRT(T2)); 00057700
|
|
L: 00057800
|
|
END OF PROCEDURE SOLVER; 00057900
|
|
PROCEDURE NEWPAGE; 00058000
|
|
BEGIN 00058100
|
|
WRITE (LINE[PAGE]); 00058200
|
|
DATELINE("MISDAT"); 00058300
|
|
LINENO ~ 0; 00058400
|
|
WRITE(LINE,FTITLE,TITLE1,TITLE2,TITLE3); 00058500
|
|
WRITE (LINE,FMT1); 00058600
|
|
END OF PROCEDURE NEWPAGE; 00058700
|
|
PROCEDURE PROCESSOR; 00058800
|
|
BEGIN 00058900
|
|
READ (SC[T],*,LST1)[EOF]; 00059000
|
|
SOLVER; 00059100
|
|
WRITE (LINE,FMT2,LST2); 00059200
|
|
LINENO ~ LINENO + 1; 00059300
|
|
IF LINENO } 47 THEN NEWPAGE; 00059400
|
|
END OF PROCEDURE PROCESSOR; 00059500
|
|
COMMENT *****START OF PROGRAM*****; 00059600
|
|
NEWPAGE; 00059700
|
|
IF CORROUT THEN 00059800
|
|
BEGIN 00059900
|
|
FOR I~1 STEP 1 UNTIL NVAR1 DO 00060000
|
|
BEGIN 00060100
|
|
WRITE(LINE); 00060200
|
|
LINENO~LINENO+1; 00060300
|
|
IF LINENO}47 THEN NEWPAGE; %VR 1/69 00060310
|
|
CM[I]~1.0; 00060400
|
|
FOR J~I+1 STEP 1 UNTIL NVAR DO 00060500
|
|
BEGIN 00060600
|
|
PROCESSOR; 00060700
|
|
CM[J]~CORR 00060800
|
|
END; 00060900
|
|
WRITE(TEM ,*, FOR J~1 STEP 1 UNTIL NVAR DO CM[J]); 00061000
|
|
END OF ILOOP FOR CORROUT 00061100
|
|
END 00061200
|
|
ELSE 00061300
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR1 DO 00061400
|
|
BEGIN 00061500
|
|
WRITE (LINE); 00061600
|
|
LINENO ~ LINENO + 1; 00061700
|
|
IF LINENO}47 THEN NEWPAGE; 00061800
|
|
FOR J ~ I + 1 STEP 1 UNTIL NVAR DO 00061900
|
|
PROCESSOR; 00062000
|
|
END OF ILOOP; 00062100
|
|
REWIND(TEM ); 00062200
|
|
COMMENT START OF IDENTITY MATRIX; 00062300
|
|
WRITE(LINE[DBL]); LINENO~LINENO+2; 00062400
|
|
FOR I ~ 1 STEP 1 UNTIL NVAR DO 00062500
|
|
BEGIN 00062600
|
|
J ~ I; PROCESSOR; 00062700
|
|
END OF ILOOP; 00062800
|
|
EOF: END OF BLOCK WATTERS; 00062900
|
|
END NESTED BLOCK NUMBER 1; 00063000
|
|
IF NOT CORROUT THEN GO TO STP ; 00063100
|
|
COMMENT ******** NEW BLOCK TO WRITE FULL CORR MATRIX ON TAPE; 00063200
|
|
BEGIN 00063300
|
|
REAL ARRAY CMT[0:NVAR,0:NVAR]; 00063400
|
|
FORMAT FCORMAT(100O) ; 00063500
|
|
FILE CORMAT 2(2, 100,SAVE 10); 00063600
|
|
FOR I~1 STEP 1 UNTIL NVAR1 DO 00063700
|
|
BEGIN 00063800
|
|
READ(TEM ,*, FOR J~1 STEP 1 UNTIL NVAR DO CMT[I,J]); 00063900
|
|
END; 00064000
|
|
CLOSE(TEM ,RELEASE); 00064100
|
|
FOR I~1 STEP 1 UNTIL NVAR1 DO 00064200
|
|
FOR J~I+1 STEP 1 UNTIL NVAR DO 00064300
|
|
CMT[J,I]~CMT[I,J]; 00064400
|
|
CMT[NVAR,NVAR]~1.0; 00064500
|
|
WRITE(CORMAT,FCORMAT,NVAR) ; 00064600
|
|
FOR I~1 STEP 1 UNTIL NVAR DO 00064700
|
|
WRITE(CORMAT,FCORMAT,FOR J~1 STEP 1 UNTIL NVAR DO 00064800
|
|
CMT[I,J]); 00064900
|
|
END; 00065000
|
|
STP: 00065100
|
|
DATELINE(0); 00065200
|
|
END PROGRAM. 00065300
|
|
LAST CARD ON CRDIMG TAPE 99999999
|