From e128c9fa8a4d1bb0236e281cc0b9891b184ea70c Mon Sep 17 00:00:00 2001 From: "paul.kimpel@digm.com" Date: Sun, 6 May 2012 16:38:23 +0000 Subject: [PATCH] 1. Commit updated ALGOLXEM compiler source and additional test cases from recent debugging effort. 2. Rename original NEATUP source from UTIL.NEATUP.alg_m to NEATUP.alg_m. --- tests/ALGOLXEM/CALLBYNAMEPARAM.alg_m | 43 ++ tests/ALGOLXEM/MANORBOYTEST.alg_m | 21 + tests/ALGOLXEM/MULTISWITCH.alg_m | 21 + tests/ALGOLXEM/ORTHO.alg_m | 190 ++++++++ tools/{UTIL.NEATUP.alg_m => NEATUP.alg_m} | 0 tools/NEATUPINFO.alg_m | 198 ++++++++ tools/xem/ALGOLXEM.alg_m | 534 +++++++++++----------- 7 files changed, 743 insertions(+), 264 deletions(-) create mode 100644 tests/ALGOLXEM/CALLBYNAMEPARAM.alg_m create mode 100644 tests/ALGOLXEM/MANORBOYTEST.alg_m create mode 100644 tests/ALGOLXEM/MULTISWITCH.alg_m create mode 100644 tests/ALGOLXEM/ORTHO.alg_m rename tools/{UTIL.NEATUP.alg_m => NEATUP.alg_m} (100%) create mode 100644 tools/NEATUPINFO.alg_m diff --git a/tests/ALGOLXEM/CALLBYNAMEPARAM.alg_m b/tests/ALGOLXEM/CALLBYNAMEPARAM.alg_m new file mode 100644 index 0000000..64be5e4 --- /dev/null +++ b/tests/ALGOLXEM/CALLBYNAMEPARAM.alg_m @@ -0,0 +1,43 @@ +$ SET LIST $ PRT DEBUGN 00001000120504PK +% DEFINE AND CALL-BY-NAME PARAMETER TEST. 00002000120504PK +% 2012-05-04 P.KIMPEL 00003000120504PK + 00004000120504PK +BEGIN 00005000120504PK +DEFINE 00006000120504PK + FS = 2 #, 00007000120504PK + FP = 5 #, 00008000120504PK + FQ = 7 #, 00009000120504PK + LONGISH = REAL THISISSOMEDEFINETEXTTHATISMUCHLONGERTHANONEWORD #; 00010000120504PK +INTEGER 00011000120504PK + TEMP; 00012000120504PK + 00012500120504PK +LONGISH; 00013000120504PK + 00015000120504PK +PROCEDURE VARIABLE(P1); 00016000120504PK + REAL P1; 00017000120504PK + BEGIN 00018000120504PK + LABEL EXIT; 00019000120504PK + INTEGER I; 00020000120504PK + 00021000120504PK + IF P1 > FQ THEN 00022000120504PK + GO TO EXIT; 00023000120504PK + 00024000120504PK + IF P1 = FS THEN 00025000120504PK + I:= P1 00026000120504PK + ELSE 00027000120504PK + IF P1 = FP THEN 00028000120504PK + BEGIN 00029000120504PK + I:= 17; 00030000120504PK + P1:= 0; 00031000120504PK + END 00032000120504PK + ELSE 00033000120504PK + GO TO EXIT; 00034000120504PK + 00035000120504PK +EXIT: 00036000120504PK + END VARIABLE; 00037000120504PK + 00038000120504PK +VARIABLE(FP); 00039000120504PK +VARIABLE(TEMP); 00040000120504PK +VARIABLE(THISISSOMEDEFINETEXTTHATISMUCHLONGERTHANONEWORD); 00041000120504PK +VARIABLE(TEMP+THISISSOMEDEFINETEXTTHATISMUCHLONGERTHANONEWORD); 00042000120504PK +END. 00043000120504PK diff --git a/tests/ALGOLXEM/MANORBOYTEST.alg_m b/tests/ALGOLXEM/MANORBOYTEST.alg_m new file mode 100644 index 0000000..72273ac --- /dev/null +++ b/tests/ALGOLXEM/MANORBOYTEST.alg_m @@ -0,0 +1,21 @@ +$ SET LIST $ RESET PRT DEBUGN 00000010120506PK +% DONALD KNUTH-S "MAN OR BOY TEST" 00000100120506PK +% FROM ALGOL BULLETIN 17.2.4, JULY 1964, PAGE 7. 00000200120506PK + 00000900120506PK +BEGIN 00002000120506PK +FILE OUT OUTPUT 18 (1, 15); 00003000120506PK +REAL PROCEDURE A(K, X1, X2, X3, X4, X5); 00004000120506PK + VALUE K; INTEGER K; 00005000120506PK + REAL X1, X2, X3, X4, X5; 00006000120506PK + BEGIN 00007000120506PK + REAL PROCEDURE B; 00008000120506PK + BEGIN 00009000120506PK + K:= K-1; 00010000120506PK + B:= A:= A(K, B, X1, X2, X3, X4); 00011000120506PK + END B; 00012000120506PK + 00013000120506PK + IF K { 0 THEN A:= X4+X5 ELSE B 00014000120506PK + END A; 00015000120506PK + 00016000120506PK +WRITE(OUTPUT, /, A(10, 1, -1, -1, 1, 0)); 00017000120506PK +END. 00018000120506PK diff --git a/tests/ALGOLXEM/MULTISWITCH.alg_m b/tests/ALGOLXEM/MULTISWITCH.alg_m new file mode 100644 index 0000000..86c9df5 --- /dev/null +++ b/tests/ALGOLXEM/MULTISWITCH.alg_m @@ -0,0 +1,21 @@ +$ SET $ LIST PRT DEBUGN 00001000120505PK +% TEST FOR MULTIPLE INVOCATIONS OF A SWITCH DECLARATION. 00002000120505PK +% 2012-05-05 P.KIMPEL 00003000120505PK + 00004000120505PK +BEGIN 00005000120505PK +LABEL L1, L2; 00006000120505PK +INTEGER I, J; 00007000120505PK +SWITCH SW ~ L2, L1; 00008000120505PK + 00009000120505PK +L1: 00010000120505PK +FOR I ~ 0 STEP 1 UNTIL 3 DO 00011000120505PK + BEGIN 00012000120505PK + J:= I; 00013000120505PK + WHEN(I); 00014000120505PK + GO TO SW[J]; 00015000120505PK + END FOR; 00016000120505PK + 00017000120505PK +L2: 00018000120505PK +I ~ J; 00019000120505PK +GO TO SW[I]; 00020000120505PK +END. 00021000120505PK diff --git a/tests/ALGOLXEM/ORTHO.alg_m b/tests/ALGOLXEM/ORTHO.alg_m new file mode 100644 index 0000000..28aefb7 --- /dev/null +++ b/tests/ALGOLXEM/ORTHO.alg_m @@ -0,0 +1,190 @@ +$ SET LIST $ PRT DEBUGN 00000010120430PK +% -ORTHO- TEST, 3/3/70 00000100120429PK +BEGIN 00000200 +INTEGER STARTT; 00000300120429PK +FORMAT FT (//"DATE: "A6" PROC TIME: "F8.2" I/O TIME: "F8.2" ELAPSED: " 00000400120429PK + F8.2" SEC"); 00000500120429PK +INTEGER I, J, N, M, P, R, AI, AUI, ZEI, MUI; 00000600120429PK +REAL SUM, GMDT, FN; 00000700120429PK +FILE IN PARAMS (1,10); 00000800120429PK +FILE OUT FLUSH 18 (5,17); 00000900120429PK + 00001000120429PK +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00002000120429PK +PROCEDURE ORTHO (W, Y, Z, N, FN, M, P, R, AI, AUI, MUI, ZEI, X, DEV, 00003000 + COF, STD, CV, VCV, GMDT, Q, Q2, E, EP, A, GF, ENF); 00004000 +VALUE N, M, P, R, AI, AUI, MUI, ZEI; 00005000 +REAL FN, GMDT; 00006000 +REAL ARRAY STD, GF, W, ENF [1]; 00007000 +REAL ARRAY Y, Z, X, DEV, COF, CV, Q, Q2, E, EP, A [1, 1]; 00008000 +REAL ARRAY VCV [1, 1, 1]; 00009000 +INTEGER N, M, P, R, AI, AUI, ZEI, MUI; 00010000 + 00011000120429PK +COMMENT 00012000 + ORTHO IS TAKEN FROM ACM ALGORITHM 127 [COMM. ACM, VOL.5, 00013000 + OCTOBER 1962, P. 511, AUTHOR: PHILIP J. WALSH]; 00014000 + 00015000120429PK +BEGIN 00016000 +INTEGER NPP, NPM, M1, N2, M2, R1, RBAR, P2, BEI, RHI, I18, GAI, SII, I,00017000 + J, DEI, NUI, E1Z2, E1Z1, K, THI, ALI, OMI, NII; 00018000 +REAL ARRAY PK, XP [1:N+P], QK[1:M+1]; 00019000 +REAL DENOM, SUM, DK2, DK, FI, SS, SSQ; 00020000 +LABEL BOX1, AT1, AT2, BOX2, AU1, AU2, BOX3, BOX4, BOX5, BOX6, MU1, 00021000 + MU2, BOX7, OM1, OM2, BOX8, DE1, BOX8A, BOX8B, DE2, BOX8C, BOX8D, 00022000 + BOX9, TH1, TH2, TH3, BOX10, AL1, AL2, BOX11, NU1, NU2, BOX12, 00023000 + BE1, BE2, BOX13, GA1, GA2, BOX14, RH1, ZE1, ZE2, RH2, SI1, SI2, 00024000 + FINAL; 00025000 +SWITCH AT ~ AT1, AT2; SWITCH ZE ~ ZE1, ZE2; 00026000120429PK +SWITCH AU ~ AU1, AU2; SWITCH MU ~ MU1, MU2; 00027000120429PK +SWITCH BE ~ BE1, BE2; SWITCH RH ~ RH1, RH2; SWITCH GA ~ GA1, GA2; 00028000120429PK +SWITCH SI ~ SI1, SI2; SWITCH DE ~ DE1, DE2; SWITCH NU ~ NU1, NU2; 00029000120429PK +SWITCH TH ~ TH1, TH2, TH3; SWITCH AL ~ AL1, AL2; 00030000120429PK +SWITCH OM ~ OM1, OM2; 00031000120429PK + NPP ~ N+P; NPM ~ N+M; M1 ~ M-1; N2 ~ N+1; M2 ~ M+1; 00032000120429PK + R1 ~ 0; RBAR ~ R; P2 ~ P+1; DENOM ~ IF N=M THEN 1.0 00033000120429PK + ELSE SQRT(N-M); BEI ~ RHI ~ I18 ~ 1; 00034000120429PK + IF (P ! 0) THEN GAI ~ SII ~ 2 ELSE GAI ~ SII ~ 1; 00035000120501PK +BOX1: GO TO AT[AI]; 00036000 + AT1: FOR J ~ 1 STEP 1 UNTIL N DO BEGIN 00037000120429PK + X[2,J] ~ Z[1,J]; X[1,J] ~ 1.0 END; 00038000120429PK + FOR I ~ 2 STEP 1 UNTIL M1 DO BEGIN 00039000120429PK + FOR J ~ 1 STEP 1 UNTIL N DO 00040000120429PK + X[I+1,J] ~ X[I,J] | X[2,J] END; GO TO BOX2; 00041000120429PK + AT2: FOR I ~ 1 STEP 1 UNTIL M DO BEGIN 00042000120429PK + FOR J ~ 1 STEP 1 UNTIL N DO 00043000120429PK + X[I,J] ~ Z[I,J] END; 00044000120429PK +BOX2: IF P = 0 THEN GO TO BOX3 ELSE GO TO AU[AUI]; 00045000 + AU1: FOR I ~ 1 STEP 1 UNTIL M DO BEGIN 00046000120429PK + FOR J ~ N2 STEP 1 UNTIL NPP DO 00047000120429PK + X[I,J] ~ 0.0; X[I,N+I] ~ 1.0 END; GO TO BOX3; 00048000120429PK + AU2: FOR I ~ 1 STEP 1 UNTIL M DO BEGIN 00049000120429PK + FOR J ~ N2 STEP 1 UNTIL NPP DO 00050000120429PK + X[I,J] ~ Z[I,J] END; 00051000120429PK +BOX3: DEI ~ NUI ~ E1Z1 ~ E1Z2 ~ K ~ 1; 00052000120429PK +BOX4: THI ~ 1; 00053000120429PK +BOX5: ALI ~ OMI ~ 1; IF P = 0 THEN GO TO BOX6 ELSE 00054000120429PK + FOR J ~ 1 STEP 1 UNTIL P DO PK[N+J] ~ 0.0; 00055000120429PK +BOX6: GO TO MU[MUI]; 00056000 + MU1: FOR I ~ 1 STEP 1 UNTIL N DO PK[I] ~ X[K,I]; 00057000120429PK + GO TO BOX7; 00058000 + MU2: FOR I ~ 1 STEP 1 UNTIL N DO 00059000120429PK + PK[I] ~ X[K,I] | W[I]; GO TO BOX7; 00060000120429PK +BOX7: GO TO OM[OMI]; 00061000 + OM1: FOR I ~ 1 STEP 1 UNTIL K DO BEGIN SUM ~ 0.0; 00062000120429PK + FOR J ~ 1 STEP 1 UNTIL NPP DO 00063000120429PK + SUM ~ SUM + PK[J] | X[I,J]; QK[I] ~ SUM END; 00064000120429PK + GO TO BOX8; 00065000 + OM2: DK2 ~ 0.0; FOR I ~ 1 STEP 1 UNTIL NPP DO 00066000120429PK + DK2 ~ DK2 + PK[I] | X[K,I]; 00067000120429PK + DK ~ SQRT(DK2); 00068000120429PK + GF[I18] ~ DK; I18 ~ I18 + 1; 00069000120429PK + FOR I ~ 1 STEP 1 UNTIL NPP DO 00070000120429PK + X[K,I] ~ X[K,I]/DK;; 00071000120429PK + OMI ~ 1; GO TO BOX6; 00072000120429PK +BOX8: GO TO DE[DEI]; 00073000 + DE1: E1Z1 ~ -E1Z1; IF E1Z1 < 0 THEN GO TO BOX8B ELSE 00074000120429PK + GO TO BOX8A; 00075000 +BOX8A: FOR I ~ 1 STEP 1 UNTIL K-1 DO 00076000120429PK + QK[I] ~ -QK[I]; QK[K] ~ 1.0; 00077000120429PK + FOR I ~ 1 STEP 1 UNTIL NPP DO BEGIN 00078000120429PK + SUM ~ 0.0; FOR J ~ 1 STEP 1 UNTIL K DO 00079000120429PK + SUM ~ SUM + X[J,I] | QK[J]; 00080000120429PK + XP[I] ~ SUM END; GO TO BOX9; 00081000120429PK +BOX8B: ENF[I18] ~ SQRT(QK[K]); GO TO BOX8A; 00082000120429PK + DE2: E1Z2 ~ -E1Z2; IF E1Z2 < 0 THEN GO TO BOX8C ELSE 00083000120429PK + GO TO BOX8A; 00084000 +BOX8C: FOR I ~ 1 STEP 1 UNTIL M DO BEGIN 00085000120429PK + Q[R1,I] ~ QK[I]; Q2[R1,I] ~ QK[I] | QK[I] END; 00086000120429PK + Q[R1,M2] ~ QK[M2]; E[R1,1] ~ Q[R1,M2] - Q2[R1,1]; 00087000120429PK + FOR J ~ 2 STEP 1 UNTIL M DO 00088000120429PK + E[R1,J] ~ E[R1,J-1] - Q2[R1,J]; 00089000120429PK + FI ~ 1.0; 00090000120429PK + FOR I ~ 1 STEP 1 UNTIL M DO BEGIN 00091000120429PK + IF (FN - FI) > 0.0 THEN BEGIN IF E[R1,I] < 0.0 THEN 00093000 + BEGIN EP[R1,I] ~ -SQRT(ABS(E[R1,I])/(FN - FI)); 00094000120429PK + GO TO BOX8D; END 00095000 + ELSE EP[R1,I] ~ SQRT(E[R1,I]/(FN - FI)); 00096000120429PK + GO TO BOX8D; END ELSE E[R1,I] ~ -1.0; 00097000120429PK +BOX8D: FI ~ FI + 1.0; END; GO TO BOX8A; 00098000120429PK +BOX9: GO TO TH[THI]; 00099000 + TH1: FOR I ~ 1 STEP 1 UNTIL NPP DO 00100000120429PK + X[K,I] ~ XP[I]; GO TO BOX10; 00101000120429PK + TH2: FOR I ~ 1 STEP 1 UNTIL N DO 00102000120429PK + DEV[R1,I] ~ XP[I]; 00103000120429PK + FOR I ~ 1 STEP 1 UNTIL P DO 00104000120429PK + COF[R1,I] ~ -XP[N+I]; THI ~ 3; GO TO TH1; 00105000120429PK + TH3: GO TO BOX11; 00106000 +BOX10: GO TO AL[ALI]; 00107000 + AL1: OMI ~ ALI ~ 2; GO TO BOX6; 00108000120429PK + AL2: IF K < M THEN BEGIN K ~ K + 1; GO TO BOX4; END 00109000120429PK + ELSE GO TO BOX12; 00110000 +BOX11: GO TO NU[NUI]; 00111000 + NU1: NUI ~ 2; GO TO BOX14; 00112000120429PK + NU2: SS ~ DK/DENOM; SSQ ~ SS | SS; 00113000120429PK + STD[R1] ~ SS; GO TO BOX14; 00114000120429PK +BOX12: GO TO BE[BEI]; 00115000 + BE1: FOR I ~ 1 STEP 1 UNTIL M DO BEGIN 00116000120429PK + FOR J ~ 1 STEP 1 UNTIL P DO 00117000120429PK + A[I,J] ~ X[I,N+J] END; 00118000120429PK + GMDT ~ 1.0; FOR I ~ 1 STEP 1 UNTIL M DO 00119000120429PK + GMDT ~ GMDT | (GF[I]/ENF[I]); 00120000120429PK + GMDT ~ GMDT | GMDT; DEI ~ BEI ~ THI ~ 2; 00121000120429PK + K ~ K + 1; GO TO BOX13; 00122000120429PK + BE2: GO TO BOX11; 00123000 +BOX13: GO TO GA[GAI]; 00124000 + GA1: GO TO BOX11; 00125000 + GA2: FOR I ~ 1 STEP 1 UNTIL P DO BEGIN 00126000120429PK + FOR J ~ I STEP 1 UNTIL P DO BEGIN 00127000120429PK + SUM ~ 0.0; 00128000120429PK + FOR NII ~ 1 STEP 1 UNTIL M DO 00129000120429PK + SUM ~ SUM + A[NII,I] | A[NII,J]; 00130000120429PK + CV[I,J] ~ SUM END END; 00131000120429PK + FOR I ~ 1 STEP 1 UNTIL P DO 00132000120429PK + CV[P2,I] ~ SQRT(CV[I,I]); GAI ~ 1; GO TO BOX11; 00133000120429PK +BOX14: GO TO RH[RHI]; 00134000 + RH1: IF RBAR = 0 THEN GO TO FINAL ELSE RBAR ~ RBAR - 1; 00135000120429PK + R1 ~ R1 + 1; THI ~ RHI ~ 2; GO TO ZE[ZEI]; 00136000120429PK + ZE1: FOR I ~ 1 STEP 1 UNTIL N DO 00137000120429PK + X[M2,I] ~ Y[R1,I]; 00138000120429PK + FOR I ~ 1 STEP 1 UNTIL P DO 00139000120429PK + X[M2,N+I] ~ 0.0; GO TO BOX5; 00140000120429PK + ZE2: FOR I ~ 1 STEP 1 UNTIL NPP DO 00141000120429PK + X[M2,I] ~ Y[R1,I]; GO TO BOX5; 00142000120429PK + RH2: GO TO SI[SII]; 00143000 + SI1: GO TO RH1; 00144000 + SI2: FOR I ~ 1 STEP 1 UNTIL P DO BEGIN 00145000120429PK + FOR J ~ I STEP 1 UNTIL P DO 00146000120429PK + VCV[R1,I,J] ~ SSQ | CV[I,J] END; 00147000120429PK + FOR I ~ 1 STEP 1 UNTIL P DO 00148000120429PK + VCV[R1, P2, I] ~ SS | CV[P2,I]; GO TO RH1; 00149000120429PK +FINAL: END ORTHO ; 00150000 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00151000120429PK + 00152000120429PK +STARTT ~ TIME(1); 00901000120429PK + READ (PARAMS, /, N, M, P); 00902000120429PK + CLOSE(PARAMS); 00903000120429PK + R ~ 1; AI ~ 2; AUI ~ 1; 00904000120429PK + ZEI ~ 1; MUI ~ 2; FN ~ N; 00905000120430PK + 00906000120429PK +BEGIN %INNER BLOCK 00907000120429PK +LABEL DUMPIT; 00908000120429PK +REAL ARRAY W[1:N], Y[1:R, 1:N+P], Z[1:M, 1:N+P], 00909000120429PK + X[1:M+1, 1:N+P], DEV[1:R, 1:N], COF[1:R, 1:P], STD[1:R], 00910000120429PK + CV[1:P+1, 1:P], VCV[1:R, 1:P+1, 1:P], Q[1:R, 1:M+1], 00911000120429PK + Q2, E, EP [1:R, 1:M], A[1:M, 1:P], GF[1:M+R], ENF[1:M]; 00912000120429PK +DUMP FLUSH (N, M, P, R, AI, AUI, ZEI, MUI, 00913000120429PK + GMDT, FN, 00914000120429PK + W, Y, Z, X, DEV, COF, STD, CV, VCV, Q, Q2, A, GF, ENF, E, 00915000120429PK + EP) DUMPIT:1; 00916000120429PK + FOR I ~ 1 STEP 1 UNTIL N DO 00917000120429PK + BEGIN 00918000120429PK + W[I] ~ 1.0; SUM ~ 0.0; 00919000120429PK + FOR J ~ 1 STEP 1 UNTIL M DO 00920000120429PK + SUM ~ SUM + J|(Z[J,I] ~ I*J); 00921000120429PK + Y[1,I] ~ SUM; 00922000120429PK + END; 00922500120430PK + ORTHO (W, Y, Z, N, FN, M, P, R, AI, AUI, MUI, ZEI, X, DEV, 00923000120429PK + COF, STD, CV, VCV, GMDT, Q, Q2, E, EP, A, GF, ENF); 00924000120429PK + 00924500120430PK +DUMPIT: END INNER BLOCK; 00925000120429PK +WRITE(FLUSH, FT, TIME(0), TIME(2)/60, TIME(3)/60, (TIME(1)-STARTT)/60); 00926000120429PK +END. 00999000 diff --git a/tools/UTIL.NEATUP.alg_m b/tools/NEATUP.alg_m similarity index 100% rename from tools/UTIL.NEATUP.alg_m rename to tools/NEATUP.alg_m diff --git a/tools/NEATUPINFO.alg_m b/tools/NEATUPINFO.alg_m new file mode 100644 index 0000000..1baa043 --- /dev/null +++ b/tools/NEATUPINFO.alg_m @@ -0,0 +1,198 @@ +BEGIN 00000100120323PK +INTEGER 00000200120323PK + W, 00000300120323PK + X; 00000400120323PK +FILE 00000500120323PK + DISK(KIND=DISK, MAXRECSIZE=90, BLOCKSIZE=1800, FRAMESIZE=8, 00000600120323PK + AREAS=1, AREASIZE=1000, FLEXIBLE, 00000700120323PK + TITLE="DATA/MISC/B5500/NEATUPINFO."); 00000750120323PK + 00000800120323PK +EBCDIC VALUE ARRAY LEXICONTEXT 0000090081/10/14.1 + ("TRANSLATETABLELOCKCOMMENTSLEFTCOMMENTSINDENTTHENIFINDE", 0000100081/10/14.1 + "NTELSEIFDEFINEINDENTBEGINOFFSETELSEOFFSETLINELENGTHONE", 0000110081/10/14.1 + "PERLINEATUPLISTPROCINDENTNEATUPSEQDECINDENTREFERENCEPR", 0000120081/10/14.1 + "OCEDUREINTERRUPTINTERLOCKTRUTHSETDATABASECOMPLEXBOOLEA", 0000130081/10/14.1 + "NPOINTERPICTUREINTEGERMONITORMESSAGELIBRARYLAYOUTFORMA", 0000140081/10/14.1 + "TEXPORTNUMBERSTRINGSWITCHEBCDICDOUBLEDIRECTMARGINEVENT", 0000150081/10/14.1 + "ASCIIARRAYRESETALPHAVALUEQUEUEFIELDLABELWHILEUNTILCASE", 0000160081/10/14.1 + "THRUSTEPLONGFILEREALWORDOMITPAGEPOPBCLANDOWNHEXNOTNEQM", 0000170081/10/14.1 + "ODLSSEQLENDIVLEQIMPGTRGEQVBY"); 0000180081/10/14.1 +VALUE ARRAY COARSEINDEX( 0000190081/10/14.1 + 4"000000000003",4"000004000008",4"00000900000B",4"00000C000013", 0000200081/10/14.1 + 4"00001400001B",4"00001C00001F",4"000020000021",4"000022000022", 0000210081/10/14.1 + 4"00002300002B",4"000001000000",4"000001000000",4"00002C000036", 0000220081/10/14.1 + 4"00003700003A",4"00003B000040",4"000041000046",4"00004700004C", 0000230081/10/14.1 + 4"00004D00004D",4"00004E000050",4"000051000054",4"000055000058", 0000240081/10/14.1 + 4"000059000059",4"00005A00005A",4"00005B00005C",4"000001000000", 0000250081/10/14.1 + 4"000001000000",4"000001000000",4"000001000000",4"000001000000", 0000260081/10/14.1 + 4"000001000000",4"000001000000",4"000001000000",4"000001000000", 0000270081/10/14.1 + 4"000001000000",4"000001000000",4"000001000000"); 0000280081/10/14.1 +VALUE ARRAY INFOARRAY( 0000290081/10/14.1 + 4"0C30841A0012",4"145030144000",4"14502E149000",4"14502C153000", 0000300081/10/14.1 + 4"0820881CA002",4"0C303219D000",4"14508604A002",4"1C70340D2000", 0000310081/10/14.1 + 4"2CB00204A001",4"10408A176002",4"1C70380CB000",4"1C7036012000", 0000320081/10/14.1 + 4"08208E12D002",4"0C308C1BA002",4"18603C03E000",4"18604012D000", 0000330081/10/14.1 + 4"18603E133000",4"20803A0C3000",4"24900408E001",4"30C00603E001", 0000340081/10/14.1 + 4"0C30941B5022",4"0C30921B8182",4"0C30961C7012",4"104090038182", 0000350081/10/14.1 + 4"14504413F000",4"186042127000",4"18604610F000",4"28A008055001", 0000360081/10/14.1 + 4"0C3098109042",4"10404A186000",4"145048162008",4"18604C109000", 0000370081/10/14.1 + 4"0C309C1C3022",4"0C309A1C6022",4"0C304E1A6000",4"0820A0026022", 0000380081/10/14.1 + 4"08209E030002",4"0C30A21C0012",4"18600A026001",4"1C70500E7000", 0000390081/10/14.1 + 4"2490540A9000",4"2490520B2008",4"30C00C032001",4"30C00E026001", 0000400081/10/14.1 + 4"0C30A41BD022",4"0C30A61B2022",4"104060182000",4"10405E00E008", 0000410081/10/14.1 + 4"10405C077000",4"145056167000",4"186058103008",4"1C705A0FC000", 0000420081/10/14.1 + 4"28A01405F001",4"30C01200E001",4"30C01001A001",4"0C30A81AF002", 0000430081/10/14.1 + 4"186016139001",4"1C70640EE000",4"1C70620F5004",4"0C30AC1A9012", 0000440081/10/14.1 + 4"0C30AA1AC022",4"186066115000",4"186018071001",4"24901C085001", 0000450081/10/14.1 + 4"28A01A071001",4"082068069000",4"0820B00F3012",4"0820AE04F002", 0000460081/10/14.1 + 4"0C306A1A3000",4"10401E192001",4"28A020069001",4"0C302419A001", 0000470081/10/14.1 + 4"104022196001",4"1C706C0E0000",4"1C706E0D9000",4"2490700A0000", 0000480081/10/14.1 + 4"28A02607B001",4"14507215D00C",4"10407418A000",4"14502814E001", 0000490081/10/14.1 + 4"249076097000",4"0C302A052001",4"1040B417E002",4"18607811B000", 0000500081/10/14.1 + 4"18607A121000",4"1040B202C102",4"1040B617A042",4"20807E0BB000", 0000510081/10/14.1 + 4"38E07C000000",4"1450B8171082",4"145080158000",4"10408218E008", 0000520081/10/14.1 + 4"1450BA16C042"); 0000530081/10/14.1 +DEFINE 0000540081/10/14.1 + ALPHAC = 22 #, 0000550081/10/14.1 + ANDC = 66 #, 0000560081/10/14.1 + ARRAYC = 23 #, 0000570081/10/14.1 + ASCIIC = 24 #, 0000580081/10/14.1 + BCLC = 25 #, 0000590081/10/14.1 + BEGINC = 67 #, 0000600081/10/14.1 + BEGINOFFSETC = 1 #, 0000610081/10/14.1 + BOOLEANC = 26 #, 0000620081/10/14.1 + BYC = 68 #, 0000630081/10/14.1 + CASEC = 69 #, 0000640081/10/14.1 + COMMENTC = 27 #, 0000650081/10/14.1 + COMPLEXC = 28 #, 0000660081/10/14.1 + DATABASEC = 29 #, 0000670081/10/14.1 + DECINDENTC = 2 #, 0000680081/10/14.1 + DEFINEC = 30 #, 0000690081/10/14.1 + DEFINEINDENTC = 3 #, 0000700081/10/14.1 + DIRECTC = 31 #, 0000710081/10/14.1 + DIVC = 70 #, 0000720081/10/14.1 + DOC = 71 #, 0000730081/10/14.1 + DOUBLEC = 32 #, 0000740081/10/14.1 + EBCDICC = 33 #, 0000750081/10/14.1 + ELSEC = 72 #, 0000760081/10/14.1 + ELSEOFFSETC = 4 #, 0000770081/10/14.1 + ENDC = 73 #, 0000780081/10/14.1 + EQLC = 74 #, 0000790081/10/14.1 + EQVC = 75 #, 0000800081/10/14.1 + EVENTC = 34 #, 0000810081/10/14.1 + EXPORTC = 35 #, 0000820081/10/14.1 + FIELDC = 36 #, 0000830081/10/14.1 + FILEC = 37 #, 0000840081/10/14.1 + FORC = 76 #, 0000850081/10/14.1 + FORMATC = 38 #, 0000860081/10/14.1 + GEQC = 77 #, 0000870081/10/14.1 + GTRC = 78 #, 0000880081/10/14.1 + HEXC = 39 #, 0000890081/10/14.1 + IFC = 79 #, 0000900081/10/14.1 + IMPC = 81 #, 0000910081/10/14.1 + INC = 80 #, 0000920081/10/14.1 + INDENTC = 5 #, 0000930081/10/14.1 + INDENTELSEIFC = 6 #, 0000940081/10/14.1 + INDENTTHENIFC = 7 #, 0000950081/10/14.1 + INTEGERC = 40 #, 0000960081/10/14.1 + INTERLOCKC = 41 #, 0000970081/10/14.1 + INTERRUPTC = 42 #, 0000980081/10/14.1 + LABELC = 43 #, 0000990081/10/14.1 + LAYOUTC = 44 #, 0001000081/10/14.1 + LEFTCOMMENTSC = 8 #, 0001010081/10/14.1 + LEQC = 82 #, 0001020081/10/14.1 + LIBRARYC = 45 #, 0001030081/10/14.1 + LINELENGTHC = 10 #, 0001040081/10/14.1 + LISTC = 46 #, 0001050081/10/14.1 + LOCKC = 47 #, 0001060081/10/14.1 + LOCKCOMMENTSC = 9 #, 0001070081/10/14.1 + LONGC = 48 #, 0001080081/10/14.1 + LSSC = 83 #, 0001090081/10/14.1 + MARGINC = 11 #, 0001100081/10/14.1 + MESSAGEC = 49 #, 0001110081/10/14.1 + MODC = 84 #, 0001120081/10/14.1 + MONITORC = 50 #, 0001130081/10/14.1 + NEATUPC = 12 #, 0001140081/10/14.1 + NEATUPLISTC = 13 #, 0001150081/10/14.1 + NEATUPSEQC = 14 #, 0001160081/10/14.1 + NEQC = 85 #, 0001170081/10/14.1 + NOTC = 86 #, 0001180081/10/14.1 + NUMBERC = 51 #, 0001190081/10/14.1 + OFC = 87 #, 0001200081/10/14.1 + OMITC = 15 #, 0001210081/10/14.1 + ONC = 52 #, 0001220081/10/14.1 + ONEPERLINEC = 16 #, 0001230081/10/14.1 + ORC = 88 #, 0001240081/10/14.1 + OWNC = 53 #, 0001250081/10/14.1 + PAGEC = 17 #, 0001260081/10/14.1 + PICTUREC = 54 #, 0001270081/10/14.1 + POINTERC = 55 #, 0001280081/10/14.1 + POPC = 18 #, 0001290081/10/14.1 + PROCEDUREC = 56 #, 0001300081/10/14.1 + PROCINDENTC = 19 #, 0001310081/10/14.1 + QUEUEC = 57 #, 0001320081/10/14.1 + REALC = 58 #, 0001330081/10/14.1 + REFERENCEC = 59 #, 0001340081/10/14.1 + RESETC = 20 #, 0001350081/10/14.1 + SETC = 21 #, 0001360081/10/14.1 + STEPC = 90 #, 0001370081/10/14.1 + STRINGC = 60 #, 0001380081/10/14.1 + SWITCHC = 61 #, 0001390081/10/14.1 + THENC = 89 #, 0001400081/10/14.1 + THRUC = 91 #, 0001410081/10/14.1 + TRANSLATETABLEC = 62 #, 0001420081/10/14.1 + TRUTHSETC = 63 #, 0001430081/10/14.1 + UNTILC = 92 #, 0001440081/10/14.1 + VALUEC = 64 #, 0001450081/10/14.1 + WHILEC = 93 #, 0001460081/10/14.1 + WORDC = 65 #; 0001470081/10/14.1 +DEFINE 0001480081/10/14.1 + ALGOL = 0 #, 0001490081/10/14.1 + BOOLEANOP = 0 #, 0001500081/10/14.1 + DCALGOL = 1 #, 0001510081/10/14.1 + DECLARATOR = 0 #, 0001520081/10/14.1 + ESPOL = 2 #, 0001530081/10/14.1 + ESPOLORDCALGOL = 3 #, 0001540081/10/14.1 + ITERATIONOP = 2 #, 0001550081/10/14.1 + LINEENDER = 4 #, 0001560081/10/14.1 + MYOPTION = 1 #, 0001570081/10/14.1 + RELATIONOP = 1 #, 0001580081/10/14.1 + RESWORD = 2 #, 0001590081/10/14.1 + TERMINATOR = 3 #; 0001600081/10/14.1 +DEFINE 0001610081/10/14.1 + COARSEFINISHF = [23:24] # 0001620081/10/14.1 + ,COARSESTARTF = [47:24] # 0001630081/10/14.1 + ,INFODEFINEVALUE(INX) = INFOARRAY[INX].[35:11] # 0001640081/10/14.1 + ,DEFINEVALUE(INX) = INFOARRAY[INX].[35:11] # 0001650081/10/14.1 + ,INFOMINSIZE(INX) = INFOARRAY[INX].[47:6] # 0001660081/10/14.1 + ,MINSIZE(INX) = INFOARRAY[INX].[47:6] # 0001670081/10/14.1 + ,INFOLEXPTR(INX) = INFOARRAY[INX].[24:13] # 0001680081/10/14.1 + ,INFOTEXTSIZE(INX) = INFOARRAY[INX].[41:6] # 0001690081/10/14.1 + ,ITEMTYPE(INX) = INFOARRAY[INX].[1:2] # 0001700081/10/14.1 + ,DECLANGUAGE(INX) = INFOARRAY[INX].[3:2] # 0001710081/10/14.1 + ,RESWORDTYPE(INX,BIT) = BOOLEAN(INFOARRAY[INX].[4+BIT:1]) # 0001720081/10/14.1 + ,ITEMKEY(INX) = INFOARRAY[INX].[35:11] # 0001730081/10/14.1 + ,INFOENTRYSIZE = 1 #; 0001740081/10/14.1 +DEFINE HASH(R,PTR) = 0001750081/10/14.1 + (R:=(R:=REAL(PTR,1)).[3:4]-1-R.[5:1]+9*R.[5:2])#; 0001760081/10/14.1 + 0001770081/10/14.1 +WRITE(DISK, <"COARSE INDEX:">); 00017800120323PK +FOR X:= 0 STEP 1 WHILE X < SIZE(COARSEINDEX) DO 00017900120323PK + BEGIN 00018000120323PK + W:= COARSEINDEX[X]; 00018100120323PK + WRITE(DISK, , X, W.COARSESTARTF, W.COARSEFINISHF); 00018200120323PK + END; 00018300120323PK + 00018400120323PK +WRITE(DISK, ); 00018450120323PK +FOR X:= 0 STEP 1 WHILE X < SIZE(INFOARRAY) DO 00018500120323PK + BEGIN 00018600120323PK + WRITE(DISK, , 00018700120323PK + X, HASH(W, LEXICONTEXT[INFOLEXPTR(X)]), 00018800120323PK + ITEMTYPE(X), DECLANGUAGE(X), INFOARRAY[X].[11:8], 00018900120323PK + DEFINEVALUE(X), INFOLEXPTR(X), 00019000120323PK + INFOMINSIZE(X), INFOTEXTSIZE(X), INFOTEXTSIZE(X), 00019100120323PK + LEXICONTEXT[INFOLEXPTR(X)]); 00019200120323PK + END; 00019300120323PK + 00019320120323PK +CLOSE(DISK, CRUNCH); 00019340120323PK +END. 00019400120323PK diff --git a/tools/xem/ALGOLXEM.alg_m b/tools/xem/ALGOLXEM.alg_m index 17f6c74..f20d199 100644 --- a/tools/xem/ALGOLXEM.alg_m +++ b/tools/xem/ALGOLXEM.alg_m @@ -212,7 +212,7 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00025000 ELEMENT. 00211000=00157000= 157 LISTELEMENT: A ROW DESIGNATOR MAY NOT BE A LISTELEMENT 00212000=00158000= 158 LISTELEMENT: MISSING RIGHT BRAKET IN GROUP OF ELEMENTS 00213000=00159000= - 159 PROCSTMT: ILLEGAL USE OF PROCEDURE OF FUNCTION IDENTIFIER00214000=00160000= + 159 PROCSTMT: ILLEGAL USE OF PROCEDURE OR FUNCTION IDENTIFIER00214000 160 PURGE: DECLARED LABEL DOES NOT OCCUR. 00215000=00161000= 161 PURGE: DECLARED FORWARD PROCEDURE DOES NOT OCCUR. 00216000=00162000= 162 PURGE: DECLARED SWITCH FORWARD DOES NOT OCCUR. 00217000=00162500= @@ -450,12 +450,10 @@ ERROR NUMBER ROUTINE:ERROR MESSAGE 00025000 BEGIN 00449000=00500000= COMMENT OUTERMOST BLOCK; 00450000=00500000= INTEGER 00505000=00501000= - ERRORCOUNT; 00510000=00501000= - COMMENT NUMBER OF ERROR MSGS. MCP WILL TYPE 00515000=00501000= + ERRORCOUNT; COMMENT NUMBER OF ERROR MSGS. MCP WILL TYPE 00510000 SYNTX ERR AT EOJ IF THIS IS NON-ZERO. MUST BE @R+25; 00520000=00502000= INTEGER 00525000=00503000= - SAVETIME; 00530000=00503000= - COMMENT SAVE-FACTOR FOR CODE FILE, GIVEN BY MCP. 00535000=00503000= + SAVETIME; COMMENT SAVE-FACTOR FOR CODE FILE, GIVEN BY MCP. 00530000 IF COMPILER & GO =0.FOR SYNTAX, =-1. MUST BE AT R+26;00540000=00504000= INTEGER 00545000=00504100= CARDNUMBER; % SEQ # OF CARD BEING PROCESSED. 00550000=00504100= @@ -511,7 +509,7 @@ REAL 00715100 SREG, % STREAM DEST WORD INDEX 00716000 KREG, % STREAM DEST CHAR INDEX 00716100 VREG, % STREAM DEST BIT INDEX 00716200 - TALLY; 00716300 + TALLY; % STREAM TALLY REGISTER 00716300 00717000 BOOLEAN 00717100 TFFF; % TRUE/FALSE FLIP-FLOP 00717200 @@ -2440,16 +2438,13 @@ COMMENT INFO FORMAT 02675000 ARRAY 04595000=01340000= TEN[0:69]; 04600000=01340000= INTEGER 04605000=01340050= - NOOFARRAYS; 04610000=01340050= - COMMENT NOOFARRAYS IS THE SUM OF ARRAYS 04615000=01340050= + NOOFARRAYS; COMMENT NOOFARRAYS IS THE SUM OF ARRAYS 04610000 DECLARED IN THE OBJECT PROGRAM; 04620000=01340060= INTEGER 04625000=01340070= - IOBUFFSIZE; 04630000=01340070= - COMMENT IOBUFFSIZE IS FILE SPACE NEEDED. 04635000=01340070= + IOBUFFSIZE; COMMENT IOBUFFSIZE IS FILE SPACE NEEDED. 04630000 GTI1 EQUALS TOTAL CORE STORAGE REQD; 04640000=01340080= REAL 04645000=01340500= - FSAVE; 04650000=01340500= - COMMENT SAVES FRACTIONAL PART EXPONENT WHEN CONV NUM; 04655000=01340500= + FSAVE; COMMENT SAVES FRACTIONAL PART EXPONENT WHEN CONV NUM; 04650000 INTEGER 04660000=01341000= IDLOC, 04665000=01341000= IDLOCTEMP; 04670000=01341000= @@ -4547,7 +4542,7 @@ LENGTH6: 19235000 IF WOP[0] = 0 THEN 19405000=02534000= BEGIN 19410000=02535000= FILL WOP[*] WITH 6"LITC", 6" ", 6"OPDC", 6"DESC", 19415000=02539000= - 10,6"DFL ", 11,6"NOP ", 12,6"XRT ", 16,6"ADD ", 17,6"AD2 ", 19420000=02539000= + 10,6"DEL ", 11,6"NOP ", 12,6"XRT ", 16,6"ADD ", 17,6"AD2 ", 19420000 18,6"PRL ", 19,6"LNG ", 21,6"GEQ ", 22,6"BBC ", 24,6"INX ", 19425000=02540000= 35,6"LOR ", 37,6"GTR ", 38,6"BFC ", 39,6"RTN ", 40,6"COC ", 19430000=02541000= 48,6"SUB ", 49,6"SB2 ", 64,6"MUL ", 65,6"ML2 ", 67,6"LND ", 19435000=02542000= @@ -7533,9 +7528,10 @@ EXIT: 32735000 PROCEDURE IMPFUN; 33700000=06057000= BEGIN 33705000=06058000= REAL 33710000=06059000= + TVAR, % FOR VARIABLE() NAME PARAM 33711000 T1, 33715000=06059000= - T2, 33720000=06059000= - T3; 33725000=06059000= + T2, 33720000 + T3; 33725000 BOOLEAN 33730000=06059050= B; 33735000=06059050= DEFINE 33740000=06059100= @@ -7642,7 +7638,10 @@ L1: IF T2 < 23 THEN 34110000 END 34245000=06062390= ELSE 34250000=06062390= IF ELCLASS < LABELID AND ELCLASS > BOOARRAYID THEN 34255000=06062400= - VARIABLE(FL) 34260000=06062420= + BEGIN 34256000 + TVAR:= FL; 34257000 + VARIABLE(TVAR); 34260000 + END 34261000 ELSE 34265000=06062420= ERRX(185); 34270000=06062420= IF ELCLASS ^= RTPAREN THEN 34275000=06062430= @@ -7836,64 +7835,66 @@ EXIT: 35180000 CASES; 35215000=06078000= PROCEDURE PRIMARY; 35220000=06079000= BEGIN 35225000=06080000= + REAL 35226000 + TVAR; % FOR VARIABLE() NAME PARAM 35227000 LABEL 35230000=06082000= L11, 35235000=06082000= - L12, 35240000=06082000= - L13, 35245000=06082000= - L14, 35250000=06082000= - L15, 35255000=06082000= - L16, 35260000=06082000= - L17, 35265000=06082000= - L18, 35270000=06082000= - L19, 35275000=06083000= - L20, 35280000=06083000= - L21, 35285000=06083000= - L22, 35290000=06083000= - L23, 35295000=06083000= - L24, 35300000=06083000= - L25, 35305000=06083000= - L26, 35310000=06083000= - L27, 35315000=06083000= - L28, 35320000=06083000= - L29, 35325000=06084000= - L30, 35330000=06084000= - L31, 35335000=06084000= - L32, 35340000=06084000= - L33, 35345000=06084000= - L34, 35350000=06084000= - L35; 35355000=06084000= + L12, 35240000 + L13, 35245000 + L14, 35250000 + L15, 35255000 + L16, 35260000 + L17, 35265000 + L18, 35270000 + L19, 35275000 + L20, 35280000 + L21, 35285000 + L22, 35290000 + L23, 35295000 + L24, 35300000 + L25, 35305000 + L26, 35310000 + L27, 35315000 + L28, 35320000 + L29, 35325000 + L30, 35330000 + L31, 35335000 + L32, 35340000 + L33, 35345000 + L34, 35350000 + L35; 35355000 SWITCH 35360000=06085000= S:= L11, 35365000=06086000= - L12, 35370000=06086000= - L13, 35375000=06086000= - L14, 35380000=06086000= - L15, 35385000=06086000= - L16, 35390000=06086000= - L17, 35395000=06086000= - L18, 35400000=06086000= - L19, 35405000=06087000= - L20, 35410000=06087000= - L21, 35415000=06087000= - L22, 35420000=06087000= - L23, 35425000=06087000= - L24, 35430000=06087000= - L25, 35435000=06087000= - L26, 35440000=06087000= - L27, 35445000=06087000= - L28, 35450000=06087000= - L29, 35455000=06088000= - L30, 35460000=06088000= - L31, 35465000=06088000= - L32, 35470000=06088000= - L33, 35475000=06088000= - L34, 35480000=06088000= - L35; 35485000=06088000= + L12, 35370000 + L13, 35375000 + L14, 35380000 + L15, 35385000 + L16, 35390000 + L17, 35395000 + L18, 35400000 + L19, 35405000 + L20, 35410000 + L21, 35415000 + L22, 35420000 + L23, 35425000 + L24, 35430000 + L25, 35435000 + L26, 35440000 + L27, 35445000 + L28, 35450000 + L29, 35455000 + L30, 35460000 + L31, 35465000 + L32, 35470000 + L33, 35475000 + L34, 35480000 + L35; 35485000 COMMENT LN IS THE LABEL FOR THE CLASS N; 35490000=06089000= LABEL 35495000=06090000= EXIT, 35500000=06090000= - RP, 35505000=06090000= - LDOT, 35510000=06090000= - LAMPER; 35515000=06090000= + RP, 35505000 + LDOT, 35510000 + LAMPER; 35515000 GO TO S[ELCLASS-PROCID]; 35520000=06091000= COMMENT GO TO PROPER SYNTAXER; 35525000=06091000= IF ELCLASS = UNKNOWNID THEN 35530000=06092000= @@ -7951,7 +7952,8 @@ L28: 35780000 35790000=06106100= IF ARRAYFLAG THEN 35795000=06106100= CHECKBOUNDLVL; 35800000=06106100= - VARIABLE(FP); 35805000=06107000= + TVAR:= FP; 35801000 + VARIABLE(TVAR); 35805000 GO TO LAMPER; 35810000=06107000= L32: 35815000=06109000= COMMENT LITERALS - I.E. INTEGERS BETWEEN 0 AND 1023; 35820000=06109000= @@ -8148,69 +8150,71 @@ EXIT: 36740000 BEGIN 36775000=06214000= INTEGER 36780000=06214000= TYPE; 36785000=06214000= + REAL 36786000 + TVAR; % FOR VARIABLE() NAME PARAM 36787000 LABEL 36790000=06215000= L9, 36795000=06216000= - L10, 36800000=06216000= - L11, 36805000=06216000= - L12, 36810000=06216000= - L13, 36815000=06216000= - L14, 36820000=06216000= - L15, 36825000=06216000= - L16, 36830000=06216000= - L17, 36835000=06216000= - L18, 36840000=06216000= - L19, 36845000=06217000= - L20, 36850000=06217000= - L21, 36855000=06217000= - L22, 36860000=06217000= - L23, 36865000=06217000= - L24, 36870000=06217000= - L25, 36875000=06217000= - L26, 36880000=06217000= - L27, 36885000=06217000= - L28, 36890000=06217000= - L29, 36895000=06218000= - L30, 36900000=06218000= - L31, 36905000=06218000= - L32, 36910000=06218000= - L33, 36915000=06218000= - L34, 36920000=06218000= - L35; 36925000=06218000= + L10, 36800000 + L11, 36805000 + L12, 36810000 + L13, 36815000 + L14, 36820000 + L15, 36825000 + L16, 36830000 + L17, 36835000 + L18, 36840000 + L19, 36845000 + L20, 36850000 + L21, 36855000 + L22, 36860000 + L23, 36865000 + L24, 36870000 + L25, 36875000 + L26, 36880000 + L27, 36885000 + L28, 36890000 + L29, 36895000 + L30, 36900000 + L31, 36905000 + L32, 36910000 + L33, 36915000 + L34, 36920000 + L35; 36925000 SWITCH 36930000=06219000= S:= L9, 36935000=06220000= - L10, 36940000=06220000= - L11, 36945000=06220000= - L12, 36950000=06220000= - L13, 36955000=06220000= - L14, 36960000=06220000= - L15, 36965000=06220000= - L16, 36970000=06220000= - L17, 36975000=06220000= - L18, 36980000=06220000= - L19, 36985000=06221000= - L20, 36990000=06221000= - L21, 36995000=06221000= - L22, 37000000=06221000= - L23, 37005000=06221000= - L24, 37010000=06221000= - L25, 37015000=06221000= - L26, 37020000=06221000= - L27, 37025000=06221000= - L28, 37030000=06221000= - L29, 37035000=06222000= - L30, 37040000=06222000= - L31, 37045000=06222000= - L32, 37050000=06222000= - L33, 37055000=06222000= - L34, 37060000=06222000= - L35; 37065000=06222000= + L10, 36940000 + L11, 36945000 + L12, 36950000 + L13, 36955000 + L14, 36960000 + L15, 36965000 + L16, 36970000 + L17, 36975000 + L18, 36980000 + L19, 36985000 + L20, 36990000 + L21, 36995000 + L22, 37000000 + L23, 37005000 + L24, 37010000 + L25, 37015000 + L26, 37020000 + L27, 37025000 + L28, 37030000 + L29, 37035000 + L30, 37040000 + L31, 37045000 + L32, 37050000 + L33, 37055000 + L34, 37060000 + L35; 37065000 COMMENT LN IS THE LABEL FOR THE CLASS N; 37070000=06223000= LABEL 37075000=06224000= EXIT, 37080000=06224000= - LE, 37085000=06224000= - D, 37090000=06224000= - TD, 37095000=06224000= - T; 37100000=06224000= + LE, 37085000 + D, 37090000 + TD, 37095000 + T; 37100000 LABEL 37105000=06224500= FAH; 37110000=06224500= GO TO S[ELCLASS-SUPERFILEID]; 37115000=06225000= @@ -8289,7 +8293,8 @@ L25: 37470000 37480000=06249100= IF ARRAYFLAG THEN 37485000=06249100= CHECKBOUNDLVL; 37490000=06249100= - VARIABLE(FP); 37495000=06250000= + TVAR:= FP; 37491000 + VARIABLE(TVAR); 37495000 GO TO T; 37500000=06250000= L9: 37505000=06251000= L29: 37510000=06252000= @@ -8932,6 +8937,7 @@ ANOTHER: 40310000 TO ALLOW INTEGER, REAL, AND ALPHA TO HAVE 40690000=07057000= SIMILAR MEANINGS; 40695000=07058000= REAL 40700000=07059000= + TVAR, % FOR VARIABLE() NAME PARAM 40701000 WHOLE; COMMENT WHOLE CONTAINS THE ELBAT WORD OF THE ACTUAL 40705000=07059000= PARAMETERS; 40715000=07061000= BOOLEAN 40720000=07062000= @@ -9206,7 +9212,8 @@ ANOTHER: 41195000 IF ACLASS ^= BOOARRAYID THEN 42075000=07155000= ACLASS:= REALARRAYID; 42080000=07155000= COMMENT NORMALISE ACLASS FOR LATER COMPARISON; 42085000=07156000= - VARIABLE(FA); 42090000=07157000= + TVAR:= FA; 42086000 + VARIABLE(TVAR); 42090000 IF TABLE(I-2) ^= FACTOP THEN 42095000=07158000= BEGIN 42100000=07158000= ERR(123); 42105000=07158000= @@ -9254,7 +9261,8 @@ ANOTHER: 41195000 COMMENT WE HAVE HERE A ONE DIMENSIONAL SUBCRIPTED VARIABLE WITH 42315000=07188000= CONSTANT LOWER BOUNDS. WE MAKE A SPECIAL CASE TO AVOID 42320000=07189000= ACCIDENTAL ENTRY AND ADDITIONAL PRT CELL; 42325000=07190000= - VARIABLE(FL); 42330000=07191000= + TVAR:= FL; 42326000 + VARIABLE(TVAR); 42330000 ACLASS:= 42335000=07192000= IF ACLASS = BOOARRAYID THEN 42340000=07192000= BOOID 42345000=07192000= @@ -9609,6 +9617,7 @@ EXIT: 44020000 FROM; 44090000=07391000= BEGIN 44095000=07392000= REAL 44100000=07393000= + TVAR, % FOR VARIABLE() NAME PARAM 44101000 HOLE, 44105000=07393000= ADDRESS; 44110000=07393000= LABEL 44115000=07394000= @@ -9621,7 +9630,8 @@ EXIT: 44020000 IF NOT FORMALF THEN 44150000=07400000= IF TABLE(I+1) = ASSIGNOP THEN 44155000=07401000= BEGIN 44160000=07402000= - VARIABLE(2-REAL(FROM)); 44165000=07402000= + TVAR:= 2-REAL(FROM); 44164000 + VARIABLE(TVAR); 44165000 GO TO EXIT 44170000=07402000= END; 44175000=07402000= COMMENT CALL VARIABLE TO HANDLE THIS ASSIGNMENT OPERATION; 44180000=07403000= @@ -10304,23 +10314,25 @@ COMMENT THE FOLLOWING PROCEDURE HANDLES THE FILL STATEMENT. 47480000 PARENCOUNTER = RR1 #, 47570000=07655500= T = RR2 #, 47575000=07656000= J = RR3 #; 47580000=07656000= + REAL 47581000 + TVAR; % FOR VARIABLE() NAME PARAM 47581100 ARRAY 47585000=07656500= TEDOC[0:7, 0:127], 47590000=07656500= - FILLTEMP[0:1022]; 47595000=07656500= + FILLTEMP[0:1022]; 47595000 BOOLEAN PROCEDURE FILLIT(A); 47600000=07657000= ARRAY 47605000=07657000= A[0]; 47610000=07657000= BEGIN 47615000=07657500= REAL 47620000=07658000= T1, 47625000=07658000= - T2, 47630000=07658000= - T3; 47635000=07658000= + T2, 47630000 + T3; 47635000 BOOLEAN 47640000=07658500= BOO; 47645000=07658500= LABEL 47650000=07659000= CHECK, 47655000=07659000= - GOOFUP, 47660000=07659000= - EXIT; 47665000=07659000= + GOOFUP, 47660000 + EXIT; 47665000 PARENCOUNTER:= PARENCOUNTER+1; 47670000=07659500= WHILE T < 1023 DO 47675000=07660000= BEGIN 47680000=07660500= @@ -10405,7 +10417,8 @@ COMMENT THE FOLLOWING PROCEDURE HANDLES THE FILL STATEMENT. 47480000 ERROR(300); % NO ARRAY ID. 48075000=07686000= GO EXIT; 48080000=07686500= END; 48085000=07687000= - VARIABLE(FL); 48090000=07687500= + TVAR:= FL; 48089000 + VARIABLE(TVAR); 48090000 IF TABLE(I-2) ^= FACTOP THEN 48095000=07687500= FLAG(304); % NOT ARR. ROW. 48100000=07687500= XMARK(ASSIGNREF); % FILL STATEMENT 48105000=07687600= @@ -10458,6 +10471,8 @@ EXIT: 48305000 AN IMPERFECT ANALYSIS OF BEGIN-END PAIRS; 48340000=07713000= PROCEDURE STMT; 48345000=07714000= BEGIN 48350000=07715000= + REAL 48351000 + TVAR; % FOR VARIABLE() NAME PARAM 48352000 LABEL 48355000=07716000= AGAIN, 48360000=07716000= LERR, 48365000=07716000= @@ -10588,7 +10603,8 @@ LSPROC: 48985000 STRMPROCSTMT; 48990000=07737000= GO TO EXIT; 48995000=07737000= LVAR: 49000000=07738000= - VARIABLE(FS); 49005000=07738000= + TVAR:= FS; 49001000 + VARIABLE(TVAR); 49005000 GO TO EXIT; 49010000=07738000= LAB: 49015000=07739000= LABELR; 49020000=07739000= @@ -10653,11 +10669,12 @@ EXIT: 49280000 BEGIN 49315000=07801000= LABEL 49320000=07801000= XXX, 49325000=07801000= - E; 49330000=07801000= + E; 49330000 REAL 49335000=07802000= + TVAR, % FOR VARIABLE() NAME PARAM 49336000 J, 49340000=07802000= - N, 49345000=07802000= - C; 49350000=07802000= + N, 49345000 + C; 49350000 IF Q = 6"5BREAK" THEN 49355000=07803000= BEGIN 49360000=07804000= EMIT(0); 49365000=07804000= @@ -10684,7 +10701,8 @@ EXIT: 49280000 GO E 49470000=07814500= ELSE 49475000=07814500= BEGIN 49480000=07814600= - VARIABLE(FL); 49485000=07815000= + TVAR:= FL; 49481000 + VARIABLE(TVAR); 49485000 IF TABLE(I-2) ^= FACTOP THEN 49490000=07816000= GO TO E; 49495000=07816000= END; 49500000=07816100= @@ -10749,7 +10767,8 @@ EXIT: 49280000 IF STEPI < BOOARRAYID OR ELCLASS > INTARRAYID THEN 49795000=07834000= GO TO E; 49800000=07835000= XMARK(ASSIGNREF); % SEARCH STATEMENT 49805000=07835500= - VARIABLE(FL); 49810000=07836000= + TVAR:= FL; 49806000 + VARIABLE(TVAR); 49810000 IF TABLE(I-2) ^= FACTOP THEN 49815000=07837000= GO TO E; 49820000=07837000= IF ELCLASS ^= RTPAREN THEN 49825000=07838000= @@ -10814,7 +10833,8 @@ EXIT: 49280000 GO TO XXX 50120000=07859030= END; 50125000=07859030= STEPIT; 50130000=07859040= - VARIABLE(FL); 50135000=07859040= + TVAR:= FL; 50131000 + VARIABLE(TVAR); 50135000 L:= L-1; 50140000=07859040= IF TABLE(I-2) ^= FACTOP THEN 50145000=07859050= FLAG(208); 50150000=07859050= @@ -10913,6 +10933,8 @@ XXX: 50385000 THOSE CASES WHICH DO NOT NEED TO GO THROUGH THE 50610000=07932000= FORMATTING INTRINSICS. A NEW MCP INTRINSIC IS 50615000=07933000= USED, TO FURTHER IMPROVE SPEED/DECREASE CORE USE; 50620000=07934000= + REAL 50621000 + TVAR; % FOR VARIABLE() NAME PARAM 50622000 LABEL 50625000=07935000= EXIT; 50630000=07935000= L:= ABS(T); 50635000=07936000= @@ -10927,7 +10949,8 @@ XXX: 50385000 ERR(429); 50680000=07940000= GO TO EXIT; 50685000=07940000= END; 50690000=07940000= - VARIABLE(FL); 50695000=07941000= + TVAR:= FL; 50694000 + VARIABLE(TVAR); 50695000 IF TABLE(I-2) ^= FACTOP THEN 50700000=07941000= BEGIN 50705000=07942000= ERR(427); 50710000=07942000= @@ -10974,6 +10997,8 @@ EXIT: 50860000 STEP ALSO BECOMES A SUBROUTINE IF IT IS NOT SIMPLE; 50915000=08007000= PROCEDURE FORSTMT; 50920000=08008000= BEGIN 50925000=08009000= + REAL 50926000 + TVAR; % FOR VARIABLE() NAME PARAM 50927000 OWN REAL 50930000=08010000= B, 50935000=08010000= STMTSTART, 50940000=08010000= @@ -11434,7 +11459,8 @@ EXIT: 50860000 V:= L; 53210000=08227000= SIMPLEV:= FALSE; 53215000=08227000= FORMALV:= TRUE; 53220000=08227000= - VARIABLE(FR); 53225000=08228000= + TVAR:= FR; 53224000 + VARIABLE(TVAR); 53225000 EMITO(XCH); 53230000=08228000= VRET:= L; 53235000=08228000= EMITO(BFW); 53240000=08228000= @@ -11625,6 +11651,8 @@ EXIT: 53560000 SECOND PARAMETER; 54165000=08385000= LABEL 54170000=08385100= READXFORM; 54175000=08385100= + REAL 54176000 + TVAR; % FOR VARIABLE() NAME PARAM 54177000 INTEGER 54180000=08385500= LISTADDRESS; 54185000=08385500= COMMENT TEMP TO HOLD LIST ADD DESC; 54190000=08385500= @@ -11661,7 +11689,8 @@ EXIT: 53560000 EMITO(MKS); 54345000=08400000= IF STEPI >= BOOARRAYID AND ELCLASS <= INTARRAYID THEN 54350000=08401000= BEGIN 54355000=08401020= - VARIABLE(FL); 54360000=08401020= + TVAR:= FL; 54356000 + VARIABLE(TVAR); 54360000 IF TABLE(I-2) ^= FACTOP THEN 54365000=08401030= BEGIN 54370000=08401040= ERR(422); 54375000=08401040= @@ -11903,26 +11932,23 @@ EXIT: 53560000 PARAMETER; 55555000=08455000= STEPIT; 55560000=08456000= IF RANGE(BOOARRAYID, INTARRAYID) THEN 55565000=08458000= - BEGIN 55570000=08458000= - COMMENT THIS IS THE ROW DESIGNATOR CASE; 55575000=08458000= - VARIABLE(FL); 55580000=08459000= + BEGIN COMMENT THIS IS THE ROW DESIGNATOR CASE; 55570000 + TVAR:= FL; 55571000 + VARIABLE(TVAR); 55580000 IF TABLE(I-2) ^= FACTOP THEN 55585000=08461000= - BEGIN 55590000=08461000= - COMMENT ERROR 427 MEANS IMPROPER 55595000=08461000= + BEGIN COMMENT ERROR 427 MEANS IMPROPER 55590000 ROW DESIGNATOR IN READ; 55600000=08462000= ERROR(427); 55605000=08463000= GO TO EXIT; 55610000=08463000= END; 55615000=08464000= IF CHECK(RTPAREN, 428) THEN 55620000=08466000= - GO TO EXIT; 55625000=08466000= - COMMENT ERROR 428 MEANS IMPROPER ROW DESIGNATOR55630000=08467000= + GO TO EXIT; COMMENT ERROR 428 MEANS IMPROPER ROW DESIGNATOR55625000 DELIMITER IN READ STATEMENT; 55635000=08468000= GOGOGO:= TRUE; % 55640000=08468100= GO CHKACTIONLABELS; 55645000=08469000= END 55650000=08471000= ELSE 55655000=08471000= - BEGIN 55660000=08471000= - COMMENT ERROR 429 MEANS MISSING ROW DESIGNATOR;55665000=08471000= + BEGIN COMMENT ERROR 429 MEANS MISSING ROW DESIGNATOR;55660000 ERROR(429); 55670000=08472000= GO TO EXIT; 55675000=08472000= END; 55680000=08473000= @@ -12239,6 +12265,8 @@ EXIT: 56945000 DEFINE 57255000=08580000= ACCUM1 = RR1 #; COMMENT ACCUM1 IS USED AS A 57260000=08580000= TEMPORARY CELL FOR ACCUM[1]; 57270000=08581000= + REAL 57271000 + TVAR; % FOR VARIABLE() NAME PARAM 57272000 %VOID 57275000=08582000= %VOID 57280000=08583000= %VOID 57285000=08584000= @@ -12271,7 +12299,8 @@ EXIT: 56945000 EMITO(MKS); 57435000=08597000= IF STEPI >= BOOARRAYID AND ELCLASS <= INTARRAYID THEN 57440000=08597100= BEGIN 57445000=08597200= - VARIABLE(FL); 57450000=08597200= + TVAR:= FL; 57446000 + VARIABLE(TVAR); 57450000 IF TABLE(I-2) ^= FACTOP THEN 57455000=08597300= BEGIN 57460000=08597400= ERR(439); 57465000=08597400= @@ -12523,19 +12552,17 @@ CHKSECOND: 58270000 PARAMETER IN WRITE STATEMENT; 58695000=08663000= STEPIT; 58700000=08664000= IF RANGE(BOOARRAYID, INTARRAYID) THEN 58705000=08666000= - BEGIN 58710000=08666000= - COMMENT THIS IS THE ROW DESIGNATOR CASE; 58715000=08666000= - VARIABLE(FL); 58720000=08667000= + BEGIN COMMENT THIS IS THE ROW DESIGNATOR CASE; 58710000 + TVAR:= FL; 58711000 + VARIABLE(TVAR); 58720000 IF TABLE(I-2) ^= FACTOP THEN 58725000=08669000= - BEGIN 58730000=08669000= - COMMENT ERROR 444 MEANS IMPROPER ROW 58735000=08669000= + BEGIN COMMENT ERROR 444 MEANS IMPROPER ROW 58730000 DESIGNATOR IN A WRITE STATEMENT; 58740000=08670000= ERROR(444); 58745000=08671000= GO TO EXIT; 58750000=08671000= END; 58755000=08672000= IF CHECK(RTPAREN, 445) THEN 58760000=08674000= - GO TO EXIT; 58765000=08674000= - COMMENT ERROR 445 MEANS MISSING RIGHT 58770000=08675000= + GO TO EXIT; COMMENT ERROR 445 MEANS MISSING RIGHT 58765000 PARENTHESIS AFTER A ROW DESIGNATOR IN A WRITE 58775000=08676000= STATEMENT; 58780000=08677000= GOGOGO:= TRUE; % 58785000=08677100= @@ -12543,8 +12570,7 @@ CHKSECOND: 58270000 GO EMITCALL; 58795000=08678000= END 58800000=08680000= ELSE 58805000=08680000= - BEGIN 58810000=08680000= - COMMENT ERROR 446 MEANS MISSING ROW DESIGNATOR;58815000=08680000= + BEGIN COMMENT ERROR 446 MEANS MISSING ROW DESIGNATOR;58810000 ERROR(446); 58820000=08681000= GO TO EXIT; 58825000=08681000= END; 58830000=08682000= @@ -12645,6 +12671,8 @@ EXIT: 59165000 L REGISTER SETTING FOR THE 59305000=08718000= SAVE OR RELEASE LITERAL THAT 59310000=08719000= GETS PASSED TO KEN MEYERS; 59315000=08720000= + REAL 59316000 + TVAR; % FOR VARIABLE() NAME PARAM 59317000 STEPIT; 59320000=08721000= IF CHECK(LEFTPAREN, 450) THEN 59325000=08723000= GO TO EXIT; 59330000=08723000= @@ -12659,7 +12687,8 @@ EXIT: 59165000 ERR(451); 59375000=08728200= GO TO EXIT 59380000=08728200= END; 59385000=08728200= - VARIABLE(FL); 59390000=08728300= + TVAR:= FL; 59389000 + VARIABLE(TVAR); 59390000 L:= L-1; 59395000=08728300= IF TABLE(I-2) ^= FACTOP THEN 59400000=08728400= FLAG(208); 59405000=08728400= @@ -13749,8 +13778,7 @@ L1: GT1:= GT1+(GT2:= INFO[GT1.LINKR, GT1.LINKC]).[14:2]; 64650000 GT3:= GT1:= GT1+INFO[GT1.LINKR, GT1.LINKC].[14:15]+1; 64770000=09305000= GO TO L1; 64775000=09305100= END; 64780000=09306000= - L:= L-1; 64785000=09306100= - COMMENT WIPES OUT EXTRANEOUS BFW EMITTED BY BLOCK; 64790000=09306100= + L:= L-1; COMMENT WIPES OUT EXTRANEOUS BFW EMITTED BY BLOCK; 64785000 EMITL(5); 64795000=09307000= EMITO(COM); 64800000=09307000= ENIL[0, 1]:= 1023 & 99999999[37:27:28]; 64805000=09307100= @@ -13771,11 +13799,11 @@ COMMENT IF THE POWERS-OF-TEN TABLE HAS BEEN USED, IT IS WRITTEN OUT 64825000 BEGIN 64880000=09317000= ARRAY 64885000=09317000= PRT[0:7, 0:127], 64890000=09317000= - SEGDICT[0:7, 0:127]; 64895000=09317000= + SEGDICT[0:7, 0:127]; 64895000 INTEGER 64900000=09318000= PRTADR, 64905000=09318000= - SEGMNT, 64910000=09318000= - LINK; 64915000=09318000= + SEGMNT, 64910000 + LINK; 64915000 64920000=09333000= COMMENT THE PRT AND SEGMENT DICTIONARY ARE NOW BUILT; 64925000=09333000= FOR I:= 0 STEP 1 UNTIL PDINX-1 DO 64930000=09348000= @@ -13886,7 +13914,15 @@ COMMENT WRITE DISK SEGMENT ZERO; 65285000 BIC2EBC(GT1), BIC2EBC(GT2), PRTIMAX, AKKUM, 65450000=09419000= IF DA <= CHUNK THEN DA ELSE((DA+CHUNK-1) DIV CHUNK)*CHUNK, 65455000=09419000= SGAVL-1, GTI1, AUXMEMREQ, CARDCOUNT); 65460000=09419000= - END 65465000=09420000= + END; 65465000 + 65469000 + MYSELF.TASKVALUE:= ERRORCOUNT; 65469100 + IF ERRORCOUNT = 0 THEN 65469200 + REPLACE POINTER(EBCDICBUFF,8) BY "NO ERRORS", 0 FOR 1 65469300 + ELSE 65469400 + REPLACE POINTER(EBCDICBUFF,8) BY ERRORCOUNT FOR * DIGITS, 65469500 + " SYNTAX ERROR", "S" FOR REAL(ERRORCOUNT^=1), 0 FOR 1; 65469600 + DISPLAY(POINTER(EBCDICBUFF,8)); 65469700 END 65470000=09420000= END PROGRAM; 65475000=09420000= %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%65480000=09420000= @@ -15161,60 +15197,49 @@ EXIT: 71640000 FOR EACH DUMP LIST ELEMENT. FOR A DESCRIPTION OF PRINTI 71780000=10704000= SEE THE COMMENTS FOR THE MERRIMAC ROUTINE; 71785000=10705000= LABEL 71790000=10706000= - START; 71795000=10706000= - COMMENT WHEN START IS REACHED, I MUST BE 71800000=10706000= + START; COMMENT WHEN START IS REACHED, I MUST BE 71795000 POINTING AT THE FILE IDENTIFIER IN THE DUMP 71805000=10707000= DECLARATION; 71810000=10708000= LABEL 71815000=10709000= - EXIT; 71820000=10709000= - COMMENT EXIT APPEARS AT THE END OF THE DMUP 71825000=10709000= + EXIT; COMMENT EXIT APPEARS AT THE END OF THE DMUP 71820000 ROUTINE. NO STATMENTS ARE EXECUTED AFTER IT 71830000=10710000= IS REACHED; 71835000=10711000= DEFINE 71840000=10712000= - FILEIDENT = RR1 #; 71845000=10712000= - COMMENT FILEIDENT CONTAINS THE 71850000=10712000= + FILEIDENT = RR1 #; COMMENT FILEIDENT CONTAINS THE 71845000 ADDRESS OF THE MONITOR FILE; 71855000=10713000= LABEL 71860000=10714000= - STARTCALL; 71865000=10714000= - COMMENT THE CODE AT STARTCALL GENERATES 71870000=10714000= + STARTCALL; COMMENT THE CODE AT STARTCALL GENERATES 71865000 CODE TO CALL THE PRINTI ROUTINE. WHEN 71875000=10715000= STARTCALL IS REACHED, I MUST BE POINTING 71880000=10716000= AT THE CHARACTER IMMEDIATELY BEFORE THE 71885000=10717000= DUMP LIST ELEMENT TO BE PASSED TO PRINTI;71890000=10718000= DEFINE 71895000=10719000= - NODIM = RR2 #; 71900000=10719000= - COMMENT NODIM CONTAINS THE NUMBER OF71905000=10719000= + NODIM = RR2 #; COMMENT NODIM CONTAINS THE NUMBER OF71900000 DIMENSIONS OF AN ARRAY OR A 71910000=10720000= SUBSCRIPTED VARIABLE APPEARING IN A 71915000=10721000= DUMP LIST; 71920000=10722000= DEFINE 71925000=10723000= - LEXIT = RR3 #; 71930000=10723000= - COMMENT LEXIT CONTAINS THE PROGRAM 71935000=10723000= + LEXIT = RR3 #; COMMENT LEXIT CONTAINS THE PROGRAM 71930000 COUNTER SETTING AT WHICH CODE IS 71940000=10724000= GENERATED TO EXIT THE ROUTINE EMITTED71945000=10725000= BY DMUP; 71950000=10726000= DEFINE 71955000=10727000= - DUMPETEMP = RR2 #; 71960000=10727000= - COMMENT DUMPETEMP HOLDS THE 71965000=10727000= + DUMPETEMP = RR2 #; COMMENT DUMPETEMP HOLDS THE 71960000 LOCATION OF THE COUNTER 71970000=10728000= ASSOCIATED WITH THIS LABEL IF 71975000=10729000= SPACE HAS BEEN ASSIGNED FOR IT; 71980000=10730000= DEFINE 71985000=10731000= - DIMCTR = RR3 #; 71990000=10731000= - COMMENT DIMCTR IS INITIALIZED TO 71995000=10731000= + DIMCTR = RR3 #; COMMENT DIMCTR IS INITIALIZED TO 71990000 NODIM. IT IS THEN COUNTED DOWN TO 72000000=10732000= ZERO AS SUBSCRIPT CODE IS GENERATED;72005000=10733000= LABEL 72010000=10734000= - PASSN; 72015000=10734000= - COMMENT THE CODE AT PASSN PASSES N (THE 72020000=10734000= + PASSN; COMMENT THE CODE AT PASSN PASSES N (THE 72015000 NUMBER OF DIMENSIONS) TO THE PRINTI ROUTINE; 72025000=10735000= LABEL 72030000=10736000= - SUBSLOOP; 72035000=10736000= - COMMENT THE CODE AT SUBLOOP PASSES 72040000=10736000= + SUBSLOOP; COMMENT THE CODE AT SUBLOOP PASSES 72035000 SUBSCRIPTS TO PRINTI; 72045000=10737000= ARRAY 72050000=10738000= - LABELCTR[0:100]; 72055000=10738000= - COMMENT LABELCTR IS AN ARRAY THAT 72060000=10738000= + LABELCTR[0:100]; COMMENT LABELCTR IS AN ARRAY THAT 72055000 HOLDS THE ADDRESSES OF ALL LABEL 72065000=10739000= COUNTERS FOR LABELS APPEARING IN 72070000=10740000= THIS DUMP DECLARATION. IT IS 72075000=10741000= @@ -15224,70 +15249,59 @@ EXIT: 71640000 DECLARATION TO INITIALIZE THE 72095000=10745000= COUNTERS; 72100000=10746000= DEFINE 72105000=10747000= - LABELCTRINX = RR4 #; 72110000=10747000= - COMMENT LABELCTRINX IS THE 72115000=10747000= + LABELCTRINX = RR4 #; COMMENT LABELCTRINX IS THE 72110000 VARIABLE USED TO INDEX INTO THE72120000=10748000= LABELCTR ARRAY; 72125000=10749000= DEFINE 72130000=10750000= - DUMPE = 45:10:11 #; 72135000=10750000= - COMMENT DUMPE IS THE 72140000=10750000= + DUMPE = 45:10:11 #; COMMENT DUMPE IS THE 72135000 CONCATENATE DEFINE FOR INSERTING72145000=10751000= THE COUNTER ASSOCIATED WITH THIS72150000=10752000= LABEL INTO THE FIRST ADDITIONAL 72155000=10753000= WORD OF INFO; 72160000=10754000= DEFINE 72165000=10755000= - LWRBND = RR5 #; 72170000=10755000= - COMMENT LWRBND CONTAINS THE LOWER 72175000=10755000= + LWRBND = RR5 #; COMMENT LWRBND CONTAINS THE LOWER 72170000 BOUND FOR MONITORED SUBSCRIPTED 72180000=10756000= VARIABLES; 72185000=10757000= DEFINE 72190000=10758000= - FORMATTYPE = RR5 #; 72195000=10758000= - COMMENT FORMATTYPE IS THE 72200000=10758000= + FORMATTYPE = RR5 #; COMMENT FORMATTYPE IS THE 72195000 FORMAT TYPE REFERRED TO IN THE 72205000=10759000= COMMENTS FOR THE MERRIMAC 72210000=10760000= ROUTINE DESCRIBING PRINTI; 72215000=10761000= DEFINE 72220000=10762000= - FINALL = RR5 #; 72225000=10762000= - COMMENT FINALL IS A TEMPORARY CELL 72230000=10762000= + FINALL = RR5 #; COMMENT FINALL IS A TEMPORARY CELL 72225000 USED TO HOLD L WHILE THE DUMP 72235000=10763000= INDICATOR TEST CODE IS BEING 72240000=10764000= GENERATED; 72245000=10765000= DEFINE 72250000=10766000= - TESTLOC = RR6 #; 72255000=10766000= - COMMENT TESTLOC CONTAINS THE 72260000=10766000= + TESTLOC = RR6 #; COMMENT TESTLOC CONTAINS THE 72255000 LOCATION OF THE CODE THAT MUST BE 72265000=10767000= GENERATED TO MAKE THE TEST TO 72270000=10768000= DETERMINE WHETHER OR NOT DUMPING 72275000=10769000= SHOULD OCCUR; 72280000=10770000= DEFINE 72285000=10771000= - DUMPR = 23:10:11 #; 72290000=10771000= - COMMENT DUMPR IS THE 72295000=10771000= + DUMPR = 23:10:11 #; COMMENT DUMPR IS THE 72290000 CONCATENATE DEFINE USED TO 72300000=10772000= INSERT THE ADDRESS OF THE 72305000=10773000= PROGRAM DESCRIPTOR FOR THE CODE 72310000=10774000= GENERATED FROM THE DUMP 72315000=10775000= DECLARATION; 72320000=10776000= DEFINE 72325000=10777000= - DUMPLOC = RR7 #; 72330000=10777000= - COMMENT DUMPLOC CONTAINS THE 72335000=10777000= + DUMPLOC = RR7 #; COMMENT DUMPLOC CONTAINS THE 72330000 ADDRESS OF THE PROGRAM DESCRIPTOR 72340000=10778000= THAT DESCRIBES THE CODE GENERATED 72345000=10779000= BY DMUP; 72350000=10780000= DEFINE 72355000=10781000= - ELBATWORD = RR8 #; 72360000=10781000= - COMMENT ELBATWORD CONTAINS THE 72365000=10781000= + ELBATWORD = RR8 #; COMMENT ELBATWORD CONTAINS THE 72360000 ELBAT WORD FOR THE DUMP LIST 72370000=10782000= ELEMENT CURRENTLY BEING OPERATED 72375000=10783000= ON; 72380000=10784000= LABEL 72385000=10785000= - CALLPRINTI; 72390000=10785000= - COMMENT CALLPRINTI FINISHES THE CALL 72395000=10785000= + CALLPRINTI; COMMENT CALLPRINTI FINISHES THE CALL 72390000 ON PRINTI. IT GENERATES THE CODE TO 72400000=10786000= PASS TYPEV, POWERSOFTEN, ID, CHARI, 72405000=10787000= FILE, AND FORMAT TYPE; 72410000=10788000= DEFINE 72415000=10789000= - SUBSCTR = RR9 #; 72420000=10789000= - COMMENT SUBSCTR CONTAINS THE 72425000=10789000= + SUBSCTR = RR9 #; COMMENT SUBSCTR CONTAINS THE 72420000 DIMENSION NUMBER THAT IS CURRENTLY 72430000=10790000= BEING WORKED ON; 72435000=10791000= START: 72440000=10792000= @@ -15313,21 +15327,18 @@ STARTCALL: 72530000 STEPIT; 72540000=10803000= ELBATWORD:= -ABS(ELBAT[I]); 72545000=10804000= IF RANGE(BOOARRAYID, INTARRAYID) THEN 72550000=10806000= - BEGIN 72555000=10806000= - COMMENT THIS CODE HANDLES ARRAYS AND 72560000=10806000= + BEGIN COMMENT THIS CODE HANDLES ARRAYS AND 72555000 SUBSCRIPTED VARIABLES; 72565000=10807000= NODIM:= DIMCTR:= TAKEFRST.NODIMPART; 72570000=10808000= IF STEPI = LFTBRKET THEN 72575000=10810000= - BEGIN 72580000=10810000= - COMMENT THIS CODE HANDLES SUBSCRIPTED72585000=10810000= + BEGIN COMMENT THIS CODE HANDLES SUBSCRIPTED72580000 VARIABLES; 72590000=10811000= STEPIT; 72595000=10812000= AEXP; 72600000=10812000= EMITO(DUP); 72605000=10812000= SUBSCTR:= 1; 72610000=10813000= IF (LWRBND:= TAKE(GIT(ELBATWORD)+SUBSCTR)).[12:13] ^= 0 THEN 72615000=10816000= - BEGIN 72620000=10816000= - COMMENT SUBTRACT OFF THE 72625000=10816000= + BEGIN COMMENT SUBTRACT OFF THE 72620000 LOWER BOUND BEFORE INDEXING;72630000=10817000= IF LWRBND.[1:2] = 0 THEN 72635000=10819000= EMIT(LWRBND) 72640000=10820000= @@ -15336,15 +15347,13 @@ STARTCALL: 72530000 EMIT(LWRBND.[24:12]); 72655000=10821000= END; 72660000=10822000= IF DIMCTR-SUBSCTR = 0 THEN 72665000=10824000= - BEGIN 72670000=10824000= - COMMENT PASS SUBSCRIPT, 72675000=10824000= + BEGIN COMMENT PASS SUBSCRIPT, 72670000 VALUE,N; 72680000=10825000= EMITV(ELBATWORD.ADDRESS); 72685000=10826000= PASSN: 72690000=10827000= EMITL(NODIM); 72695000=10827000= IF CHECK(RTBRKET, 411) THEN 72700000=10829000= - GO TO EXIT; 72705000=10829000= - COMMENT ERROR 411 MEANS 72710000=10830000= + GO TO EXIT; COMMENT ERROR 411 MEANS 72705000 DUMP LIST ELEMENT HAS WRONG 72715000=10831000= NUMBER OF SUBSCRIPTS; 72720000=10832000= FORMATTYPE:= 2; 72725000=10833000= @@ -15359,8 +15368,7 @@ STARTCALL: 72530000 EMITO(SND); 72770000=10837000= SUBSCTR:= SUBSCTR+1; 72775000=10838000= IF (LWRBND:= TAKE(GIT(ELBATWORD)+SUBSCTR)).[12:13] ^= 0 THEN 72780000=10841000= - BEGIN 72785000=10841000= - COMMENT SUBTRACT OFF THE 72790000=10841000= + BEGIN COMMENT SUBTRACT OFF THE 72785000 LOWER BOUND BEFORE INDEXING;72795000=10842000= IF LWRBND.[1:2] = 0 THEN 72800000=10844000= EMIT(LWRBND) 72805000=10845000= @@ -15369,8 +15377,7 @@ STARTCALL: 72530000 EMIT(LWRBND.[24:12]); 72820000=10846000= END; 72825000=10847000= IF DIMCTR-SUBSCTR = 0 THEN 72830000=10849000= - BEGIN 72835000=10849000= - COMMENT EMIT COC; 72840000=10849000= + BEGIN COMMENT EMIT COC; 72835000 EMITO(COC); 72845000=10850000= EMITV(JUNK); 72850000=10851000= EMITO(XCH); 72855000=10851000= @@ -15382,15 +15389,13 @@ STARTCALL: 72530000 IF CHECK(COMMA, 412) THEN 72885000=10856000= GO TO EXIT 72890000=10857000= ELSE 72895000=10857000= - GO TO SUBSLOOP; 72900000=10857000= - COMMENT ERROR 412 MEANS DUMP LIST 72905000=10858000= + GO TO SUBSLOOP; COMMENT ERROR 412 MEANS DUMP LIST 72900000 ELEMENT HAS WRONG NUMBER OF SUBSCRIPTS72910000=10859000= ; 72915000=10860000= END; 72920000=10861000= COMMENT THIS CODE HANDLES ARRAYS; 72925000=10862000= IF ELCLASS ^= COMMA AND ELCLASS ^= RTPAREN THEN 72930000=10864000= - BEGIN 72935000=10864000= - COMMENT ERROR 413 MEANS IMPROPER 72940000=10864000= + BEGIN COMMENT ERROR 413 MEANS IMPROPER 72935000 ARRAY DUMP LIST ELEMENT; 72945000=10865000= ERR(413); 72950000=10866000= GO TO EXIT; 72955000=10866000= @@ -15403,8 +15408,7 @@ STARTCALL: 72530000 END; 72990000=10870000= FORMATTYPE:= 1; 72995000=10871000= IF RANGE(BOOID, INTID) THEN 73000000=10873000= - BEGIN 73005000=10873000= - COMMENT THIS CODE HANDLES SIMPLE VARIABLES; 73010000=10873000= + BEGIN COMMENT THIS CODE HANDLES SIMPLE VARIABLES; 73005000 EMITV(ELBATWORD.ADDRESS); 73015000=10874000= GO CALLPRINTI; 73020000=10874000= END; 73025000=10875000= @@ -15430,11 +15434,9 @@ STARTCALL: 72530000 EMITNUM(FORMATTYPE & CARDNUMBER[46:43:44]); 73120000=10891100= EMITV(GNAT(PRINTI)); 73125000=10891200= IF STEPI = COMMA THEN 73130000=10893000= - BEGIN 73135000=10893000= - COMMENT GO AROUND ONE MORE TIME; 73140000=10893000= + BEGIN COMMENT GO AROUND ONE MORE TIME; 73135000 IF LABELCTRINX = 100 THEN 73145000=10895000= - BEGIN 73150000=10895000= - COMMENT ERROR 415 MEANS LABELCTR IS 73155000=10895000= + BEGIN COMMENT ERROR 415 MEANS LABELCTR IS 73150000 ABOUT TO OVERFLOW WITH LABEL 73160000=10896000= INFORMATION; 73165000=10897000= ERR(415); 73170000=10898000= @@ -15464,8 +15466,7 @@ STARTCALL: 72530000 % LABEL DESCR. 73290000=10915000= ELSE DUMPETEMP)[DUMPE], GIT(ELBATWORD)); 73295000=10916000= EMITL(0); 73300000=10917000= - DO BEGIN 73305000=10918000= - COMMENT THIS CODE INITIALIZES THE LABEL COUNTERS;73310000=10918000= + DO BEGIN COMMENT THIS CODE INITIALIZES THE LABEL COUNTERS;73305000 EMITPAIR(LABELCTR[LABELCTRINX], SND) 73315000=10920000= END 73320000=10921000= UNTIL LABELCTRINX:= LABELCTRINX-1 < 0; 73325000=10921000= @@ -15481,8 +15482,7 @@ ELSE DUMPETEMP)[DUMPE], GIT(ELBATWORD)); 73295000 IF(GT1:= TABLE(I) ^= NONLITNO AND GT1 ^= LITNO AND GT1 < REALID AND 73375000=10926510= GT1 > INTID) OR(GT1:= TABLE(I+1) ^= COMMA AND GT1 ^= SEMICOLON) 73380000=10926530= THEN 73385000=10926530= - BEGIN 73390000=10926530= - COMMENT ERROR 465-DUMP INDICATOR MUST BE 73395000=10926530= + BEGIN COMMENT ERROR 465-DUMP INDICATOR MUST BE 73390000 UNSIGNED INTEGER OR SIMPLE VARIABLE; 73400000=10926540= FLAG(465); 73405000=10926550= GO TO EXIT; 73410000=10926550= @@ -15494,8 +15494,7 @@ ELSE DUMPETEMP)[DUMPE], GIT(ELBATWORD)); 73295000 L:= FINALL; 73440000=10929000= PUT(TAKE(GIT(ELBAT[I-3])) & DUMPLOC[DUMPR], GIT(ELBAT[I-3])); 73445000=10930000= IF ELCLASS = COMMA THEN 73450000=10932000= - BEGIN 73455000=10932000= - COMMENT GO AROUND ONE MORE TIME; 73460000=10932000= + BEGIN COMMENT GO AROUND ONE MORE TIME; 73455000 STEPIT; 73465000=10933000= GO TO START; 73470000=10933000= END; 73475000=10934000= @@ -15628,16 +15627,17 @@ EXIT: 74115000 PROCEDURE DBLSTMT; 74130000=12002000= BEGIN 74135000=12003000= REAL 74140000=12004000= + TVAR, % FOR VARIABLE() NAME PARAM 74141000 S, 74145000=12004000= - T; 74150000=12004000= + T; 74150000 BOOLEAN 74155000=12004100= B; 74160000=12004100= LABEL 74165000=12005000= L1, 74170000=12005000= - L2, 74175000=12005000= - L3, 74180000=12005000= - L4, 74185000=12005000= - EXIT; 74190000=12005000= + L2, 74175000 + L3, 74180000 + L4, 74185000 + EXIT; 74190000 S:= 0; 74195000=12006000= IF STEPI ^= LEFTPAREN THEN 74200000=12007000= ERR(281) 74205000=12008000= @@ -15698,7 +15698,10 @@ EXIT: 74115000 IF ELCLASS > INTARRAYID OR ELCLASS < REALARRAYID THEN 74480000=12036500= ERR(286) 74485000=12037000= ELSE 74490000=12037000= - VARIABLE(FL); 74495000=12037000= + BEGIN 74491000 + TVAR:= FL; 74492000 + VARIABLE(TVAR); 74495000 + END; 74496000 EMITO(IF B THEN ISD ELSE STD) 74500000=12038000= END 74505000=12038000= UNTIL T:= T+1 = 2; 74510000=12038000= @@ -15754,18 +15757,19 @@ EXIT: 74115000 PROCEDURE CMPLXSTMT; 74760000=12060000= BEGIN 74765000=12060100= REAL 74770000=12060200= + TVAR, % FOR VARIABLE() NAME PARAM 74771000 S, 74775000=12060200= - T; 74780000=12060200= + T; 74780000 BOOLEAN 74785000=12060250= B; 74790000=12060250= LABEL 74795000=12060300= L1, 74800000=12060300= - L2, 74805000=12060300= - L3, 74810000=12060300= - L4, 74815000=12060300= - L5, 74820000=12060300= - EXIT, 74825000=12060300= - ERROR; 74830000=12060300= + L2, 74805000 + L3, 74810000 + L4, 74815000 + L5, 74820000 + EXIT, 74825000 + ERROR; 74830000 DEFINE 74835000=12060400= ERRX(ERRX1) = BEGIN 74840000=12060400= T:= ERRX1; 74845000=12060400= @@ -15828,7 +15832,10 @@ L1: STEPIT; 74870000 END 75130000=12063000= ELSE 75135000=12063000= IF ELCLASS < LABELID AND ELCLASS > BOOARRAYID THEN 75140000=12063100= - VARIABLE(FL) 75145000=12063200= + BEGIN 75141000 + TVAR:= FL; 75142000 + VARIABLE(TVAR); 75145000 + END 75146000 ELSE 75150000=12063200= ERRX(386); 75155000=12063200= EMITO(IF B THEN ISD ELSE STD); 75160000=12063300= @@ -18496,13 +18503,13 @@ CALLSTATEMENT: 87135000 BEGIN 88405000=15071000= REAL 88410000=15072000= TALL, COMMENT ELBAT WORD FOR VARIABLE; 88415000=15072000= - T1, COMMENT 1ST INTEGER OF PARTIAL WORD SYNTAX; 88420000=15073000= - T2, COMMENT 2ND INTEGER OF PARTIAL WORD SYNTAX; 88425000=15074000= - J; 88430000=15075000= + T1, COMMENT 1ST INTEGER OF PARTIAL WORD SYNTAX; 88420000 + T2, COMMENT 2ND INTEGER OF PARTIAL WORD SYNTAX; 88425000 + J; 88430000 COMMENT SUBSCRIPT COUNTER ; 88435000=15075000= REAL 88440000=15075500= X, 88445000=15075500= - Z; 88450000=15075500= + Z; 88450000 REAL 88455000=15075550= REMEMBERSEQNO; % REMEMBERS SEQUENCE NUMBER OF VARIABLE 88460000=15075550= % ON LEFT HAND SIDE OF ASSIGNMENT SO WE 88465000=15075551= @@ -18921,8 +18928,7 @@ COMMENT ***** MONITOR FUNCTION M4 GOES HERE ; 90425000 90525000=15310000= COMMENT ***** MONITOR FUNCTION M6 GOES BEFORE EMITO(XCH); 90530000=15310000= IF TALL < 0 THEN 90535000=15312000= - BEGIN 90540000=15312000= - COMMENT STORE THE VALUE OF THE EXPRESSION 90545000=15312000= + BEGIN COMMENT STORE THE VALUE OF THE EXPRESSION 90540000 IN JUNK AND CALL PRINTI, THEN RECALL THE 90550000=15313000= VALUE FROM JUNK; 90555000=15314000= EMITO(IF TALL.CLASS = INTARRAYID THEN ISN ELSE SND); 90560000=15318000=