@CAT,P 1021-005-006.,///10000 @ASG,T TEMP.,///10000 @ELT,OI TEMP.1021-005-006,,,130163053241,000 )@@G@@**PF**@@@[,:@@@@@@@@@@@[@ 2@@@]FE /^@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@@@@@AC )@@G@@@@@@@@@@G@@@@@@@@[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@J@@@@@@@@@@@@@@B@@@AD )@@G@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@^@@@@@@@@@@@@@@@@@@@@@@@@@@@AE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@K@@@@@@@@@@@@@@@@@@@@@@@@@@@AF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@I@@@@@@@@@@@#@@O@@@@@@@@@@@@@@@AG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@D@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M@@@AI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@H@@@@@@@@@@@N@@@@@@@@@@@@@@@AJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Q@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AL )@@G@@@@@@@@@@@@@@@@@@@]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@E@@@@@@@@@@@@@@F@@@AM )@@G@@@@@@@@@@@@@@@@@@@R@@@@@@@@@@@@@@P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@E@@RAN )@@G@@ERSD @@@@@@@@[@@@ @ @[@]@@@@@N@@@@W@CNT OFERAT AO )@@G@@@@@@@@@K[@@@ @ @#@^@@@@[V@@@@WNCPI OFCGOS @@@@@@@@[@@@AP )@@G@@ @ @=@ @@@@]3@@@@X,FW@ UFCGIG @@@@@@@@[@@@ AQ )@@G@@@ @.@ @@@@^;@@@@)-C:$A#FERRS @@@@@C@K[@@@ @ @@@[@@@@@XAR )@@G@@@@@@>WD9N[NFPFAS )@@G@@CGSB @@@@@@@@[@@@ @ @Z@ @@@@^_@@@@!LGY+GLFCGRS AT )@@G@@@@@@@@@@[@@@ @ @P@ @@@@[L@@@@2KO6.[GGCGAB @@@@@L@@[@@@AU )@@G@@ @ @I@ @@@@ @@@@3-J@5[KGERSY @@@@@@@K[@@@ AV )@@G@@@ @G@ @@@@[)@@@@8&J$3[NGCASES @@@@@@@@[@@@ @ @[@]@@@@@XAW )@@G@@@@@@'AK^O[NGCGTB @@@@@@@@[@@@ @ @Q@ @@@@[P@@@@'@@@@@@@[@@@@@@G FI@@@@@@@[@@@@@@M FL@@@@@@@[@@@@@@% FPBL )@@G@@@@@@@@@[@@@@@@% FW@@@@@@@[@@@@@@S F<@@@@@@@[@@@@@@0 F<@@@@@@@[@@@@@@% F Y&@@@__"@@@ Y$(C@ =L @@ =LCC) =KG8)@@H!G) =K/K@ ==CL )@@G@@9?K =)A#K["FA#)[EU9?K =+C9K@@@N8K@@T/K@[EU'^@[DV@@[["U@ASG,T ILLEGAL BUFFER LENCR )@@G@@GTH PARAMETER ( < 1 OR > 65K WORDS ). TOO MANY PARAMETERS IN SUBROUTCS )@@G@@INE CALL. EOF, EOT, PARITY ERROR, OR TRANSLATE ERROR DETECTED. ILLEGACT )@@G@@L UNIT NUMBER ( < 0 OR > 49 ).READ ATTEMPT AFTER WRITE OPERATION. LOGICACU )@@G@@L UNIT IS NOT ASSIGNED. LOGICAL UNIT NOT ASSIGNED TO TAPE. INPUT OUTPUTCV )@@G@@[-&[Z\[=I[+Y'^@[W1/GK[V;@@^ >Y CW )@@G@@ CX )@@G@@ ERROR DETECTED IN IOTP DURING ON LUN . __D &5@@[@@@CY )@@G@@@]O &-@@@[X=@@@[Y\@@@@@@@@@@@@@@@@@@@@@[X=@@@[XR@@@@@@@@@@@@@@@@@@@@@@@@CZ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DC )@@G@@@@@@@@@@@@@@@@@@@@@[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[@@@@@@@@@@@@@@@@@@@@@@DD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@0 1 2 3 DH )@@G@@ 4 5 6 7 8 9 DI )@@G@@ 10 11 12 13 14 15 DJ )@@G@@ 16 17 18 19 20 21 DK )@@G@@ 22 23 24 25 26 27 DL )@@G@@ 28 29 30 31 32 33 DM )@@G@@ 34 35 36 37 38 39 DN )@@G@@ 40 41 42 43 44 45 DO )@@G@@ 46 47 48 49 _____"@@@@@@@@@@@@DP )@@G@@ ERROR OCCURED WHILE CLOSING FILES AT RUN TERMINATION.@]D %MREQUESTED OPDQ )@@G@@ERATION IS ILLEGAL ON THIS UNIT. @BRKPT PRINT$ . DR )@@G@@ DS )@@G@@ DT )@@G@@@@@@@@REREAD ATTEMPT BEFORE FIRST READ ON CARD READER.ATTEMPT TO READ BEDU )@@G@@YOND END OF INPUT ON CARD READER. @@[ %*[YR %*0@@ :#@@[ :W@BRKPT PUNCHDV )@@G@@$ . C,E. C,B. @@@@@@@@@@@@K@@[Z_C@@[Z7L@@[Z_*@@[Z_(@@[Z_D@@[Z_)@@[Z_DW )@@G@@%@@[-G:@@[-GM@@[-DE@@[+LF@@[+N@@@@@@@@@@@@@@B>:8@@ >:;@@C>:8)@B>:8)@C>:8DX )@@G@@)@ >:;)@C>:8)@^>:.)@^>:.^@@[)*[@@[Z: @@[)>@@@[)*D@@[)$E@@[-UF@@[+T]@@[Z:DY )@@G@@[@@[Z!>8@^@@=8@[@@UNRECOGNISED STATUS CODE = .LOSS OF POSITION ON TAPEDZ )@@G@@ UNIT -- OPERATOR ANSWERED ERROR MESSAGE WITH B.NINE TRACK TAPES MUST BEEA )@@G@@ ODD PARITY.OPERATOR DECLARED TAPE UNIT DOWN. @@[@@@@@] :!@@[ :)@@[ ?>EB )@@G@@@@@@@@@@@@@@C@@[+*D@@[N@@ 3$N@@ 3(N@@ 3:9@@ 2XXA XB EU )@@G@@XC XD XE XF XG XH EV )@@G@@XI XJ XK XL XM XN EW )@@G@@XO XP XQ XR XS XT EX )@@G@@XU XV XW XX XY XZ EY )@@G@@ STOP @#] 3\@@Q /I(1P6G13.5) @@[[_F@@[["U@@@@@@@@@@@@@@@@@@@@@@@@EZ )@@G@@@@@@@@T F @@@@@@@@@@@@@@@@@@@@@@@@@@[ /I)^@@@@)@)@@@@@[@@O@@[@@PFA )@@G@@@@@@@@^@@@@@@@@@@@@@@@C@K^*@@@@@@@@@KB2@@@@@@@@@KE")@@@@@@@@KI$^@@@@@@@@FB )@@G@@KL05@@@@@@@@KO.]K@@@@@@@KS&DU@@@@@@@KV\:0)@@@@@@KY;&?*@@@@@@K+>KF9@@@@@@FC )@@G@@L#:R<:1U1+@@L=2ZFD3KL$N,M '1>J<-:>D)M$+H-6E_G=3LNC$4/$D-YUC=N(,RRQ!,899#FD )@@G@@OE5"X'<8ZU"@O:"5-8MO:II&PH==5(FESV96UT(3\2B=K@I?7N@@@@@@A$\ 5HFE )@@G@@A:\ 5HA\\ 5HA3\ 5HA7\ 5HA<\ 5GLOCATION OF ERROR IS MARKED BY * IN FOLLOWFF )@@G@@ING IMAGE. @@C 5?@@[ 6,@@[ 6,@@[ 6,@@^ 54@@^ 58@@A 5/@@[ 6,@@ 6]INTERNFG )@@G@@AL TYPE AND FORMAT TYPE ARE INCOMPATIBLE. ILLEGAL OCTAL INPUT. ILLEGAFH )@@G@@L INTEGER INPUT. TOO MANY DIGITS IN INTEGER INPUT. ILLEGAL CHARACTER FI )@@G@@IN INPUT. @[D 6D@[C 6MILLEGAL FORMAT CHARACTERS WERE ACCEPTED AS BLANKFJ )@@G@@S. RECORDS EXCEEDING MAXIMUM LENGTH ARE FAULTY. @@@@@@ @@ @@@FK )@@G@@@@@@@@NBMSG$() @]D 5^@[Q ;7@@[ 5H@[Q 5H??????@_D 7N@_F 67@_D 7]@_F 67FL )@@G@@@_C 7F@_# 7WEXECUTION TERMINATED BY AN ATTEMPT TO READ PAST AN END-OF-FIFM )@@G@@LE. EXECUTION TERMINATED BY AN ATTEMPT TO PASS END-OF-TAPEA NON INTEGRFN )@@G@@AL BLOCK WAS READ FROM MAGNETIC TAPEABNORMAL I/O CONDITION DETECTED - STFO )@@G@@ATUS CODE = -- INAPPROPRIATE UNITOUTPUT SYMBIONT UNIT REFERENCED BY AFP )@@G@@ READ STATEMENT. INPUTOUTPUT WRITE READ __D 7Z@@@@@@@@@@@@ SEQUENCE NFQ )@@G@@ LINE N ERROR TERMINATION IN ROUTINE CALLED AT FR )@@G@@ SEQUENCE NUMBER OF ROGRAMA COMPUTED GO TO THAT WAS OUT FS )@@G@@OF RANGE WAS DETECTED ATPVARS(...) NOT PUNCHED. FILL IN LISTDV @]@@@@FT )@@G@@ IDV=1 @^@@@@ DO 320 IV=1,NVARS @#@@@@ LISTDV(IV)=0@^@@@@FU )@@G@@ DO 310 IF=1,NF @A@@@@ IF(IV.EQ.LISTFV(IF))GO TO 320 @[@@@@FV )@@G@@C @#@@@@310 CONTINUE @C@@@@C VARIABLE IV IS NOT A FACTOFW )@@G@@R VARIABLE @F@@@@C IF VARIABLE IV IS ALPHA, DON'T ADD IT TO STRING FX )@@G@@OF DEPVARS @A@@@@ CALL S1GTVT(IV,TYPE,$318) @ @@@@ IF(TYPFY )@@G@@E.EQ.1)GO TO 319 @^@@@@318 PRINT 9318,IV @G@@@@9318 FORMAT(1H ,'FZ )@@G@@***** NWAY1 NOTE. VARIABLE NUMBER ',I6,' IS ALPHANUMER@C@@@@ 1IC ANDGA )@@G@@ WILL NOT BE USED AS A DEPVAR ') @#@@@@ GO TO 320 @#@@@@319 GB )@@G@@CONTINUE @^@@@@ LISTDV(IV)=IDV @#@@@@ IDV=IDV+1 @#@@@@GC )@@G@@320 CONTINUE @#@@@@ NDV=IDV-1 @ @@@@ IF(NDV.NE.0)GO TO GD )@@G@@400 @^@@@@ CALL S1PCHD(2) @#@@@@ NERR=NERR+1 @#@@@@ GE )@@G@@PRINT 9320,E@E@@@@9320 FORMAT(4A6,' THERE ARE NO DEPENDENT VARIABLES.'GF )@@G@@) @#@@@@ GO TO 400 @#@@@@330 CONTINUE @C@@@@C GG )@@G@@ DEPVARS(...) WAS PUNCHED @^@@@@ DO 340 IV=1,NVARS @#@@@@GH )@@G@@340 LISTDV(IV)=0@]@@@@ INCR=0@]@@@@ NDV=1 @^@@@@ DO 360GI )@@G@@ IV=1,NUM @B@@@@ IF(OUTLST(IV+LDEPVR).NE.0)GO TO 350 @A@@@@C GJ )@@G@@ SLASH @#@@@@ NDV=NDV+1 @]@@@@ INCR=0GK )@@G@@@#@@@@ GO TO 360 @#@@@@350 CONTINUE @ @@@@ MODE=OUTLST(GL )@@G@@IV+LDEPVR) @^@@@@ LISTDV(MODE)=NDV @ @@@@ IF(ORDLEV.EQ.0)GO GM )@@G@@TO 360@^@@@@ READDV(MODE)=INCR @#@@@@ INCR=INCR+1 @#@@@@360 GN )@@G@@CONTINUE @G@@@@C NOW CHECK FOR DUPLICATE ENTRIES IF NGO )@@G@@OT DONE BY SYSTEM @ @@@@ IF(NUM.EQ.1)GO TO 400 @^@@@@ DO 370GP )@@G@@ IV=2,NUM @#@@@@ IF=IV-1 @^@@@@ DO 370 I=1,IF @B@@@@GQ )@@G@@ IF(OUTLST(IV+LDEPVR).EQ.0)GO TO 370 @E@@@@ IF(OUTLST(IV+LDEPVGR )@@G@@R). NE.OUTLST(I+LDEPVR)) GO TO 370 @^@@@@ CALL S1PCHD(2) @#@@@@GS )@@G@@ NERR=NERR+1 @A@@@@ TEMP(1)=OUTLST(IV+LDEPVR) @ @@@@ GT )@@G@@PRINT 9370,E,TEMP(1) @G@@@@9370 FORMAT(4A6,' VARIABLE',I5,' IS USED GU )@@G@@MORE THAN ONCE FOR THE DEPVARS@^@@@@ 1 CONTROL WORD') @#@@@@370 GV )@@G@@CONTINUE @#@@@@400 CONTINUE @F@@@@C IF ORDERFAC WAS PUNCGW )@@G@@HED, CHECK NUMBER OF LEVELS FOR EACH@A@@@@C EACH DEPENDENT VARIAGX )@@G@@BLE @A@@@@ IF(ORDLEV.EQ.0) GO TO 500 @B@@@@ IF(OUTLST(LDGY )@@G@@EPVR).EQ.0) GO TO 500 @G@@@@C S1ENST PRINTS A MESSAGE IF ORDERGZ )@@G@@FAC IS PUNCHED AND NOT DEPVARS@]@@@@ IDV=1 @#@@@@ LOC=LDEPVR+1HA )@@G@@@]@@@@ N=0 @]@@@@ IV=0 @#@@@@410 CONTINUE @A@@@@ HB )@@G@@IF(OUTLST(LOC).NE.0)GO TO 430 @A@@@@C SLASH HC )@@G@@@#@@@@415 CONTINUE @ @@@@ IF(N.EQ.ORDLEV)GO TO 420@^@@@@ HD )@@G@@CALL S1PCHD(2) @#@@@@ NERR=NERR+1 @^@@@@ PRINT 9420,E,N,IDVHE )@@G@@@G@@@@9420 FORMAT(4A6,' THE ORDER FACTOR HAS',I4,' LEVELS FOR DEPENDENHF )@@G@@T VARI@#@@@@ 1ABLE',I4) @]@@@@420 N=0 @#@@@@ IDV=IDV+1 HG )@@G@@@#@@@@ GO TO 440 @]@@@@430 N=N+1 @#@@@@440 LOC=LOC+1 @#@@@@HH )@@G@@ IV=IV+1 @ @@@@ IF(IV-NUM)410,415,450 @#@@@@450 CONTINHI )@@G@@UE @#@@@@500 CONTINUE @ @@@@C CHECK VARIABLE TYPES@ @@[@HJ )@@G@@ IF(NF .LE. 0) GO TO 510 @B@@[@ CALL S1STFT('S9FTYP',FW,1,NF,$HK )@@G@@9000) @^@@[@ DO 508 I=1,NF @]@@[@ TYPE=0@#@@[@ IV=LISHL )@@G@@TFV(I)@ @@[@ IF(IV .EQ. 0) GO TO 505 @A@@[@ CALL S1GTVT(IV,TYPHM )@@G@@E,$505) @#@@[@ 505 IX(FW)=TYPE @#@@[@ 508 FW=FW+1 @#E@@@510 HN )@@G@@CONTINUE @^@@@@ DO 520 I=1,NVARS @#@@@@ IV=LISTDV(I)@ @@@@HO )@@G@@ IF(IV.EQ.0)GO TO 520 @ @@@@ CALL S1GTVT(I,TYPE,$515)@ @@@@HP )@@G@@ IF(TYPE.EQ.1)GO TO 520 @#@@@@515 NERR=NERR+1 @^@@@@ CALL SHQ )@@G@@1PCHD(2) @^@@@@ PRINT 9515,E,I @G@@@@9515 FORMAT(4A6,' VARHR )@@G@@IABLE NUMBER',I5,' IS USED AS A DEPENDENT VARIAB@ @@@@ 1LE BUT IS NOHS )@@G@@T NUMERIC') @#@@@@520 CONTINUE @[@@@@C @C@@@@C CHECK FOR TWHT )@@G@@ELVE FACTORS PLUS ORDERFAC @D@@@@ IF(NF.NE.12.OR.OUTLST(LORDFC).HU )@@G@@EQ.0)GO TO 525 @#@@@@ PRINT 9520,E@G@@@@9520 FORMAT(4A6,' THIHV )@@G@@RTEEN FACTORS (INCLUDING THE ORDERFACTOR) HAVE B@F@@@@ XEEN SPECIFIEHW )@@G@@D.'/40X,'NWAY1 ALLOWS AT MOST TWELVE FACTORS' ) @#@@@@ NERR=NERR+1 HX )@@G@@@#@@@@525 CONTINUE @[@@[@C @B@@[@C CHECK AND SAVE EHY )@@G@@MS SPECS @[@@[@C @B@@[@ 600 IF(OUTLST(LEMS) .EQ. 0) GO TO 700 HZ )@@G@@@ @@[@ NMODIF=OUTLST(LEMS+1) @#@@[@ LOC=LEMS+2 @]@@[@ IA )@@G@@EMS=0 @A@@[@ IF(NMODIF .EQ. 0) GO TO 660 @^@@[@ DO 650 IF=1,IB )@@G@@NMODIF@^@@[@ MODE=OUTLST(LOC) @D@@[@ IF(MODE .LT. 1 .OR. MOIC )@@G@@DE .GT. 4) GO TO 660 @A@@[@ GO TO (610,660,620,630),MODE @^@@[@ID )@@G@@ 610 NUM=OUTLST(LOC+1) @#@@[@ LOC=LOC+2 @A@@[@ CALL TSTNUM(IE )@@G@@NUM,BIT,$650) @#@@[@ GO TO 640 @ @@[@ 620 NUMLOW=OUTLST(LOC+IF )@@G@@1) @ @@[@ NUMHGH=OUTLST(LOC+2) @#@@[@ LOC=LOC+3 @C@@[@IG )@@G@@ IF(NUMHGH .GT. NUMLOW+12) NUMHGH=NUMLOW+12@ @@[@ DO 625 NUM=NIH )@@G@@UMLOW,NUMHGH@A@@[@ CALL TSTNUM(NUM,BIT,$625) @B@@[@ IF(ANDII )@@G@@(BIT,EMS) .NE. 0) GO TO 645 @^@@[@ EMS=OR(EMS,BIT) @#@@[@ 625 IJ )@@G@@CONTINUE @#@@[@ GO TO 650 @#@@[@ 630 LOC=LOC+3 @B@@[@ IK )@@G@@CALL TSTNAM(OUTLST(LOC-2),BIT,$650) @B@@[@ 640 IF(AND(BIT,EMS) .NE. 0) IL )@@G@@GO TO 645 @^@@[@ EMS=OR(EMS,BIT) @#@@[@ GO TO 650 @#@@[@IM )@@G@@ 645 CALL ERROR @#@@[@ PRINT 9645,E@G@@[@ 9645 FORMAT(3A6,A3,'A FIN )@@G@@ACTOR IS SPECIFIED MORE THAN ONCE WITH EMS') @#@@[@ 650 CONTINUE IO )@@G@@@B@@[@ 660 CALL S1STFT('EMS',FW,1,1,$9000) @#@@[@ IX(FW)=EMS IP )@@G@@@[@@[@C @C@@[@C CHECK AND SAVE ZEROTERMS SPECS @[@@[@IQ )@@G@@C @ @@[@ 700 NMODIF=OUTLST(LZEROT) @A@@[@ IF(NMODIF .EQ. 0) IR )@@G@@GO TO 790 @#@@[@ LOC=LZEROT+1@#@@[@ ZEROT=0 @#@@[@ IS )@@G@@NZEROT=0 @^@@[@ DO 750 I=1,NMODIF @^@@[@ MODE=OUTLST(LOC) IT )@@G@@@#@@[@ LOC=LOC+1 @D@@[@ IF(MODE .LT. 1 .OR. MODE .GT. 5) GIU )@@G@@O TO 760 @B@@[@ GO TO (710,760,760,720,750), MODE @^@@[@ 710 IV )@@G@@NUM=OUTLST(LOC) @#@@[@ LOC=LOC+1 @A@@[@ CALL TSTNUM(NUM,BIIW )@@G@@T,$740) @#@@[@ GO TO 730 @#@@[@ 720 LOC=LOC+2 @B@@[@ IX )@@G@@CALL TSTNAM(OUTLST(LOC-2),BIT,$740) @B@@[@ 730 IF(AND(BIT,ZEROT) .EQ. 0IY )@@G@@) GO TO 738 @#@@[@ CALL ERROR @#@@[@ PRINT 9735,E@E@@[@ 9735 IZ )@@G@@FORMAT(3A6,A3,'A ZEROTERM IS IMPROPERLY SPECIFIED') @ @@[@ 738 ZEROT=JA )@@G@@OR(BIT,ZEROT) @A@@[@ 740 IF(I .EQ. NMODIF) GO TO 745 @B@@[@ JB )@@G@@IF(OUTLST(LOC) .EQ. 5) GO TO 750 @A@@[@ 745 OUTLST(LZEROT+NZEROT)=ZEJC )@@G@@ROT @^@@[@ NZEROT=NZEROT+1 @#@@[@ ZEROT=0 @#@@[@ 750 JD )@@G@@CONTINUE @A@@[@ 760 IF(NZEROT .LT. 2) GO TO 780 @^@@[@ DO 770JE )@@G@@ I=2,NZEROT @ @@[@ ZEROT=OUTLST(LZEROT+I-2)@A@@[@ IF(ZEROT .EQJF )@@G@@. 0) GO TO 770 @ @@[@ DO 765 NZT=I,NZEROT @D@@[@ IF(OUTJG )@@G@@LST(LZEROT+NZT-1) .NE. ZEROT) GO TO 765 @#@@[@ CALL ERROR @#@@[@JH )@@G@@ PRINT 9765,E@G@@[@ 9765 FORMAT(3A6,A3,'THE SAME ZEROTERM IS SPECIFJI )@@G@@IED MORE THAN ONCE') @#@@[@ GO TO 780 @#@@[@ 765 CONTINUE JJ )@@G@@@#@@[@ 770 CONTINUE @A@@[@ 780 IF(NZEROT .EQ. 0) GO TO 790 @C@@[@JK )@@G@@ CALL S1STFT('ZEROTM',FW,1,NZEROT,$9000) @#@@[@ LOC=LZEROT JL )@@G@@@^@@[@ DO 785 I=1,NZEROT @^@@[@ IX(FW)=OUTLST(LOC)@#@@[@ JM )@@G@@LOC=LOC+1 @#@@[@ 785 FW=FW+1 @#@@[@ 790 CONTINUE @[@@@@C JN )@@G@@@E@@@@C STORE INFORMATION IN TAGGED STORAGE @^@@@@JO )@@G@@ NTAG=NVARS+34 @A@@@@ IF(ORDLEV.NE.0)NTAG=NTAG+NVARS@C@@@@JP )@@G@@ CALL S1STFT('S9INFO',FW,1,NTAG,$9000) @#@@@@ IX(FW)=NF JQ )@@G@@@#@@@@ NCELLS=1 @ @@@@ NFLEVS(NF+1)=ORDLEV @^@@@@ JR )@@G@@IX(FW+1)=ORDLEV @^@@@@ IX(FW+2)=ORDNAM(1)@^@@@@ IX(FW+3)=ORDJS )@@G@@NAM(2)@#@@@@ IX(FW+4)=NDV@^@@@@ IX(FW+5)=NPEEL @^@@@@ JT )@@G@@IX(FW+6)=NBADRC @^@@@@ IX(FW+7)=NOMISS @^@@@@ DO 910 I=1,1JU )@@G@@2 @C@@@@ IF(NFLEVS(I).NE.0)NCELLS=NCELLS*NFLEVS(I) @ @@@@ JV )@@G@@IX(FW+9+I)=NFLEVS(I) @ @@@@ IX(FW+21+I)=LISTFV(I) @#@@@@910 JW )@@G@@CONTINUE @^@@@@ IX(FW+8)=NCELLS @^@@@@ DO 920 I=1,NVARS JX )@@G@@@ @@@@ IX(FW+33+I)=LISTDV(I) @#@@@@920 CONTINUE @ @@@@ JY )@@G@@IF(ORDLEV.EQ.0)GO TO 940@E@@@@C READDV IS NOT STORED IJZ )@@G@@F IT IS NOT NEEDED@^@@@@ DO 930 I=1,NVARS @A@@@@ IX(FW+NVARS+KA )@@G@@33+I)=READDV(I) @#@@@@930 CONTINUE @#@@@@940 CONTINUE @#@@@@KB )@@G@@ IV=NF+12 @^@@@@ DO 950 I=1,NF @^@@@@950 IV=IV+NFLEVSKC )@@G@@(I) @B@@@@ CALL S1STFT('S9IDST',FW,1,IV,$9000) @^@@@@ DO 960KD )@@G@@ I=1,12 @#@@@@960 IX(FW+I-1)=0@[@@@@C @]@@@@ RETURN@[@@@@KE )@@G@@C @[@@@@C @#@@@@9000 CONTINUE @G@@@@C TAGGED STORAGEKF )@@G@@ OVERFLOW DETECTED BY SYSTEM, WHICH PRINTS MESS @]@@[@ RETURN@[@@[@KG )@@G@@C @[@@[@C @C@@[@C LOCAL SUBROUTINE FOR ERROR HANDLING KH )@@G@@@[@@[@C @^@@[@ SUBROUTINE ERROR @^@@[@ CALL S1PCHD(1) KI )@@G@@@#@@[@ NERR=NERR+1 @]@@[@ RETURN@[@@[@C @[@@[@C @D@@[@KJ )@@G@@C LOCAL SUBROUTINE TO TEST A FACTOR NUMBER @[@@[@C @B@@[@KK )@@G@@ SUBROUTINE TSTNUM(FNUM,FACTOR,$) @ @@[@ IF(NF .GT. 0) GO TKL )@@G@@O 2100@A@@[@ IF(ORDLEV .EQ. 0) RETURN 3 @#@@[@ 2000 CALL ERROR KM )@@G@@@^@@[@ PRINT 2050,E,FNUM @F@@[@ 2050 FORMAT(3A6,A3,I8,' IS NOT THE KN )@@G@@NUMBER OF A FACTOR VARIABLE') @#@@[@ RETURN 3 @^@@[@ 2100 DO 220KO )@@G@@0 IF=1,NF @B@@[@ IF(FNUM .NE. LISTFV(IF)) GO TO 2200 @^@@[@ KP )@@G@@FACTOR=8**(NF-IF) @B@@[@ IF(ORDLEV .NE. 0) FACTOR=FACTOR*8 @]@@[@KQ )@@G@@ RETURN@#@@[@ 2200 CONTINUE @#@@[@ GO TO 2000 @[@@[@C KR )@@G@@@[@@[@C @C@@[@C LOCAL SUBROUTINE TO TEST FACTOR NAME @[@@[@KS )@@G@@C @B@@[@ SUBROUTINE TSTNAM(FNAME,FACTOR,$) @^@@[@ DIMENSKT )@@G@@ION FNAME(2)@ @@[@ IF(NF .EQ. 0) GO TO 3300@A@@[@ CALL S1CKVN(KU )@@G@@FNAME,FNUMB,$3300)@^@@[@ DO 3200 IF=1,NF @B@@[@ IF(FNUMB .NEKV )@@G@@. LISTFV(IF)) GO TO 3200@^@@[@ FACTOR=8**(NF-IF) @B@@[@ IF(ORDKW )@@G@@LEV .NE. 0) FACTOR=FACTOR*8 @]@@[@ RETURN@#@@[@ 3200 CONTINUE KX )@@G@@@#@@[@ 3250 CALL ERROR @^@@[@ PRINT 3275,E,FNAME@E@@[@ 3275 FORMATKY )@@G@@(3A6,A4,A6,A2,' IS NOT THE NAME OF A FACTOR') @#@@[@ RETURN 3 KZ )@@G@@@A@@[@ 3300 IF(ORDLEV .EQ. 0) GO TO 3250 @C@@[@ IF(FNAME(1) .NE. OLA )@@G@@RDNAM(1)) GO TO 3250 @C@@[@ IF(FNAME(2) .NE. ORDNAM(2)) GO TO 32LB )@@G@@50 @#@@[@ FACTOR=1 @]@@[@ RETURN@]@@@@ END ___+1)LC )@@G@@=ORDLEV @^@@@@ *[S@@@*SDFF*@^@@@@ SUBROUTINE S9CCP @ @@@@LD )@@G@@ IMPLICIT INTEGER(A-Z) @^@@[@ DIMENSION NVEC(6) @^[@@@ LE )@@G@@PARAMETER OP=23 @^@@@@ PARAMETER AP=16 @^@@@@ PARAMETER CPLF )@@G@@=18 @^@@@@ PARAMETER DP=19 @ @@@@ DIMENSION CCTABL(130)/ LG )@@G@@@C@@@@ 1 'INPUT ',1,0,0,-1,0,0, 1,0,0,1,0,@D@@@@ 2 'ILH )@@G@@/FORMAT ',2,0,0,-1,0,0, 2,3,0,0,-2, @C@@@@ 3 'INCHECKS ',LI )@@G@@3,0,0, 0,0,0, 3,0,0,0,0,@C@@@@ 4 'VNAMES ',3,0,0, 0,0,0, 4,0,LJ )@@G@@0,0,0,@D@@@@ 5 'TRANSFRM ',5,0,0, 0,0,0, 5,0,0,0,-1, @C@@@@LK )@@G@@ 6 'TITLE ',6,0,0, 0,0,0, 6,5,0,0,0,@C@@@@ 7 'ANALYSISLL )@@G@@ ',7,0,0,-1,0,0,AP,0,0,0,0,@C@@@@ 8 'CODE ',8,0,0, 0,0,0LM )@@G@@,CP,0,0,0,0,@C@@@@ 9 'DESIGN ',8,0,0, 0,0,0,DP,0,0,0,0,@C@@@@LN )@@G@@ * 'OUTPUT ',9,0,0, 0,0,0,OP,0,0,0,0/@^@@@@ COMMON COM(2LO )@@G@@) @#@@@@ INCLUDE CCI @^@@@@ PARAMETER NCW=10 @^@@@@C*****LP )@@G@@************* @[@@@@C @D@@@@C NWAY1 CONTROL CARD PROCESSORLQ )@@G@@ PRIMARY ROUTINE. @[@@@@C @^@@@@C****************** @[@@@@C LR )@@G@@@A@@@@C S9CCP SYMBOL USAGE SUMMARY @[@@@@C @^@@@@C***********LS )@@G@@******* @[@@@@C @G@@@@C AP - PARAMETER VARIABLE, PROLT )@@G@@CESSOR NUMBER OF PROCESSOR @C@@@@C FOR NWAY1'S ANALYLU )@@G@@SIS CARD. @F@@@@C CCI - FORTRAN PROC, WHICH DEFINES COMMON LV )@@G@@BLOCK S1CCI @F@@@@C CCTABL - DIMENSIONED(130), CONTROL CARD TABLLW )@@G@@E FO S1CCFS,@F@@@@C CONTAINING NAMES AND NUMBERS OF CONLX )@@G@@TROL CARD @D@@@@C PROCESSORS AND PARAMETER FOR THEM LY )@@G@@@B@@@@C COM - BLANK COMMON ARRAY. @G@@@@C CP - LZ )@@G@@ PROCESSOR NUMBER OF CODE CONTROL CARD PROCESSOR, @B@@@@C MA )@@G@@ PARAMETER VARIABLE. @F@@@@C DP - PARAMETER VARIABLMB )@@G@@E, PROCESSOR NUMBER OF DESIGN @B@@@@C CONTROL CARD PROCMC )@@G@@ESSOR.@A@@@@C I - DO-LOOP INDEX. @F@@@@C ICOD - MD )@@G@@ POINTER TO TAG S9CODE IN BLANK COMMON ARRAY. @B@@@@C IDUMY - ME )@@G@@ DUMMY VARIAVLE, =0 @G@@@@C IFLAG - FLAG, =1 IF FOUND NONZEMF )@@G@@RO BIT IN THE CODE WORD YET. @C@@@@C INFO - POINTER TO THE TAMG )@@G@@G S9INFO. @G@@@@C ISHIFT - NUMBER TO MULTIPLY BY TO LEFT SHIFTMH )@@G@@ CODE WORDS SO @C@@@@C THAT THEY ARE LEFT JUSTIFIED.MI )@@G@@@G@@@@C ISTOR - NUMBER OF WORDS OF STORAGE REQUIRED BY INTERACTMJ )@@G@@ION @ @@@@C STORAGE. @C@@@@C ITEST - VALUEMK )@@G@@ OF TAG TEST, OR ZERO. @D@@@@C J - DO-LOOP INDEX THROUGH TML )@@G@@HE FACTORS. @B@@@@C K - TEMPORARY VARIABLE. @D@@@@C MM )@@G@@ M - DO-LOOP INDEX THROUGH CODE WORDS. @G@@@@C NCCERR - MN )@@G@@ IN COMMON BLOCK S1CCI, NUMBER OF CONTROL CARD ERRORS.@G@@@@C NCW MO )@@G@@- NUMBER OF CONTROL CARD TYPES IN TABLE, PARAMETER VAR.@G@@@@C MP )@@G@@ NDIM - NUMBER OF DIMENSIONED CELLS IN THE ANALYSIS, =COM( @ @@@@MQ )@@G@@C INFO+8). @C@@@@C NEL - NUMBER OF ELEMENTMR )@@G@@S IN TAG. @E@@@@C NF - NUMBER OF FACTORS INCLUDING ANY ORDMS )@@G@@ERFAC.@G@@@@C NSTOR - TOTAL AMOUNT OF STORAGE NEEDED BY ANALYSIMT )@@G@@S PART AND @A@@@@C ALL OF NWAY1. @G@@@@C NSTOMU )@@G@@RR - TOTAL AMOUNT OF STORAGE NEEDED FOR READ PHASE, THAT @G@@@@C MV )@@G@@ IS SPACE FOR NSTOR1 PLUS SPACE FOR DOUBLE PRECISION @A@@@@MW )@@G@@C SUMS OF SQUARES. @G@@@@C NSTOR1 - AMOUNT OF SMX )@@G@@TORAGE USED BY FACTOR LEVELS, SUMS MATRIX,@G@@@@C COUNTMY )@@G@@S MATRIX, AND MATRIX OF NUMBER OF ZERO CELLS IN @E@@@@C MZ )@@G@@ THE ANALYSIS OF EACH DEPENDENT VARIABLE. @G@@@@C ( ANDNA )@@G@@ TOTAL SUMS OF SQUARES AND CORRECTED SUMS OF @E@@@@C NB )@@G@@ SQUARES AFTER ITS USE IN THE READ PHASE.)@G@@@@C NSTOR2 - SPACENC )@@G@@ FOR INC, NDF, DIV LSQ AND LBA ARRAYS + 1*NUMBER@A@@@@C ND )@@G@@ OF CODE WORDS. @F@@@@C NSTOR3 - SPACE NEEDED IN MEANS PHASE FNE )@@G@@OR SCRATCH ARRAYS.@C@@@@C NV - NUMBER OF INPUT VARIABLES. NF )@@G@@@G@@@@C NVEC - DIMENSIONED(2) VECTOR OF NUMBERS OF WORDS NEEDENG )@@G@@D FOR @G@@@@C SCRATCH ARRAYS IN THE ANALYSIS PHASE. USENH )@@G@@D TO ALLOCAT@G@@@@C COMSTO. NVEC(1)= SPACE FOR INPUT ANI )@@G@@RRAY FROM S1INOB. @E@@@@C NVEC(2)=NSTOR FOR ALL OTHER SNJ )@@G@@CRATCH. @D@@@@C NWE - NUMBER OF WORDS PER ELEMENT OF TAG.NK )@@G@@@G@@@@C OP - PARAMETER VARIABLE, OUTPUT CARD PROCESSOR'S PRONL )@@G@@CESSOR@B@@@@C NUMBER FOR S1CCPD. @F@@@@C S1CCNM )@@G@@FS - FIRST 16 PROCESSOR, HANDLES CONTROL CARDS. @G@@@@C NN )@@G@@ RETURNS CONTROL AFTER BEGINDATA CARD HAD BEEN READ, @C@@@@C NO )@@G@@ OR ENDOFFILE ENCOUNTERED. @C@@@@C S1GTAG - RETRINP )@@G@@EVE POINTERS TO TAG. @B@@@@C S1GVAL - RETRIEVE VALUE OF TAG. NQ )@@G@@@F@@@@C S1STOR - PASS REQUIREMENTS FOR LARGE SCRATCH ARRAYS INTONR )@@G@@@G@@@@C SYSTEM ROUTINES, SO THAT TAG COMSTO CAN BE ALLONS )@@G@@CATED @G@@@@C S9DNPF - NWAY1 DESIGN CARD PROCESSOR, CALLED HERE NT )@@G@@TO CREATE @G@@@@C CODE WORDS FOR A FULLY CROSSED DESINU )@@G@@GN IF NO CODE OR @C@@@@C DESIGN CARD IN THE DECK. NV )@@G@@@[@@@@C @^@@@@C****************** @[@@@@C @D@@@@C NWAYNW )@@G@@1 USE OF TAGGED STORAGE IN ALL ROUTINES. @[@@@@C @^@@@@C***********NX )@@G@@******* @[@@@@C @G@@@@C 'CELLVA' - IS CREATED BY S1ENST IFNY )@@G@@ CELLVAR IS ON THE OUTPUT CARD@[@@@@C @G@@@@C 'CROSSD' - IS CRNZ )@@G@@EATED BY S1ENST IF CROSSDFIXDF APPEARS ON ANALYS@^@@@@C OA )@@G@@ CARD.@G@@@@C 'NSTOR' - IS CREATED BY S9OUTP WITH THE NUMBER OF WOB )@@G@@ORDS OF @F@@@@C STORAGE NEEDED IN MATRICES FOR MEANOC )@@G@@S TABLES. @G@@@@C 'NVARS' - IS RETRIEVED FOR THE NUMBER OF INPUOD )@@G@@T VARIABLES DEFINE@G@@@@C THIS IS REALLY THE NUMBER OF OE )@@G@@TRANSFORMED VARIABLES @B@@@@C AFTER TRANSFORMATIONS. OF )@@G@@@G@@@@C 'ONEWAY' - IS CREATED BY S1ENST IF ONEWAYMEANS APPEARS ON OG )@@G@@THE @A@@@@C OUTPUT CARD. @G@@@@C 'OPMEAN' -OH )@@G@@ IS CREATED BY S9OUTP TO HOLD THE MODIFIER LISTS OF @C@@@@C OI )@@G@@ M OR MEANS CONTROL WORDS. @G@@@@C 'POOL' - IS CREATED OJ )@@G@@BY S1ENST IF THE POOL CONTROL WORD APPEARS@C@@@@C AND COK )@@G@@ONTAINS ITS MODIFIER. @G@@@@C 'S9CODE' - IS CREATED BY S9CODP OROL )@@G@@ S9DNPF WITH THE CODE WORDS @F@@@@C THAT SPECIFY WHATOM )@@G@@ TO PRINT INTHE ANOVA TABLE. @G@@@@C 'S9ICOD' - IS CREATED BY S9DON )@@G@@NPF TO HOLD AN ARRAY CALLED IVEC. @G@@@@C 'S9INFO' - IS CREATED OO )@@G@@BY S9ANPF WITH INFORMATION ON THE ANALYSIS@C@@@@C SUMMAOP )@@G@@RY OF USE OF S9INFO @A@@@@C WORD: USE: @D@@@@OQ )@@G@@C 0) NUMBER OF FACTOR VARIABLES. @G@@@@C OR )@@G@@ 1) =0 IF NO ORDERFAC, =NUMBER OF LEVELS IF ORDERFAC @D@@@@C OS )@@G@@ 2) NAME OF ORDERFAC, IF ANY, WORD 1@D@@@@C OT )@@G@@ 3) NAME OF ORDERFAC, IF ANY, WORD 2@D@@@@C 4) NUMBER OOU )@@G@@F DEPENDENT VARIABLES. @A@@@@C 5) NPEEL, =0 @A@@@@OV )@@G@@C 6) NBADRC, =0 @F@@@@C 7) =0 IF -0OW )@@G@@ IS MISSING DATA, =1 IF -0 IS =0 @D@@@@C 8) NUMBER OOX )@@G@@F CELLS IN THE ANALYSIS.@F@@@@C 9) NUMBER OF WORDS OF SOY )@@G@@TORAGE IN IX ALLOCATED. @G@@@@C 10-21) NUMBER OF LEVELSOZ )@@G@@ LEGAL FOR EACH OF 12 FACTORS.@G@@@@C 22-33) LISTFV = IPA )@@G@@NPUT VARIABLE NUMBERS OF FACTORS. @G@@@@C 34-34+NVARSPB )@@G@@) - LISTDV- NUMBER OF DEPENDENT VARIABLE @G@@@@C PC )@@G@@ FOR THIS VARIABLE OR ZERO IF @D@@@@C PD )@@G@@ NOT A DEPVAR.@G@@@@C 34+NVARS-34PE )@@G@@+2*NVARS) - ALLOCATED ONLY IF ORDERFAC @G@@@@C PF )@@G@@ SPECIFIED. READDV, NUMBER OF THIS @G@@@@C PG )@@G@@ VARIABLE AS A LEVEL OF ORDERFAC. @G@@@@C 'TESPH )@@G@@T' - IS RETRIEVED TO TELL WHETHER DIAGNOSTIC OUTPUT IS TO @G@@@@C PI )@@G@@ BE PRINTED. CREATED IN SZEROS IF TEST OR SYSTES @G@@@@PJ )@@G@@C SPECIFIED ON BEGINPROG CARD, TEST IS A ONE WORD LONG PK )@@G@@@F@@@@C TAG THAT IS =1 IF TEST SPECIFIED, =2 IF SYSTES PL )@@G@@@G@@@@C SPECIFIED. NWAY1 DOEN'T CHANGE ITS ACTIONS BASEPM )@@G@@D ON @F@@@@C WHICH IS PRESENT ONLY IF EITHER IS PRESENPN )@@G@@T. @G@@@@C 'TWOWAY' - IS CREATED BY S1ENST IF CONTROL WORD TWOWPO )@@G@@AYMEANS @C@@@@C APPEARS ON THE OUTPUTCARD. @G@@@@PP )@@G@@C 'VNAMES' - IS RETRIEVED TO GET THE FACTORS VARIABLE NAMES IF THEPQ )@@G@@@A@@@@C THEY HAVE SUCH. @^@@@@C****************** PR )@@G@@@[@@@@C @B@@@@C NWAY1 DISK I/O USAGE SUMMARY. @[@@@@C PS )@@G@@@^@@@@C****************** @[@@@@C @G@@@@C UNIT -1 - IS USPT )@@G@@ED BY THE STATJOB SYSTEM TO BUFFER BCDTAPE IF @C@@@@C PU )@@G@@ PADDING CHECKING REQUIRES IT.@G@@@@C UNIT 0 - IS USED BY STATJOPV )@@G@@B SYSTEM TO WRITE ADD FILE AND TAGS @E@@@@C OUT ON DISKPW )@@G@@ TO PASS TO ANALYSIS PHASE. @A@@@@C UNIT 1 - USED BY NWAY1 PX )@@G@@@F@@@@C IN THE ANALYSIS PHASE TO HOLD SINGLE PRECISION PY )@@G@@@G@@@@C VARIANCES THAT MUST BE SAVED FROM READ PHASE TOPZ )@@G@@ THE @A@@@@C MEANS PHASE. @G@@@@C UNIT 2 - QA )@@G@@ IS USED TO HOLD THE LABELS FOR THE ANOVA TABLE. THE @G@@@@C QB )@@G@@ FORMAT OF THIS FILE IS AS FOLLOWS. THE FIRST WORD OF @G@@@@C QC )@@G@@ EACH ENTRY IS THE NUMBER OF WORDS IN THE ENTRY. THE @G@@@@QD )@@G@@C SUBSEQUENT N WORDS ARE WHAT TO PRINT ON A LINE OF THEQE )@@G@@@B@@@@C TABLE, IN FIELDATA. @[@@@@C @^@@@@C*****QF )@@G@@************* @A@@@@ CALL S1CCFS(CCTABL,NCW,0,0) @C@@@@ QG )@@G@@CALL S1GTAG('S9INFO',INFO,NWE,NEL,$100) @#@@@@ ITEST=0 @B@@@@QH )@@G@@ CALL S1GVAL('TEST',ITEST,$10,$10) @#@@@@10 CONTINUE @#@@@@QI )@@G@@ GO TO 110 @^@@@@100 NCCERR=NCCERR+1 @C@@@@110 CALL S1GTAG(QJ )@@G@@'S9CODE',ICOD,NWE,NEL,$120) @#@@@@ GO TO 125 @ @@@@120 IF(NCCQK )@@G@@ERR.GT.0)GO TO 125@#@@@@ IDUMY=0 @D@@@@ CALL S9DNPF(IDUMY,QL )@@G@@IDUMY,IDUMY,IDUMY,NCCERR) @#@@@@125 CONTINUE @]@@[@ NEL=0 QM )@@G@@@C@@@@ CALL S1GTAG('S9CODE',ICOD,NWE,NEL,$160) @A@@@@C DETERMQN )@@G@@INE TOTAL STORAGE FOR @^@@@@C A. READ @^@@@@C BQO )@@G@@. ANALYSIS @^@@@@C C. MEANS @#@@@@C READ STORAGE@B@@@@QP )@@G@@ CALL S1GVAL('NVARS',NV,$400,$400) @#@@@@ NF=COM(INFO)@A@@@@QQ )@@G@@ IF(COM(INFO+1).GT.0)NF=NF+1 @#@@@@ NSTOR1=NF @B@@@@ QR )@@G@@CALL S1GVAL('TEST',ITEST,$128,$128) @#@@@@128 CONTINUE @^@@@@ QS )@@G@@DO 130 I=1,NF @A@@@@130 NSTOR1=NSTOR1+COM(INFO+9+I) @#@@@@ QT )@@G@@NSTID=NSTOR1@^@@@@ NDIM=COM(INFO+8) @ @@@@ IF(NDIM.LT.4)NDIM=QU )@@G@@4 @B@@@@ NSTOR1=NSTOR1+(1+3*NDIM)*COM(INFO+4)@B@@@@ NSTORRQV )@@G@@=NSTOR1+2*NDIM*(COM(INFO+4)+2)@A@@@@ IF(ITEST.NE.0)PRINT 135,NSTORRQW )@@G@@@E@@@@135 FORMAT('0 STORAGE REQUIRED FOR READ PHASE= ',I21) @^@@@@QX )@@G@@C ANALYSIS STORAGE @A@@@@ NSTOR1=NSTOR1+4*COM(INFO+4) @#@@@@QY )@@G@@ NSTOR=0 @^@@@@ ISHIFT=8**(12-NF) @^@@@@ DO 145 M=1,NQZ )@@G@@EL @ @@@@ K=COM(ICOD-1+M)*ISHIFT @]@@@@ K=K*4 @#@@@@ RA )@@G@@IFLAG=0 @#@@@@ ISTOR=1 @^@@@@ DO 140 J=1,NF @A@@@@RB )@@G@@ IF(FLD(0,1,K).EQ.0)GO TO 137 @ @@@@ IF(IFLAG.EQ.0)GO TO 140 RC )@@G@@@A@@@@ ISTOR=ISTOR*COM(INFO+9+J) @#@@@@ GO TO 140 @#@@@@RD )@@G@@137 IFLAG=1 @]@@@@140 K=K*8 @ @@@@145 NSTOR=NSTOR+2*ISTOR+5 RE )@@G@@@^@@@@ NSTOR=NSTOR+NEL @^@@@@ NSTOR2=NEL*(NF+5) @A@@@@ RF )@@G@@NSTOR=NSTOR2+NSTOR1+NSTOR @A@@@@ IF(ITEST.NE.0)PRINT 150,NSTOR RG )@@G@@@E@@@@150 FORMAT('0 STORAGE REQUIRED FOR ANALYSIS PHASE= ',I17) @^@@@@RH )@@G@@C MEANS STORAGE @#@@@@ NSTOR3=0 @C@@@@ CALL S1GVAL(RI )@@G@@'NSTOR',NSTOR3,$160,$160) @B@@@@ NSTOR3=NDIM+5*NSTOR3+NSTOR2+NSRJ )@@G@@TOR1 @#@@@@ IDATSB=0 @C@@@@ CALL S1GVAL('DATSUB',IDATSB,$1RK )@@G@@52,$152) @C@@@@ 152 IF(IDATSB .NE. 0) NSTOR3=NSTOR3+3*NDIM @A@@@@RL )@@G@@ IF(ITEST.NE.0)PRINT 155,NSTOR3@D@@@@C ONE MORE WORD FOR MORE STORARM )@@G@@GE IN ALALYSIS NOW. @^@@@@ NSTOR3=NSTOR3+1 @E@@@@155 FORMATRN )@@G@@('0 STORAGE REQUIRED FOR MEANS PHASE= ',I20) @B@@@@160 IF(NSTOR3.GTRO )@@G@@.NSTOR)NSTOR=NSTOR3 @B@@@@ IF(NSTORR.GT.NSTOR)NSTOR=NSTORR RP )@@G@@@#@@@@ NVEC(1)=NV @^@@@@ NVEC(2)=NSTID @^@@@@ NVEC(3RQ )@@G@@)=NSTID @^@@@@ NVEC(4)=NSTOR @#@@[@ EMSCOR=0 @B@@[@RR )@@G@@ CALL S1GTAG('EMS',DUM,DUM,DUM,$200) @ @@[@ EMSCOR=NEL*(NEL+1)RS )@@G@@/2 @^@@[@ 200 NVEC(5)=EMSCOR @^@@[@ NVEC(6)=EMSCOR @ @@[@RT )@@G@@ CALL S1STOR(6,NVEC) @^[@@@ COM(INFO+9)=NSTOR @#@@@@400 RU )@@G@@CONTINUE @]@@@@ RETURN@[@@@@C @]@@@@ END ___ GO TO RV )@@G@@125 @ @@@@120 IF(NCC*[S@@@*SDFF*@^@@@@ SUBROUTINE S1IDCK @ @@@@RW )@@G@@ IMPLICIT INTEGER (A-Z) @[@@@@C @G@@@@C SUBROUTINE TO TRX )@@G@@EST IDVAR SPECIFIED ON THE INPUT CONTROL CARD. @[@@@@C @^@@@@ RY )@@G@@INCLUDE CCI,LIST @[@@@@C @#@@@@ COMMON X(1) @[@@@@C @B@@@@RZ )@@G@@ CALL S1GTAG('IDVAR',FW,NWE,NEL,$100)@A@@@@ IF(X(FW) .EQ. 4) GSA )@@G@@O TO 30 @A@@@@ IF(X(FW) .NE. 1) GO TO 100 @#@@@@ VI=X(FSB )@@G@@W+1) @ @@@@ CALL S1CKVI(VI,$20) @#@@@@ GO TO 50 @B@@@@SC )@@G@@ 20 CALL S1MSG4(366,VI,'IDVAR',' ')@^@@@@ 25 NCCERR=NCCERR+1 SD )@@G@@@#@@@@ GO TO 100 @A@@@@ 30 CALL S1CKVN(X(FW+1),VI,$40) @#@@@@SE )@@G@@ GO TO 50 @E@@@@ 40 CALL S1MSG5(367,X(FW+1),X(FW+2),'IDVAR',' SF )@@G@@ ') @#@@@@ GO TO 25 @#@@[@ 50 X(FW)=VI*2 @A[@@@ SG )@@G@@CALL S1GTVT(VI,VTYP,$100) @A@@[@ IF(VTYP .EQ. 1) X(FW)=X(FW)+1 SH )@@G@@@]A@@@ 100 RETURN@]@@@@ END ___@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@*[@@@@*SDFF*@C@@@@ SUBROUTINE S11CCV(NUMVARSK )@@G@@,IFLD,NCARD,NERR) @A@@@@ DIMENSION IFLD(11),IFLDS(12) @#@@@@ SL )@@G@@COMMON X(1) @ @@@@ IMPLICIT INTEGER(A-Z) @^@@@@ DATA NOVARL/SM )@@G@@0/ @[@@@@C @D@@[@C THIS SUBROUTINE PROCESSES THE VLABEL CASN )@@G@@RD @[[@@@C @ @@@@ IF(NOVARL.NE.0) GO TO 2@B@@@@ CALL SSO )@@G@@1STFT('NOVARL',LVARL,1,1,$999)@A@@@@ 2 IF(NCARD.EQ.1) GO TO 10 SP )@@G@@@#@@@@ NERR=NERR+1 @^@@[@ CALL S1PCHD(1) @#@@@@ PRINT SQ )@@G@@5 @G@@[@ 5 FORMAT(' ***** PICT1 ERROR. CONTINUATION CARDS ARE NOSR )@@G@@T ALLOWED FO@ @@[@ -R THE VLABEL CARD') @E#@@@ 10 IF(NOVARL.EQSS )@@G@@.0) CALL S1IODR(2,'REWIND',0,AREA,LEND) @ @@[@ IF(NUMVAR .EQ. 0) ST )@@G@@RETURN@ @@[@ CALL S1CKVI(NUMVAR,$800)@^@@@@ IFLDS(1)=NUMVAR SU )@@G@@@#@@@@ DO 15 I=1,11@^@@@@ 15 IFLDS(I+1)=IFLD(I)@B@@@@ CALL SSV )@@G@@1IODR(2,'WRITE',12,IFLDS,LEND)@^@@@@ NOVARL=NOVARL+1 @^@@@@ SW )@@G@@X(LVARL)=NOVARL @]@@@@ RETURN@#@@[@ 800 NERR=NERR+1 @^@@[@ SX )@@G@@CALL S1PCHD(1) @^@@[@ PRINT 810,NUMVAR @G@@[@ 810 FORMAT(' ***SY )@@G@@** PICT1 ERROR. THERE IS NO VARIABLE NUMBER',I8) @]@@[@ RETURNSZ )@@G@@@#@@@@ 999 PRINT 998 @D@@@@ 998 FORMAT('0***** LACK OF SPACE IN BLANTA )@@G@@K COMMON') @]@@@@ RETURN@]@@@@ END ___@@@@@@@@@@@@@@@@@@@@@TB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@TC )@@G@@*[S@@@*SDFF*@E@@@@ SUBROUTINE S17HST(NCARD,IFLD,SCR,SCR1,LSCR,NERR,TD )@@G@@$) @D@@@@ DIMENSION IFLD(2),SCR(2),TABLE(60),CTYPE(2) @A@@@@TE )@@G@@ DIMENSION NAME(2),FLGARR(100) @C@@@@ DIMENSION WADDR(100),INTTF )@@G@@MAX(100),ADDR(100)@^@@@@ INCLUDE CCI,LIST @#@@@@ COMMON X(2)TG )@@G@@@C@@@@ INTEGER ADDR,WADDR,SCR, CONST,FLGARR,TABLE@B@@@@ EQUIVATH )@@G@@LENCE (IMIN,VMIN),(IMAX,VMAX) @A@@@@ DIMENSION ADDR1(100),SCR1(600)TI )@@G@@@G@@@@ EQUIVALENCE (BASE1,NBASE), (ADDR(1),ADDR1(1)),(STOR1,MSTORTJ )@@G@@) @#@@@@ LOGICAL OTF @E@@@@ DATA CTYPE(1)/4HHIST/,ISTAN/30TK )@@G@@/,MAXST/ 700/,CONST/10/ @ @@@@ DATA (TABLE(I),I=1,60)/ @E@@@@ *TL )@@G@@7HNODIST ,-2,6,1,105 ,0,31,-999999999,999999999, @E@@@@ *7HNORMTM )@@G@@AL ,-2,6, 701,105 ,0,31,-999999999,999999999, @E@@@@ *7HBETA ,-2TN )@@G@@,6,1401,105 ,0,31,-999999999,999999999, @E@@@@ *7HGAMMA ,-2,6,210TO )@@G@@1,105 ,0,31,-999999999,999999999, @E@@@@ *7HPOISSON,-2,6,2801,105 TP )@@G@@ ,0,31,-999999999,999999999, @D@@@@ *7HALPHA ,-2,0,3501,105 ,1,-TQ )@@G@@1,1,999999999/ @]@@@@ HELP=0@]@@@@ NERR=0@#@@@@ NBASE=TR )@@G@@1 @#@@@@ ITEST=0 @B@@@@ CALL S1GVAL('TEST',ITEST,$10,$TS )@@G@@10) @#@@@@ 10 NVARS1=NVARS@A@@@@ IF(NTVARS.NE.0)NVARS1=NTVARS TT )@@G@@@A@@@@ IF(NVARS1.LE.100)GO TO 15 @^@@@@ CALL S1PCHD(2) TU )@@G@@@^@@@@ PRINT 9999,NVARS1 @G@@@@9999 FORMAT('0*****UNISTAT1 ERROR. TV )@@G@@A MAXIMUM OF 100 VARIABLES IS ALLOWE@ @@@@ *D. NO. OF VARS=',I5) TW )@@G@@@#@@@@ NERR=NERR+1 @#@@@@ NVARS1=100 @#@@@@15 CONTINUE TX )@@G@@@E@@@@ CALL S1ENDC(CTYPE,IFLD,NCARD,SCR,LSCR,LEND,NERR1,$997)@^@@@@TY )@@G@@ NERR=NERR+NERR1 @ @@@@ IBEG=MAX(LEND+1,601) @^@@@@ TZ )@@G@@LLSCR=LSCR-IBEG+1 @F@@@@ CALL S1ENST(CTYPE,SCR,LEND,TABLE,6,0,SCR(IUA )@@G@@BEG),LLSCR,TSTOR, @]@@@@ *NERR1)@^@@@@ NERR=NERR+NERR1 @^@@@@UB )@@G@@ DO 20 J=1,NVARS1 @#@@@@ ADDR(J)=0 @#@@@@ WADDR(J)=0 UC )@@G@@@#@@@@ 20 INTMAX(J)=0 @[@@@@C @G@@@@C FLAG IN FLGARR IS SETUD )@@G@@ TO 1 FOR ALPHANUMERIC,SET TO 0 FOR NUM. @#@@@@C VARIABLES@[@@@@UE )@@G@@C @^@@@@ DO 25 J=1,NVARS1 @^@@[@ CALL S1CKVI(J,$26)@ @@[@UF )@@G@@ CALL S1GTVT(J,ITYPE,$26)@^[@@@ FLGARR(J)=ITYPE-1 @#@@@@ 25 UG )@@G@@CONTINUE @#@@[@26 CONTINUE @[@@@@C @C@@@@C IF OTF OPUH )@@G@@TION NOT USED OTF IS TRUE @#@@@@ OTF=.TRUE. @B@@@@ CALL SUI )@@G@@1GVAL('OTF',IDUM,$30,$30) @#@@@@ OTF=.FALSE. @[@@@@C @E@@@@UJ )@@G@@C LOOP TO SEARCH FOR ALL CONTROL WORDS EXCEPT ALPHA @A@@@@C UK )@@G@@ I IS DISTRIBUTION TYPE @[@@@@C @#@@@@ 30 II=IBEG @#@@@@UL )@@G@@ DO 200 I=1,5@[@@@@C @D@@@@C J IS NUMBER OF REPETITIONS UM )@@G@@OF A CONTROL WORD @[@@@@C @#@@@@ J=SCR(II) @ @@@@ IF(J.EUN )@@G@@Q.0) GO TO 185 @#@@@@ 35 JBEG=II+3 @#@@@@ DO 180 K=1,J@#@@@@UO )@@G@@ JJ=JBEG @[@@@@C @C@@@@C LOOP ON REPETITIONS OF A COUP )@@G@@NTROL WORD @[@@@@C @]@@@@ NMOD=0@^@@@@ NMODF=SCR(JJ-1) UQ )@@G@@@[@@@@C @D@@@@C NMODF IS EQUAL TO NUMBER OF MODIFIERS FOUND UR )@@G@@@[@@@@C @D@@@@C FIND OUT WHICH INTERVAL TYPE IS SPECIFIED US )@@G@@@[@@@@C @ @@@@ IF(NMODF.NE.0) GO TO 50 @B@@@@ IF(.NOT.OTF UT )@@G@@.AND. I.NE.5) CALL ERR1 @ @@@@ DO 40 IVAR =1,NVARS1 @A@@@@ UU )@@G@@IF(FLGARR(IVAR).NE.0) GO TO 40@#@@@@ INNUM=ISTAN @#@@@@ INTYPEUV )@@G@@=1 @#@@@@ CALL PUTVAR @#@@@@ 40 CONTINUE @#@@@@ GO TO UW )@@G@@170 @A@@@@ 50 IF(NMODF.EQ.NMOD) GO TO 70 @#@@@@ IDUM=SCR(JJ)UX )@@G@@@#@@@@ NMOD=NMOD+1 @ @@@@ IF(IDUM.NE.1) GO TO 60 @#@@@@ UY )@@G@@JJ=JJ+2 @#@@@@ GO TO 50 @ @@@@ 60 IF(IDUM.NE.3) GO TO 65 UZ )@@G@@@#@@@@ JJ=JJ+3 @#@@@@ GO TO 50 @ @@@@ 65 IF(IDUM.NE.4VA )@@G@@) GO TO 68 @#@@@@ JJ=JJ+3 @#@@@@ GO TO 50 @ @@@@ 68 VB )@@G@@IF(IDUM.NE.5) GO TO 997 @ @@@@ 70 IF(NMODF-NMOD-1) ,80,75 @B@@@@ VC )@@G@@IF(.NOT.OTF .AND. I.NE.5) CALL ERR1 @#@@@@ INNUM=ISTAN @#@@@@ VD )@@G@@INTYPE=1 @#@@@@ GO TO 100 @#@@@@ 75 INTYPE=3 @A@@@@ VE )@@G@@IF(SCR(JJ+3).NE.5) GO TO 71 @ @@@@ IF(NMODF-NMOD-4) ,76 @#@@@@VF )@@G@@ 71 NERR=NERR+1 @^@@@@ CALL S1PCHD(2) @#@@@@ PRINT 1000 VG )@@G@@@#@@@@ GO TO 185 @^@@@@ 76 IMIN=SCR(JJ+5) @^@@@@ IMAX=SVH )@@G@@CR(JJ+7) @A@@@@ IF(SCR(JJ+4).EQ.1) VMIN=IMIN @A@@@@ IF(SCRVI )@@G@@(JJ+6).EQ.1) VMAX=IMAX @ @@@@ IF(VMIN-VMAX)90,,79 @#@@@@ VJ )@@G@@NERR=NERR+1 @^@@@@ CALL S1PCHD(2) @#@@@@ PRINT 530 @G@@@@VK )@@G@@ 530 FORMAT('0*****UNISTAT1 ERROR.MINIMUM AND MAXIMUM SPECIFIED ON HISTVL )@@G@@@A@@@@ * CARD SHOULD NOT BE EQUAL.') @#@@@@ 79 DUM=VMIN @#@@@@VM )@@G@@ VMIN=VMAX @#@@@@ VMAX=DUM @#@@@@ GO TO 90 @#@@@@VN )@@G@@ 80 INTYPE=2 @B@@@@ IF(.NOT.OTF .AND. I.NE.5) CALL ERR1 @^@@@@VO )@@G@@ 90 INNUM=SCR(JJ+2) @[@@@@C @A@@@@C NOW STORE ALL INFORMAVP )@@G@@TION @[@@@@C @#@@@@ 100 JJ=JBEG @]@@@@ NMOD=0@A@@@@ 110 VQ )@@G@@IF(NMOD.EQ.NMODF) GO TO 170 @#@@@@ IDUM=SCR(JJ)@#@@@@ NMOD=NVR )@@G@@MOD+1 @ @@@@ IF(IDUM.NE.1) GO TO 120 @^@@@@ IVAR=SCR(JJ+1) VS )@@G@@@#@@@@ JJ=JJ+2 @C@@@@111 IF(IVAR.GT.0.AND.IVAR.LE.100)GO TO 1VT )@@G@@16 @#@@@@ 115 CALL ERR2 @#@@@@ GO TO 110 @B@@@@ 116 IF(FLGVU )@@G@@ARR(IVAR).EQ.0) GO TO 117 @#@@@@ CALL ERR3 @#@@@@ GO TO VV )@@G@@110 @#@@@@ 117 CALL PUTVAR @#@@@@ GO TO 110 @ @@@@ 120 IF(IDUVW )@@G@@M.NE.3) GO TO 150 @^@@@@ IN1=SCR(JJ+1) @^@@@@ IN2=SCR(JJ+2VX )@@G@@) @#@@@@ JJ=JJ+3 @B@@@@ IF(IN1.GT.0.AND.IN2.LE.100)GO VY )@@G@@TO 121@^@@@@ CALL S1PCHD(2) @^@@@@ PRINT 9998,IN1,IN2@G@@@@VZ )@@G@@9998 FORMAT('0*****UNISTAT1 ERROR. THE MODIFIER',I4,'-',I4,' REFERS TO WA )@@G@@@D@@@@ *A VARIABLE NUMBER OUTSIDE THE RANGE 1-100') @#@@@@ WB )@@G@@NERR=NERR+1 @#@@@@ GO TO 110 @#@@@@121 CONTINUE @ @@@@ WC )@@G@@DO 140 IVAR=IN1,IN2 @B@@@@ 135 IF(FLGARR(IVAR).EQ.0) GO TO 136 WD )@@G@@@#@@@@ CALL ERR3 @#@@@@ GO TO 140 @#@@@@ 136 CALL PUTVAR WE )@@G@@@#@@@@ 140 CONTINUE @#@@@@ GO TO 110 @ @@@@ 150 IF(IDUM.NE.4WF )@@G@@) GO TO 160 @^@@@@ NAME(1)=SCR(JJ+1) @^@@@@ NAME(2)=SCR(JJ+2) WG )@@G@@@#@@@@ JJ=JJ+3 @A@@@@ CALL S1CKVN(NAME,IVAR,$154) @#@@@@WH )@@G@@ GO TO 111 @#@@@@ 154 NERR=NERR+1 @^@@@@ CALL S1PCHD(2) WI )@@G@@@^@@@@ PRINT 570,NAME @#@@@@ GO TO 110 @ @@@@ 160 IF(IDUWJ )@@G@@M.NE.5) GO TO 165 @#@@@@ JJ=JJ+3 @ @@@@ IF(INTYPE.EQ.3) JJWK )@@G@@=JJ+5 @#@@@@ GO TO 170 @#@@@@ 165 NERR=NERR+1 @^@@@@ CALL SWL )@@G@@1PCHD(2) @#@@@@ PRINT 1000 @#@@@@ 170 JBEG=JJ+2 @#@@@@ 180 WM )@@G@@CONTINUE @#@@@@ 185 II=II+MAXST @#@@@@ 200 CONTINUE @[@@@@C WN )@@G@@@B@@@@C PROCESSING OF ALPHA CONTROL WORD @A@@@@C J IS NUMBWO )@@G@@ER OF REPETITIONS @[@@@@C @#@@@@ J=SCR(II) @ @@@@ IF(J.EWP )@@G@@Q.0) GO TO 245 @#@@@@ JJ=II+1 @#@@@@ DO 240 K=1,J@^@@@@WQ )@@G@@ NMODF=SCR(JJ) @#@@@@ JJ=JJ+1 @^@@@@ 220 DO 230 KK=1,WR )@@G@@NMODF @#@@@@ IVAR=SCR(JJ)@B@@@@ IF(FLGARR(IVAR).EQ.0) GO TO 63WS )@@G@@0 @#@@@@ CALL PUTALP @#@@@@ 229 JJ=JJ+1 @#@@@@ 230 CONTINWT )@@G@@UE @#@@@@ 240 CONTINUE @^@@@@ 245 NBASE=NBASE-1 @^@@@@ WU )@@G@@NW=NBASE+NVARS1 @B@@@@ CALL S1STFT('HIST',IDUM,1,NW,$997) @[@@@@WV )@@G@@C @F@@@@C ADDR1 IS STILL INTEGER ALTHOUGH STORED IN REAL ARRAWW )@@G@@Y @F@@@@C SCR1 IS REAL, MIN AND MAX ARE SO ALWAYS STORED AS RWX )@@G@@EAL @[@@@@C @^@@@@ DO 300 I=1,NVARS1 @^@@@@ X(IDUM)=ADDRWY )@@G@@1(I) @#@@@@ IDUM=IDUM+1 @#@@@@ 300 CONTINUE @^@@@@ DO 320WZ )@@G@@ I=1,NBASE @^@@@@ X(IDUM)=SCR1(I) @#@@@@ IDUM=IDUM+1 @#@@@@XA )@@G@@ 320 CONTINUE @#@@@@ MSTOR=0 @ @@@@ IF(.NOT.OTF) GO TOXB )@@G@@ 360 @^@@@@ DO 340 I=1,NVARS1 @^@@@@ IDUM=INTMAX(I) @A@@@@XC )@@G@@ IF(IDUM.GT.MSTOR) MSTOR=IDUM @#@@@@ 340 CONTINUE @#@@@@ XD )@@G@@GO TO 380 @^@@@@ 360 DO 365 I=1,NVARS1 @ @@@@ MSTOR=MSTOR+INTMAXXE )@@G@@(I) @#@@@@ 365 CONTINUE @B@@@@ 380 CALL S1STFT('MSTOR',IDUM,1,2,$XF )@@G@@997) @[@@@@C @C@@@@C STOR1 AND BASE1 CONTAIN INTEGER VALUES XG )@@G@@@[@@@@C @^@@@@ X(IDUM)=STOR1 @^@@@@ X(IDUM+1)=BASE1 XH )@@G@@@ @@@@ IF(ITEST.EQ.0) RETURN @A@@@@ PRINT 321,(ADDR(I),I=1,NXI )@@G@@VARS1)@A@@@@ PRINT 321,(SCR(I),I=1,NBASE) @ @@@@ PRINT 341,MSXJ )@@G@@TOR,NBASE @ @@@@ 321 FORMAT((10(1X,O12))) @^@@@@ 341 FORMAT(10I12XK )@@G@@) @]@@@@ RETURN@G@@@@ 570 FORMAT('0*****UNISTAT1 ERROR. ',2A6,XL )@@G@@' IS NOT A VARIABLE NAME.') @#@@@@ 630 NERR=NERR+1 @^@@@@ CALL SXM )@@G@@1PCHD(2) @^@@@@ PRINT 650,IVAR @G@@@@ 650 FORMAT('0*****UNISXN )@@G@@TAT1 ERROR. VARIABLE NO.',I3,' IS NOT AN ALPHANU@F@@@@ *MERIC VARIABXO )@@G@@LE BUT APPEARED IN ALPHA LIST ON HIST CARD.') @#@@@@ GO TO 229 XP )@@G@@@^@@@@997 NERR=NERR+1 @ @@@@ CALL S1SERR('S17HST') @G@@@@XQ )@@G@@ 1000 FORMAT('0*****UNISTAT1 ERROR.SLASHES ON HIST CARD DO NOT MATCH.') XR )@@G@@@#@@@@ RETURN 7 @^@@@@ SUBROUTINE ERR1 @#@@@@ NERR=NXS )@@G@@ERR+1 @^@@@@ CALL S1PCHD(2) @#@@@@ PRINT 510 @G@@@@ 510 XT )@@G@@FORMAT('0*****UNISTAT1 ERROR. USING OTF OPTION MIN AND MAX MUST BE@A@@@@XU )@@G@@ * SPECIFIED ON HIST CARD.') @]@@@@ RETURN@^@@@@ SUBROUXV )@@G@@TINE ERR2 @#@@@@ NERR=NERR+1 @^@@@@ CALL S1PCHD(2) @^@@@@XW )@@G@@ PRINT 540,IVAR @G@@@@ 540 FORMAT('0*****UNISTAT1 ERROR.VALUE 'XX )@@G@@,I10,' IS NOT VARIABLE NUMBER.@]@@@@ *') @]@@@@ RETURN@^@@@@XY )@@G@@ SUBROUTINE ERR3 @#@@@@ NERR=NERR+1 @^@@@@ CALL S1PCHD(XZ )@@G@@2) @^@@@@ ID2 =(I-1)*10+1 @#@@@@ ID1=ID2 +1 @C@@@@ YA )@@G@@PRINT 610,IVAR,TABLE(ID2 ),TABLE(ID1) @G@@@@ 610 FORMAT('0*****UNISYB )@@G@@TAT1 ERROR.VARIABLE NO.',I3,' IS NOT A NUMERIC V@F@@@@ *ARIABLE BUT YC )@@G@@APPEARED IN ',A6,A1, ' LIST ON HIST CARD.') @]@@@@ RETURN@[@@@@YD )@@G@@C @ @@@@C INTERNAL SUBROUTINE @[@@@@C @^@@@@ SUBROUYE )@@G@@TINE PUTVAR @A@@@@ 2000 IF(ADDR(IVAR).EQ.0) GO TO 2010@^@@@@ INDEX=YF )@@G@@WADDR(IVAR) @A@@@@ FLD(18,18,SCR1(INDEX))=NBASE @^@@@@ 2005 FLD(0,YG )@@G@@6, HELP)=I @ @@@@ FLD(6,6, HELP)=INTYPE @C@@@@ IF(INTYPE.EQYH )@@G@@.1 .AND. I.EQ.5) INNUM=38 @A@@@@ IF(INNUM.EQ.0) GO TO 2012 YI )@@G@@@A@@@@ IF(INNUM.GT.38)GO TO 2015 @ @@@@ FLD(12,6, HELP)=INYJ )@@G@@NUM @^@@@@ SCR1(NBASE)=HELP @^@@@@ WADDR(IVAR)=NBASE @C@@@@YK )@@G@@ INTMAX(IVAR)=INTMAX(IVAR)+CONST+INNUM+1 @^@@@@ NBASE=NBASE+YL )@@G@@1 @ @@@@ IF(INTYPE.NE.3) RETURN @ @@@@ IF(I.NE.5) GO TO 2YM )@@G@@007 @#@@@@ NERR=NERR+1 @^@@@@ CALL S1PCHD(2) @#@@@@ YN )@@G@@PRINT 2006 @G@@@@ 2006 FORMAT('0*****UNISTAT1 ERROR. MIN AND MAX SHOULDYO )@@G@@ NOT BE SPECIFIED @A@@@@ *WITH POISSON CONTROL WORD.') @^@@@@ 2007 YP )@@G@@SCR1(NBASE)=VMIN @^@@@@ SCR1(NBASE+1)=VMAX@^@@@@ NBASE=NBASE+YQ )@@G@@2 @]@@@@ RETURN@^@@@@ 2010 ADDR(IVAR)=NBASE @#@@@@ GO TO YR )@@G@@2005 @#@@@@ 2012 NERR=NERR+1 @^@@@@ CALL S1PCHD(2) @#@@@@ YS )@@G@@PRINT 2013 @G@@@@ 2013 FORMAT('0*****UNISTAT1 ERROR. NUMBER OF INTERVALYT )@@G@@S SPECIFIED SHOULD@^@@@@ * NOT BE ZERO.') @]@@@@ RETURN@#@@@@YU )@@G@@2015 NERR=NERR+1 @^@@@@ CALL S1PCHD(2) @#@@@@ PRINT 2016 YV )@@G@@@G@@@@2016 FORMAT('0*****UNISTAT1 ERROR. NUMBER OF INTERVALS SPECIFIED YW )@@G@@SHOULD@^@@@@ X NOT EXCEED 38 .')@]@@@@ RETURN@[@@@@C @ @@@@YX )@@G@@C INTERNAL SUBROUTINE @[@@@@C @^@@@@ SUBROUTINE PUTALP YY )@@G@@@A@@@@ IF(ADDR(IVAR).NE.0) GO TO 3030@^@@@@ 3020 ADDR(IVAR)=NBASE YZ )@@G@@@^@@@@ SCR1(NBASE)=0 @ @@@@ FLD(0,6,SCR1(NBASE))=6 @^@@@@ZA )@@G@@ NBASE=NBASE+1 @]@@@@ 3030 RETURN@]@@@@ END ___ CALLZB )@@G@@ S1SERR('S17HST') @G@@@@ 1000 FORMAT('0*****UNISTAT1 ERROR.SLASHES ON HIZC )@@G@@ST CARD DO NOT MATCH.') *[S@@@*SDFF*@D@@@@ SUBROUTINE S82CMP(CN,CARZD )@@G@@D,NC,SCR,LSCR,NERR,$) @ @@@@ IMPLICIT INTEGER (A-Z) @ @@@@ ZE )@@G@@DIMENSION CARD(1),SCR(1)@[@@@@C @B@@@@C ONEWAY2 COMPARE CARD ZF )@@G@@PROCESSOR. @[@@@@C @G@@@@C COMPARE SPECIFICATIONS ARE WRITTEZG )@@G@@N ON UNIT 6, AS FOLLOWS - @ @@@@C 1. MODEL NUMBER@B@@@@ZH )@@G@@C 2. NUMBER OF SIMPLE EFFECTS@E@@@@C 3. POINTEZI )@@G@@R TO FIRST SIMPLE EFFECTS SPECS @D@@@@C 4. NUMBER OF TTZJ )@@G@@ESTS WITH MODIFIERS @D@@@@C 5. NUMBER OF TTESTS WITHOUTZK )@@G@@ MODIFIERS @C@@@@C 6. POINTER TO FIRST TTESTS SPECS @A@@@@ZL )@@G@@C 7. NUMBER OF CONTRAST@D@@@@C 8. POINTER TO FZM )@@G@@IRST CONTRAST SPECS @A@@@@C 9. NON-ZERO IF POLYS @B@@@@ZN )@@G@@C 10. Q SPECIFIED WITH POLYS @E@@@@C 11. NUMBERZO )@@G@@ OF R-VALUES SPECIFIED WITH POLYS @B@@@@C 12. POINTER TO FZP )@@G@@IRST R-VALUE@B@@@@C 13. NON-ZERO IF POOLERROR @B@@@@C ZQ )@@G@@ 14. NUMBER OF CI MODIFIERS @ @@@@C 15. CI PERCENT ZR )@@G@@@A@@@@C 16. NUMBER OF ORTHOCON@D@@@@C 17. POINTEZS )@@G@@R TO FIRST ORTHOCON SPECS @A@@@@C 18. NUMBER OF RANGE ZT )@@G@@@C@@@@C 19. POINTER TO FIRST RANGE SPECS @D@@@@C ZU )@@G@@ 19.5 TOTAL NUMBER OF REMAINING SPECS @G@@@@C 20. SIMPLEZV )@@G@@ EFFECTS SPECS - EACH BEGINS WITH THE NUMBER OF @G@@@@C ZW )@@G@@ ENTRIES AND CONSISTS OF INTEGERS AND 0 FOR SLASH @G@@@@C ZX )@@G@@ 21. TTESTS SPECS - EACH CONSISTS OF # IN GROUP1, FLAG @G@@@@C ZY )@@G@@ FOR AVERAGE GROUP1, # IN GROUP2, FLAG FOR AVERAGE @F@@@@ZZ )@@G@@C GROUP2, THE CELL NUMBERS FOR GROUP1 AND GROUP2 @G@@@@AA )@@G@@C 22. CONTRASTS SPECS - EACH BEGINS WITH THE NUMBER OF AB )@@G@@@D@@@@C ENTRIES AND CONSISTS OF REAL VALUES@A@@@@C AC )@@G@@ 23. POLYS SPACINGS @G@@@@C 24. ORTHOG SPECS - EACAD )@@G@@H BEGINS WITH THE NUMBER OF ENTRIES @F@@@@C AND CONSISTAE )@@G@@S OF INTEGER POINTERS TO CONTRASTS @ @@@@C 25. RANGE VALUESAF )@@G@@@[@@@@C @[@@@@C @[@@@@C @[@@@@C @A@@@@ COMMON /S82BAG )@@G@@LK/ LCCT,LCCN, @D@@@@ - NSCALE,SCALNO(400),SCALTP(400),SCALEN(4AH )@@G@@00), @A@@@@ - VARSCL(500),VARLIM,VAROVF, @ @@@@ - MDATA,NWHAI )@@G@@EAD,NSCOUT, @ @@@@ - NMODEL,NWMODL,NCOORD,@B@@@@ - MODNO,NFAAJ )@@G@@CT,NCELL,NDEPV,NDVGRP, @ @@@@ - NTABS,NDVTOT,NGRTOT, @ @@@@ -AK )@@G@@ HISTAT,MMCOR,NHISTS, @A@@@@ - DATSAV,CDSAV(5),DVSAV(30), @A@@@@AL )@@G@@ - BAVAR,BABUF,OSIZEM,OSIZEC, @B@@@@ - TA(400),TB(400),TC(40AM )@@G@@0),TW(400) @[@@@@C @^@@@@ COMMON BLCOM(2) @[@@@@C @ @@@@AN )@@G@@ DIMENSION CWSPEC(76) @^@@@@ DATA CWSPEC / @D@@@@ 1AO )@@G@@ 12HSIMEFF ,-2,0,1,100,1,21,1,1000, @D@@[@ 2 12HTTESTSAP )@@G@@ ,-2,0,451,100,0,29,1,1000, @F@@[@ 3 12HCONTRAST ,-2,0AQ )@@G@@,1801,200,1,3,-999999999,999999999, @F]@@@ 4 12HPOLYS ,2,0,AR )@@G@@901,300,0,19,-999999999,999999999, @C@@@@ 5 12HCI ,2,0,AS )@@G@@1201,2,1,11,0,100,@B@@@@ 6 12HPOOLERROR ,2,0,1210,0, @D@@@@AT )@@G@@ 7 12HORTHOCON ,-3,3,1212,100,2,1,1,100, @E@@[@ 8 12HAU )@@G@@RANGE ,2,0,1501,295,1,3,0,999999999/ @[[@@@C @[@@@@C AV )@@G@@@ @@@@ DIMENSION SVSPEC(19) @^@@@@ DIMENSION INFO(2) @#@@@@AW )@@G@@ REAL RVAL @ @@@@ EQUIVALENCE (IVAL,RVAL) @[@@@@C @^@@@@AX )@@G@@C INITIALIZE@[@@@@C @]@@@@ NERR=0@^@@@@ SVSPECAY )@@G@@(1)=MODNO @#@@@@ FACMES=0 @[@@@@C @B@@@@C DECOAZ )@@G@@DE AND CHECK THE CARD @[@@@@C @#@@[@ LAST=2400 @#@@[@ BA )@@G@@LS=LAST+1 @G@@[@ CALL S1ENDC('COMPARE',CARD,NC,SCR(LS),LSCR-LAST,BB )@@G@@LEND,NE,$999) @#]@@@ NERR=NERR+NE@]@@@@ L=LS @B@@[@ 50 BC )@@G@@IF(L .GT. LAST + LEND) GO TO 80 @#[@@@ TYP=SCR(L) @]@@@@ BD )@@G@@L=L+1 @ @@@@ IF(TYP .GT. 0) GO TO 60 @B@@@@ IF(SCR(L) .NE. 'SIBE )@@G@@MPLE') GO TO 65 @G@@@@ IF(SCR(L+1) .NE. 'FFECTS' .AND. SCR(L+1)BF )@@G@@ .NE. 'FFECT') GO TO 65 @^@@@@ SCR(L)='SIMEFF' @^@@@@ SCR(L+BG )@@G@@1)=' ' @#@@@@ GO TO 65 @ @@@@ 60 IF(TYP .GT. 5) GO TO 80 BH )@@G@@@A@@@@ GO TO (70,70,65,65,50), TYP @]@@@@ 65 L=L+1 @]@@@@ 70 BI )@@G@@L=L+1 @#@@@@ GO TO 50 @#@@@@ 80 CONTINUE @G@@[@ CALL SBJ )@@G@@1ENST('COMPARE',SCR(LAST+1),LEND,CWSPEC,8,0,SCR(1),LAST, @#[@@@ -BK )@@G@@ DUM,NE) @#@@@@ NERR=NERR+NE@E@@[@ IF(SCR(449) .NE. 0 .OR.BL )@@G@@ SCR(450) .NE. 0) GO TO 90 @E@@[@ IF(SCR(899) .NE. 0 .OR. SCR(BM )@@G@@900) .NE. 0) GO TO 90 @F@@[@ IF(SCR(2399) .EQ. 0 .AND. SCR(2400BN )@@G@@) .EQ. 0) GO TO 100 @#@@[@ 90 CALL ERROR @#@@[@ PRINT 9095 BO )@@G@@@G@@[@ 9095 FORMAT(' ***** ONEWAY2 ERROR. THERE ARE TOO MANY SIMEFF, TTBP )@@G@@EST, O@G@@[@ -R CONTRAST SPECIFICATIONS FOR ONE SET OF COMPARE CARDSBQ )@@G@@.'/25X, @G@@[@ -'REWRITE THE PROGRAM SO THE SPECIFICATIONS ARE DBR )@@G@@IVIDED BETWEEN SEV@A@@[@ -ERAL SETS OF COMPARE CARDS.') @]@@[@ BS )@@G@@RETURN@[@@@@C @B@@@@C CHECK SIMPLEFFECTS SPECS @[@@@@BT )@@G@@C @#@@@@ 100 NCW=SCR(1) @]@@@@ L=2 @^@@@@ SVSPEC(2)=NCBU )@@G@@W @^@@[@ SVSPEC(3)=LS-LAST @ [@@@ IF(NCW .EQ. 0) GO TO 200BV )@@G@@@#@@@@ CELERR=0 @#@@@@ TWOERR=0 @#@@@@ CALL MULGRP BW )@@G@@@^@@@@ DO 180 I=1,NCW @#@@@@ NMOD=SCR(L) @]@@@@ L=L+1 BX )@@G@@@A@@@@ IF(NMOD .EQ. 0) GO TO 180 @#@@@@ LSAVE=LS @#@@@@BY )@@G@@ LS=LS+1 @]@@@@ LOW=LS@^@@@@ DO 150 J=1,NMOD @#@@@@BZ )@@G@@ CALL NEXTMD @ @@@@ IF(TYP .EQ. 1) GO TO 120@ @@@@ IF(TYPCA )@@G@@ .EQ. 3) GO TO 130@^@@@@ CALL STORE(0,$999)@#@@@@ GO TO 150 CB )@@G@@@A@@@@ 120 IF(NCELL .GT. 0) GO TO 125 @ @@@@ 122 CALL STORE(INFO(1)CC )@@G@@,$999)@#@@@@ GO TO 150 @B@@@@ 125 IF(INFO(1) .LE. NCELL) GO TO 1CD )@@G@@22 @A@@@@ 127 IF(CELERR .NE. 0) GO TO 150 @#@@@@ CELERR=1 CE )@@G@@@#@@@@ CALL ERROR @A@@@@ PRINT 9130,CWSPEC(1),CWSPEC(2)@G@@@@CF )@@G@@ 9130 FORMAT(' ***** ONEWAY2 ERROR. A CELL NUMBER SPECIFIED WITH ',2A6,CG )@@G@@@C@@@@ -' IS GREATER THAN THE NUMBER OF CELLS') @#@@@@ GO TO CH )@@G@@150 @#@@@@ 130 KA=INFO(1) @#@@@@ KB=INFO(2) @C@@@@ IF(KA CI )@@G@@.GT. KB .OR. KA .LE. 0) GO TO 150 @^@@@@ DO 140 K=KA,KB @D@@@@CJ )@@G@@ IF(NCELL .GT. 0 .AND. K .GT. NCELL) GO TO 127 @^@@@@ 140 CALL SCK )@@G@@TORE(K,$999)@#@@@@ 150 CONTINUE @^@@@@ SCR(LSAVE)=LS-LOW @A@@@@CL )@@G@@ IF(TWOERR .NE. 0) GO TO 180 @A@@@@ CALL TSTREP(LOW,LS-1,$16CM )@@G@@0) @#@@@@ GO TO 180 @#@@@@ 160 TWOERR=1 @#@@@@ CALL ECN )@@G@@RROR @A@@@@ PRINT 9160,CWSPEC(1),CWSPEC(2)@G@@@@ 9160 FORMAT(' ***CO )@@G@@** ONEWAY2 ERROR. A CELL IS SPECIFIED MORE THAN ONCE @A@@@@ -WITH ACP )@@G@@ ',2A6,' CONTROL WORD') @#@@@@ 180 CONTINUE @[@@@@C @C@@@@C CQ )@@G@@ BEGIN LOOP TO CHECK TTESTS SPECS @[@@@@C @#@@[@ 200 NCW=SCCR )@@G@@R(451)@]@@[@ L=452 @#]@@@ TTESTA=0 @ @@@@ IF(NCW .EQ. CS )@@G@@0) GO TO 290@#@@@@ MODERR=0 @#@@@@ CELERR=0 @#@@@@ CT )@@G@@TWOERR=0 @^@@[@ SVSPEC(6)=LS-LAST @^[@@@ DO 285 I=1,NCW CU )@@G@@@^@@@@ NMOD=SCR(L+1) @]@@@@ L=L+2 @A@@@@ IF(NMOD .GT.CV )@@G@@ 0) GO TO 215 @^@@@@ TTESTA=TTESTA+1 @A@@@@ IF(TTESTA .NCW )@@G@@E. 2) GO TO 280 @#@@@@ CALL ERROR @#@@@@ PRINT 9210 @G@@@@CX )@@G@@ 9210 FORMAT(' ***** ONEWAY2 ERROR. TTESTS IS SPECIFIED MORE THAN ONCE CY )@@G@@@ @@@@ -WITHOUT MODIFIERS') @#@@@@ GO TO 280 @]@@@@ 215 CZ )@@G@@NG1=0 @]@@@@ AV1=0 @]@@@@ NG2=0 @]@@@@ AV2=0 @#@@@@ DA )@@G@@LSAVE=LS @#@@@@ LS=LS+4 @]@@@@ LOW=LS@[@@@@C @A@@@@DB )@@G@@C CHECK BEFORE THE / @[@@@@C @#@@@@ CALL NEXTMD DC )@@G@@@#@@@@ NMOD=NMOD-1 @ @@@@ IF(TYP .NE. 4) GO TO 230@A@@@@ DD )@@G@@IF(INFO(1) .NE. 'A') GO TO 220@]@@@@ AV1=1 @A@@@@ IF(NMOD .EQ.DE )@@G@@ 0) GO TO 225 @#@@@@ CALL NEXTMD @#@@@@ NMOD=NMOD-1 @#@@@@DF )@@G@@ GO TO 230 @A@@@@ 220 CALL TESTAN(INFO,KEMP,$225) @]@@@@ DG )@@G@@AV1=1 @]@@@@ TYP=1 @#@@@@ INFO(1)=KEMP@#@@@@ GO TO 230 DH )@@G@@@A@@@@ 225 IF(MODERR .NE. 0) GO TO 228 @#@@@@ MODERR=1 @#@@@@DI )@@G@@ CALL ERROR @#@@@@ PRINT 9225 @G@@@@ 9225 FORMAT(' ***** ONEDJ )@@G@@WAY2 ERROR. ONE OR MORE MODIFIERS OF TTESTS ARE@D@@@@ - OUT OF SEQUDK )@@G@@ENCE OR ARE IMPROPERLY SPECIFIED') @A@@@@ 228 IF(NMOD .EQ. 0) GO TO 28DL )@@G@@0 @^@@@@ DO 229 K=1,NMOD @#@@@@ 229 CALL NEXTMD @#@@@@ DM )@@G@@GO TO 280 @ @@@@ 230 IF(TYP .EQ. 1) GO TO 235@ @@@@ IF(TYP .EQ. DN )@@G@@3) GO TO 240@ @@@@ IF(TYP .NE. 5) GO TO 225@#@@@@ GO TO 250 DO )@@G@@@E@@@@ 235 IF(NCELL .GT. 0 .AND. INFO(1) .GT. NCELL) GO TO 237 @ @@@@DP )@@G@@ CALL STORE(INFO(1),$999)@#@@@@ NG1=NG1+1 @#@@@@ GO TO DQ )@@G@@248 @A@@@@ 237 IF(CELERR .NE. 0) GO TO 248 @#@@@@ CELERR=1 DR )@@G@@@#@@@@ CALL ERROR @B@@@@ PRINT 9130,CWSPEC(11),CWSPEC(12) DS )@@G@@@#@@@@ GO TO 248 @#@@@@ 240 KA=INFO(1) @#@@@@ KB=INFO(2) DT )@@G@@@C@@@@ IF(KA .GT. KB .OR. KA .LE. 0) GO TO 248 @^@@@@ DO 245DU )@@G@@ K=KA,KB @D@@@@ IF(NCELL .GT. 0 .AND. K .GT. NCELL) GO TO 237 DV )@@G@@@#@@@@ NG1=NG1+1 @^@@@@ 245 CALL STORE(K,$999)@A@@@@ 248 IF(NMODW )@@G@@D .EQ. 0) GO TO 225 @#@@@@ CALL NEXTMD @#@@@@ NMOD=NMOD-1 DX )@@G@@@#@@@@ GO TO 230 @[@@@@C @A@@@@C CHECK AFTER THE DY )@@G@@/ @[@@@@C @A@@@@ 250 IF(NMOD .EQ. 0) GO TO 225 @#@@@@ DZ )@@G@@CALL NEXTMD @#@@@@ NMOD=NMOD-1 @ @@@@ IF(TYP .NE. 4) GO TO 260EA )@@G@@@A@@@@ IF(INFO(1) .EQ. 'A') GO TO 251@A@@@@ CALL TESTAN(INFO,KEB )@@G@@EMP,$252) @]@@@@ AV2=1 @]@@@@ TYP=1 @#@@@@ INFO(1)=KEMPEC )@@G@@@#@@@@ GO TO 260 @]@@@@ 251 AV2=1 @A@@@@ IF(NMOD .EQ. 0) GOED )@@G@@ TO 225 @#@@@@ CALL NEXTMD @#@@@@ NMOD=NMOD-1 @ @@@@ EE )@@G@@IF(TYP .NE. 4) GO TO 260@B@@@@ IF(INFO(1) .NE. 'OTHER') GO TO 225 EF )@@G@@@B@@@@ 252 IF(INFO(1) .NE. 'AOTHER') GO TO 254 @B@@@@ IF(INFO(2) .EG )@@G@@NE. ' ') GO TO 225 @]@@@@ AV2=1 @^@@@@ INFO(1)='OTHER' EH )@@G@@@B@@@@ 254 IF(INFO(1) .NE. 'OTHER') GO TO 225 @A@@@@ IF(NMOD .NE.EI )@@G@@ 0) GO TO 225 @A@@@@ IF(NCELL .EQ. 0) GO TO 280 @#@@@@ EJ )@@G@@LUP=LS-1 @^@@@@ DO 258 K=1,NCELL @A@@@@ IF(LUP .LT. LOW) GEK )@@G@@O TO 256 @^@@@@ DO 255 J=LOW,LUP @A@@@@ IF(K .EQ. SCR(J)) EL )@@G@@GO TO 258 @#@@@@ 255 CONTINUE @#@@@@ 256 NG2=NG2+1 @^@@@@ EM )@@G@@CALL STORE(K,$999)@#@@@@ 258 CONTINUE @ @@@@ IF(NG2 .NE. 0) GO EN )@@G@@TO 280@#@@@@ CALL ERROR @#@@@@ PRINT 9260 @G@@@@ 9260 FORMATEO )@@G@@(' ***** ONEWAY2 ERROR. OTHER IS USED WITH TTESTS BUT ALL C@C@@@@ -EP )@@G@@ELLS ARE SPECIFIED IN THE FIRST LIST') @#@@@@ GO TO 280 @ @@@@EQ )@@G@@ 260 IF(TYP .EQ. 3) GO TO 265@ @@@@ IF(TYP .NE. 1) GO TO 225@E@@@@ER )@@G@@ IF(NCELL .GT. 0 .AND. INFO(1) .GT. NCELL) GO TO 262 @ @@@@ ES )@@G@@CALL STORE(INFO(1),$999)@#@@@@ NG2=NG2+1 @#@@@@ GO TO 270 ET )@@G@@@A@@@@ 262 IF(CELERR .NE. 0) GO TO 270 @#@@@@ CELERR=1 @#@@@@EU )@@G@@ CALL ERROR @B@@@@ PRINT 9130,CWSPEC(11),CWSPEC(12) @#@@@@EV )@@G@@ GO TO 270 @#@@@@ 265 KA=INFO(1) @#@@@@ KB=INFO(2) @C@@@@EW )@@G@@ IF(KA .GT. KB .OR. KA .LE. 0) GO TO 270 @^@@@@ DO 268 K=KA,EX )@@G@@KB @D@@@@ IF(NCELL .GT. 0 .AND. K .GT. NCELL) GO TO 262 @#@@@@EY )@@G@@ NG2=NG2+1 @^@@@@ 268 CALL STORE(K,$999)@A@@@@ 270 IF(NMOD .EQ.EZ )@@G@@ 0) GO TO 275 @#@@@@ CALL NEXTMD @#@@@@ NMOD=NMOD-1 @#@@@@FA )@@G@@ GO TO 260 @E@@@@C CHECK FOR DUPLICATES AND END TTESTFB )@@G@@S LOOPS @[@@@@C @[@@@@C @A@@@@ 275 IF(TWOERR .NE. 0) GO TO FC )@@G@@280 @A@@@@ CALL TSTREP(LOW,LS-1,$276) @#@@@@ GO TO 280 FD )@@G@@@#@@@@ 276 TWOERR=1 @#@@@@ CALL ERROR @B@@@@ PRINT 9160,CFE )@@G@@WSPEC(11),CWSPEC(12) @^@@@@ 280 SCR(LSAVE)=NG1 @^@@@@ SCR(LSFF )@@G@@AVE+1)=AV1 @^@@@@ SCR(LSAVE+2)=NG2 @^@@@@ SCR(LSAVE+3)=AV2 FG )@@G@@@#@@@@ 285 CONTINUE @^@@@@ 290 NCW=NCW-TTESTA @^@@@@ SVSPECFH )@@G@@(4)=NCW @^@@@@ SVSPEC(5)=TTESTA @A@@@@ IF(NCW .GT. 0) CALFI )@@G@@L MULGRP @[@@@@C @A@@@@C CHECK CONTRAST SPECS @[@@@@FJ )@@G@@C @^@@[@ 300 NCW=SCR(1801) @]@@[@ L=1802@^]@@@ SVSPECFK )@@G@@(7)=NCW @ @@@@ IF(NCW .EQ. 0) GO TO 400@^@@[@ SVSPEC(8)=LSFL )@@G@@-LAST @#[@@@ MODERR=0 @#@@@@ ZERERR=0 @#@@@@ CALL MFM )@@G@@ULGRP @^@@@@ DO 380 I=1,NCW @#@@@@ NMOD=SCR(L) @]@@@@ FN )@@G@@L=L+1 @#@@@@ LSAVE=LS @#@@@@ LS=LS+1 @A@@@@ IF(MODFO )@@G@@ERR .NE. 0) GO TO 330 @A@@@@ IF(NCELL .EQ. 0) GO TO 330 @A@@@@FP )@@G@@ IF(NMOD .EQ. NCELL) GO TO 330 @#@@@@ MODERR=1 @#@@@@ FQ )@@G@@CALL ERROR @#@@@@ PRINT 9320 @G@@@@ 9320 FORMAT(' ***** ONEWAY2 EFR )@@G@@RROR. THE NUMBER OF WEIGHTS SPECIFIED WIT@D@@@@ -H CONTRASTS DOES NFS )@@G@@OT MATCH THE NUMBER OF CELLS')@A@@@@ 330 IF(NMOD .EQ. 0) GO TO 370 FT )@@G@@@#@@@@ NONZER=0 @^@@@@ DO 360 J=1,NMOD @#@@@@ CALL NFU )@@G@@EXTMD @#@@@@ IVAL=INFO(1)@A@@@@ IF(TYP .EQ. 1) RVAL=INFO(1) FV )@@G@@@B@@@@ IF(RVAL .NE. 0) NONZER=NONZER+1 @ @@@@ CALL STORE(IFW )@@G@@VAL,$999) @#@@@@ 360 CONTINUE @D@@@@ IF(ZERERR .NE. 0 .OR. FX )@@G@@NONZER .GE. 2) GO TO 370@#@@@@ ZERERR=1 @#@@@@ CALL ERROR FY )@@G@@@#@@@@ PRINT 9365 @G@@@@ 9365 FORMAT(' ***** ONEWAY2 ERROR. A CONFZ )@@G@@TRAST DOES NOT HAVE AT LEAST T@ @@@@ -WO NON-ZERO WEIGHTS') @ @@@@GA )@@G@@ 370 SCR(LSAVE)=LS-LSAVE-1 @#@@@@ 380 CONTINUE @[@@@@C @A@@@@GB )@@G@@C CHECK POLYS SPECS @[@@@@C @#@@@@ 400 NCW=SCR(901)GC )@@G@@@^@@@@ SVSPEC(9)=NCW @ @@@@ IF(NCW .EQ. 0) GO TO 500@#@@@@GD )@@G@@ CALL MULGRP @^@@@@ NMOD=SCR(902) @]@@@@ L=903 @A@@@@GE )@@G@@ IF(NMOD .GT. 0) GO TO 420 @#@@@@ SVSPEC(10)=0@#@@@@ GF )@@G@@GO TO 500 @#@@@@ 420 CALL NEXTMD @#@@@@ NMOD=NMOD-1 @ @@@@ GG )@@G@@IF(TYP .EQ. 1) GO TO 430@#@@@@ 425 CALL ERROR @#@@@@ PRINT 9425 GH )@@G@@@G@@@@ 9425 FORMAT(' ***** ONEWAY2 ERROR. THE FIRST MODIFIER OF POLYS MGI )@@G@@UST BE@E@@@@ - AN INTEGER BETWEEN ZERO AND THE NUMBER OF CELLS') GJ )@@G@@@#@@@@ GO TO 435 @A@@@@ 430 IF(INFO(1) .LE. 0) GO TO 425 @E@@@@GK )@@G@@ IF(NCELL .GT. 0 .AND. INFO(1) .GE. NCELL) GO TO 425 @^@@@@ GL )@@G@@SVSPEC(10)=INFO(1)@#@@@@ SVSPEC(11)=0@A@@@@ 435 IF(NMOD .EQ. 0) GOGM )@@G@@ TO 500 @#@@@@ CALL NEXTMD @#@@@@ NMOD=NMOD-1 @ @@@@ GN )@@G@@IF(TYP .EQ. 5) GO TO 440@#@@@@ CALL ERROR @#@@@@ PRINT 9435 GO )@@G@@@G@@@@ 9435 FORMAT(' ***** ONEWAY2 ERROR. THE FIRST MODIFIER OF POLYS MGP )@@G@@UST BE@ @@@@ - FOLLOWED BY / OR )') @#@@@@ GO TO 500 @A@@@@GQ )@@G@@ 440 IF(NMOD .GT. 0) GO TO 450 @#@@@@ 445 CALL ERROR @#@@@@ GR )@@G@@PRINT 9445 @G@@@@ 9445 FORMAT(' ***** ONEWAY2 ERROR. THE NUMBER OF GROGS )@@G@@UP SPACINGS SPECIF@E@@@@ -IED WITH POLYS DOES NOT MATCH THE NUMBER OGT )@@G@@F CELLS') @#@@@@ GO TO 500 @A@@@@ 450 IF(NCELL .EQ. 0) GO TO 4GU )@@G@@60 @A@@@@ IF(NMOD .NE. NCELL) GO TO 445 @^@@@@ 460 SVSPEC(11)=NGV )@@G@@MOD @^@@[@ SVSPEC(12)=LS-LAST@A[@@@ IF(NMOD .EQ. 0) GO TO 50GW )@@G@@0 @^@@@@ DO 480 J=1,NMOD @#@@@@ CALL NEXTMD @ @@@@ GX )@@G@@IF(TYP .NE. 5) GO TO 470@#@@@@ CALL ERROR @#@@@@ PRINT 9460 GY )@@G@@@G@@@@ 9460 FORMAT(' ***** ONEWAY2 ERROR. A / IS USED INCORRECTLY WITH GZ )@@G@@POLYS'@]@@@@ -) @#@@@@ GO TO 500 @#@@@@ 470 IVAL=INFO(1)HA )@@G@@@A@@@@ IF(TYP .EQ. 1) RVAL=INFO(1) @ @@@@ CALL STORE(IVAL,$9HB )@@G@@99) @#@@@@ 480 CONTINUE @[@@@@C @ @@@@C CHECK CI SHC )@@G@@PECS @[@@@@C @^@@@@ 500 NMOD=SCR(1201) @^@@@@ SVSPEC(14)=NHD )@@G@@MOD @A@@@@ IF(NMOD .EQ. 0) GO TO 550 @E@@[@ IF(SCR(451) HE )@@G@@.NE. 0 .OR. SCR(1801) .NE. 0) GO TO 505 @A[@@@ IF(SCR(901) .NE. 0HF )@@G@@) GO TO 505 @#@@@@ CALL ERROR @#@@@@ PRINT 9500 @G@@@@ 9500 HG )@@G@@FORMAT(' ***** ONEWAY2 ERROR. CI CANNOT BE USED UNLESS TTESTS, CO@A@@@@HH )@@G@@ -NTRAST, OR POLYS IS USED') @]@@@@ 505 L=1202@#@@@@ CALL NHI )@@G@@EXTMD @ @@@@ IF(TYP .GT. 2) GO TO 510@#@@@@ IVAL=INFO(1)@A@@@@HJ )@@G@@ IF(TYP .EQ. 1) RVAL=INFO(1) @D@@@@ IF(RVAL .LE. 0 .OR. RVHK )@@G@@AL .GE. 100) GO TO 510 @^@@@@ SVSPEC(15)=IVAL @#@@@@ GO TO HL )@@G@@520 @#@@@@ 510 CALL ERROR @#@@@@ PRINT 9510 @G@@@@ 9510 FORMATHM )@@G@@(' ***** ONEWAY2 ERROR. CI PERCENT IS IMPROPERLY SPECIFIED @A@@@@ -HN )@@G@@OR IS NOT BETWEEN 0 AND 100') @A@@@@ 520 IF(NMOD .EQ. 1) GO TO 550 HO )@@G@@@#@@@@ CALL NEXTMD @ @@@@ IF(TYP .NE. 4) GO TO 530@B@@@@ HP )@@G@@IF(INFO(1) .NE. 'SCHEFF') GO TO 530 @A@@@@ IF(INFO(2) .EQ. 'E') GO HQ )@@G@@TO 550@#@@@@ 530 CALL ERROR @#@@@@ PRINT 9530 @G@@@@ 9530 FORMATHR )@@G@@(' ***** ONEWAY2 ERROR. SECOND MODIFIER OF CI, IF USED, MUS@^@@@@ -HS )@@G@@T BE SCHEFFE') @[@@@@C @A@@@@C CHECK POOLERROR USE HT )@@G@@@[@@@@C @ @@@@ 550 SVSPEC(13)=SCR(1210) @B@@@@ IF(SVSPEC(13HU )@@G@@) .EQ. 0) GO TO 600 @E@@@@ IF(SVSPEC(9) .NE. 0 .OR. SCR(1212)HV )@@G@@ .NE. 0) GO TO 600@#@@@@ CALL ERROR @#@@@@ PRINT 9560 @G@@@@HW )@@G@@ 9560 FORMAT(' ***** ONEWAY2 ERROR. POOLERROR CANNOT BE USED UNLESS POLHX )@@G@@@A@@@@ -YS OR ORTHOCON IS ALSO USED') @[@@@@C @A@@@@C HY )@@G@@ CHECK ORTHOCON SPECS @[@@@@C @^@@@@ 600 NCW=SCR(1212) @]@@@@HZ )@@G@@ L=1213@^@@@@ SVSPEC(16)=NCW @^@@[@ SVSPEC(17)=LS-LASTIA )@@G@@@ [@@@ IF(NCW .EQ. 0) GO TO 700@#@@@@ CELERR=0 @#@@@@ IB )@@G@@TWOERR=0 @#@@@@ MODERR=0 @^@@@@ NCON=SVSPEC(7) @^@@@@IC )@@G@@ DO 680 I=1,NCW @#@@@@ NMOD=SCR(L) @]@@@@ L=L+1 @#@@@@ID )@@G@@ LSAVE=LS @#@@@@ LS=LS+1 @]@@@@ LOW=LS@A@@@@ IE )@@G@@IF(NMOD .EQ. 0) GO TO 645 @A@@@@ IF(NCELL .EQ. 0) GO TO 610 IF )@@G@@@A@@@@ IF(NMOD .LT. NCELL) GO TO 610 @A@@@@ IF(MODERR .NE. 0) IG )@@G@@GO TO 610 @#@@@@ MODERR=1 @#@@@@ CALL ERROR @#@@@@ IH )@@G@@PRINT 9605 @G@@@@ 9605 FORMAT(' ***** ONEWAY2 ERROR. THE NUMBER OF CONII )@@G@@TRASTS SPECIFIED W@E@@@@ -ITH ORTHOCON MUST BE LESS THAN THE NUMBER IJ )@@G@@OF CELLS') @^@@@@ 610 DO 640 J=1,NMOD @#@@@@ KEMP=SCR(L) @]@@@@IK )@@G@@ L=L+1 @A@@@@ IF(NCON .EQ. 0) GO TO 620 @A@@@@ IF(KEMIL )@@G@@P .LE. NCON) GO TO 620 @A@@@@ IF(CELERR .NE. 0) GO TO 620 @#@@@@IM )@@G@@ CELERR=1 @#@@@@ CALL ERROR @#@@@@ PRINT 9610 @G@@@@IN )@@G@@ 9610 FORMAT(' ***** ONEWAY2 ERROR. A NUMBER SPECIFIED WITH ORTHOCON EXIO )@@G@@@B@@@@ -CEEDS THE NUMBER OF CONTRASTS') @ @@@@ 620 CALL STORE(KIP )@@G@@EMP,$999) @#@@@@ 640 CONTINUE @ @@@@ 645 SCR(LSAVE)=LS-LSAVE-1 IQ )@@G@@@A@@@@ IF(TWOERR .NE. 0) GO TO 680 @A@@@@ CALL TSTREP(LOW,LSIR )@@G@@-1,$650) @#@@@@ GO TO 680 @#@@@@ 650 TWOERR=1 @#@@@@ IS )@@G@@CALL ERROR @#@@@@ PRINT 9650 @G@@@@ 9650 FORMAT(' ***** ONEWAY2 EIT )@@G@@RROR. THE SAME CONTRAST IS SPECIFIED MORE@C@@@@ - ONCE WITH AN ORTHIU )@@G@@OCON CONTROL WORD') @#@@@@ 680 CONTINUE @[@@@@C @A@@@@C IV )@@G@@ CHECK RANGE SPECS @[@@@@C @^@@@@ 700 NMOD=SCR(1501) IW )@@G@@@^@@@@ SVSPEC(18)=NMOD @A@@@@ IF(NMOD .EQ. 0) GO TO 800 IX )@@G@@@#@@@@ CALL MULGRP @^@@[@ SVSPEC(19)=LS-LAST@A[@@@ IF(NCEIY )@@G@@LL .EQ. 0) GO TO 720 @A@@@@ IF(NMOD .LT. NCELL) GO TO 720 @#@@@@IZ )@@G@@ CALL ERROR @#@@@@ PRINT 9715 @G@@@@ 9715 FORMAT(' ***** ONEJA )@@G@@WAY2 ERROR. THE NUMBER OF MODIFIERS OF RANGE IS@B@@@@ - NOT LESS THJB )@@G@@AN THE NUMBER OF CELLS')@]@@@@ 720 L=1502@A@@@@ IF(NMOD .EQ. 0) GOJC )@@G@@ TO 800 @^@@@@ DO 760 J=1,NMOD @#@@@@ CALL NEXTMD @#@@@@JD )@@G@@ IVAL=INFO(1)@A@@@@ IF(TYP .EQ. 1) RVAL=INFO(1) @A@@@@ 740 JE )@@G@@IF(RVAL .GT. 0) GO TO 750 @#@@@@ CALL ERROR @#@@@@ PRINT JF )@@G@@9745 @G@@@@ 9745 FORMAT(' ***** ONEWAY2 ERROR. A MODIFIER OF RANGE IS JG )@@G@@NEGATIVE OR @]@@@@ -ZERO')@#@@@@ GO TO 800 @ @@@@ 750 CALL SJH )@@G@@TORE(IVAL,$999) @#@@@@ 760 CONTINUE @[@@@@C @C@@@@C JI )@@G@@ SAVE SPECS ON FILE 6 IF NO ERRORS @[@@@@C @ @@@@ 800 IF(NERR .NE.JJ )@@G@@ 0) RETURN @B@@@@ CALL S1IODR(6,'WRITE',19,SVSPEC,DUM)@#@@@@ JK )@@G@@MAXCON=0 @B@@@@ IF(SVSPEC(9) .NE. 0) MAXCON=NCELL @C@@@@ JL )@@G@@IF(SVSPEC(7) .GT. MAXCON) MAXCON=SVSPEC(7)@ @@@@ MAXCON=MAXCON*NCELJM )@@G@@L @B@@@@ IF(MAXCON .GT. OSIZEM) OSIZEM=MAXCON@^@@[@ NOUT=LJN )@@G@@S-(LAST+1) @B[@@@ IF(NOUT .GT. OSIZEC) OSIZEC=NOUT @B@@@@ JO )@@G@@CALL S1IODR(6,'WRITE',1,NOUT,DUM) @A@@@@ IF(NOUT .EQ. 0) GO TO 81JP )@@G@@0 @D@@[@ CALL S1IODR(6,'WRITE',NOUT,SCR(LAST+1),DUM) @C[@@@JQ )@@G@@ 810 CALL S1GTAG('NWCOMP',FW,DUM,DUM,$820) @ @@@@ BLCOM(FW)=BLJR )@@G@@COM(FW)+1 @]@@@@ RETURN@B@@@@ 820 CALL S1STFT('NWCOMP',FW,1,1,$9JS )@@G@@99) @#@@@@ BLCOM(FW)=1 @]@@@@ RETURN@[@@@@C @[@@@@C JT )@@G@@@#@@@@ 999 PRINT 9999 @C@@@@ 9999 FORMAT(' ***** SYSTEM ERROR IN S82CMJU )@@G@@P') @#@@@@ RETURN 7 @[@@@@C @[@@@@C @C@@@@C LOCJV )@@G@@AL SUBROUTINE FOR ERROR HANDLING @[@@@@C @^@@@@ SUBROUTINE EJW )@@G@@RROR @#@@@@ NERR=NERR+1 @^@@@@ CALL S1PCHD(1) @]@@@@ JX )@@G@@RETURN@[@@@@C @[@@@@C @D@@@@C LOCAL SUBROUTINE FOR TESTINJY )@@G@@G MULTIPLE GROUPS @[@@@@C @^@@@@ SUBROUTINE MULGRP @ @@@@ JZ )@@G@@IF(NFACT .LE. 1) RETURN @ @@@@ IF(FACMES .NE. 0) RETURN@#@@@@ KA )@@G@@FACMES=1 @#@@@@ CALL ERROR @#@@@@ PRINT 9105 @G@@@@ 9105 KB )@@G@@FORMAT(' ***** IF GROUPS IS REPEATED ON THE MODEL CARD, ONLY TTEST@F@@@@KC )@@G@@ -S WITHOUT MODIFIERS AND CI CAN BE USED ON THE COMPARE CARD')@]@@@@KD )@@G@@ RETURN@[@@@@C @[@@@@C @C@@@@C LOCAL SUBROUTINE TO SKE )@@G@@TORE IN SPECS LIST@[@@@@C @A@@@@ SUBROUTINE STORE(STODAT,$) KF )@@G@@@A@@@@ IF(LS .GE. LSCR) RETURN 2 @^@@@@ SCR(LS)=STODAT KG )@@G@@@#@@@@ LS=LS+1 @]@@@@ RETURN@[@@@@C @[@@@@C @C@@@@KH )@@G@@C LOCAL SUBROUTINE TO GET NEXT MODIFIER @[@@@@C @^@@@@ KI )@@G@@SUBROUTINE NEXTMD @#@@@@ TYP=SCR(L) @]@@@@ L=L+1 @^@@@@ KJ )@@G@@INFO(1)=SCR(L) @^@@@@ INFO(2)=SCR(L+1) @B@@@@ GO TO (1200,KK )@@G@@1200,1100,1100,1300),TYP@]@@@@ 1100 L=L+1 @]@@@@ 1200 L=L+1 @]@@@@ 1300 KL )@@G@@RETURN@[@@@@C @[@@@@C @F@@@@C LOCAL SUBROUTINE TO TEST FOKM )@@G@@R A REPEATED SPECIFICATION @[@@@@C @A@@@@ SUBROUTINE TSTREP(KN )@@G@@JA,JB,$) @^@@@@ DO 1600 J=JA,JB @#@@@@ KLOW=J+1 @ @@@@KO )@@G@@ IF(KLOW .GE. JB) RETURN @#@@@@ KEMP=SCR(J) @A@@@@ IF(KEMKP )@@G@@P .EQ. 0) GO TO 1600 @^@@@@ DO 1500 K=KLOW,JB @A@@@@ IF(KEMKQ )@@G@@P .EQ. SCR(K)) RETURN 3 @#@@@@ 1500 CONTINUE @#@@@@ 1600 CONTINUE KR )@@G@@@]@@@@ RETURN@[@@@@C @[@@@@C @E@@@@C LOCAL SUBROUTINKS )@@G@@E TO DECODE 'A' FOLLOWED BY INTEGER @[@@@@C @A@@@@ SUBROUTINE TKT )@@G@@ESTAN(FLD,VALUE,$)@^@@@@ DIMENSION FLD(2) @ @@@@ CALL S1PRFT(KU )@@G@@FLD(1),1,CH)@ @@@@ IF(CH .NE. 'A') RETURN 3@B@@@@ IF(FLD(2) .NKV )@@G@@E. ' ') RETURN 3 @^@@@@ DO 2000 IK=2,6 @A@@@@ CALL SKW )@@G@@1PRFT(FLD(1),IK,CH) @A@@@@ IF(CH .EQ. ' ') GO TO 2100 @A@@@@KX )@@G@@ IF(S1SPCT(CH) .NE. 2) RETURN 3@#@@@@ 2000 CONTINUE @]@@@@ KY )@@G@@IK=7 @A@@@@ 2100 CALL S1PRST(FLD(1),1,' ') @A@@@@ CALL S1VLU(FKZ )@@G@@LD,IK-1,VALUE) @]@@@@ RETURN@]@@@@ END ___ @A@@@@ LA )@@G@@IF(NOUT .EQ. 0) GO TO 810 @D@@[@ CALL S*[S@@@*SDFF*@G@@@@ LB )@@G@@SUBROUTINE S82CP2(CCERR,NVAR,CPDUMP,SCR,LSCR,$,NARLEN,ARRLEN) @ @@@@LC )@@G@@ IMPLICIT INTEGER (A-Z) @^@@@@ DIMENSION SCR(1) @ @@@@ LD )@@G@@DIMENSION ARRLEN(1) @[@@@@C @E@@@@C ONEWAY2 CONTROL LE )@@G@@PROCESSING ROUTINE CALLED @D@@@@C AFTER ALL CONTROL CARDLF )@@G@@S HAVE BEEN READ @E@@@@C AND PROCESSED BY ROUTINES FOR EACHLG )@@G@@ CONTROL @C@@@@C CARD TYPE AND SPECIFICATIONS HAVE @F@@@@LH )@@G@@C BEEN SAVED IN COMMON /S82BLK/ AND ON SCRATCH UNITS. @[@@@@LI )@@G@@C @[@@@@C @D@@@@C IF ERRORS WERE DETECTED DURING CONLJ )@@G@@TROL @C@@@@C CARD PROCESSING (CCERR .NE. 0) ---@B@@@@C LK )@@G@@ S22SC2 IS NOT CALLED @D@@@@C IF THERE WERE NOLL )@@G@@ ERRORS IN THE RUN -- @D@@@@C ROUTINE S22SC2 IS CALLELM )@@G@@D TO PREPARE@D@@@@C SCALES AND LABELS FOR THE EXECUTIONLN )@@G@@@C@@@@C PHASE. ADDITIONAL STORAGE @D@@@@C LO )@@G@@ REQUIREMENTS INFORMATION IS ALSO @D@@@@C OBTAILP )@@G@@NED BY S22SC2. AFTER RETURN @C@@@@C FROM S22SC2, FINALQ )@@G@@L EXECUTION @B@@@@C PREPARATIONS ARE MADE. @[@@@@C LR )@@G@@@[@@@@C @[@@@@C @A@@@@ COMMON /S82BLK/ LCCT,LCCN, @D@@@@LS )@@G@@ - NSCALE,SCALNO(400),SCALTP(400),SCALEN(400), @A@@@@ - VARLT )@@G@@SCL(500),VARLIM,VAROVF, @ @@@@ - MDATA,NWHEAD,NSCOUT, @ @@@@ -LU )@@G@@ NMODEL,NWMODL,NCOORD,@B@@@@ - MODNO,NFACT,NCELL,NDEPV,NDVGRP, LV )@@G@@@ @@@@ - NTABS,NDVTOT,NGRTOT, @ @@@@ - HISTAT,MMCOR,NHISTS, LW )@@G@@@A@@@@ - DATSAV,CDSAV(5),DVSAV(30), @A@@@@ - BAVAR,BABUF,OSILX )@@G@@ZEM,OSIZEC, @B@@@@ - TA(400),TB(400),TC(400),TW(400) @[@@@@C LY )@@G@@@C@@@@ DIMENSION CDVAR(150),CDSCL(150),CDLEN(150)@A@@@@ EQUIVALZ )@@G@@LENCE (CDVAR(1),TA(1)) @A@@@@ EQUIVALENCE (CDSCL(1),TA(201))@A@@@@MA )@@G@@ EQUIVALENCE (CDLEN(1),TB(1)) @[@@@@C @ @@@@ DIMENSION SAMB )@@G@@VPAR(10) @^@@@@ DATA NSVPAR /10/ @[@@@@C @#@@@@ COMMONMC )@@G@@ X(1) @[@@@@C @[@@@@C @E@@@@C INITIALIZE PAGE HEADINMD )@@G@@G IF DUMP REQUESTED @[@@@@C @A@@@@ IF(CPDUMP .EQ. 0) GO TO ME )@@G@@50 @G@@@@ CALL S1PCHH('(1H0,25X,33HADDITIONAL ONEWAY2 CONTROL DMF )@@G@@UMPS)',2) @[@@@@C @C@@@@C INITIALIZE BUFFER FOR S22UNIMG )@@G@@T @[@@@@C @^@@@@ 50 LST=LSCR-2000 @A@@@@ IF(LST .LT. MH )@@G@@1000) GO TO 70 @B@@@@ CALL S22IOD(SCR(LST+1),2000,$70) @#@@@@MI )@@G@@ GO TO 100 @#@@@@ 70 PRINT 75 @C@@@@ 75 FORMAT('0***** BUFMJ )@@G@@FER TROUBLE IN S82CP2') @#@@@@ 80 RETURN 6 @[@@@@C @D@@@@C MK )@@G@@ SET UP SCALNO VECTOR OF SCALES USED @[@@@@C @]@@@@ 100 ML )@@G@@NIN=0 @^@@@@ DO 105 I=1,300 @#@@@@ 105 TW(I)=TB(I) @A@@@@ MM )@@G@@IF(NCOORD .EQ. 0) GO TO 140 @A@@@@ IF(NSCALE .EQ. 0) GO TO 112 MN )@@G@@@^@@@@ DO 110 I=1,NSCALE @A@@@@ SCALEN(I)=AND(SCALEN(I),1023) MO )@@G@@@#@@@@ 110 TC(I)=0 @^@@@@ 112 DO 120 J=1,NCOORD @#@@@@ JS=CDSMP )@@G@@CL(J) @ @@@@ IF(JS .LE. 0) GO TO 115 @ @@@@ TC(JS)=OR(TC(JS),2MQ )@@G@@) @C@@@@ IF(TW(J+150) .NE. 0) TC(JS)=OR(TC(JS),1) @ @@@@ MR )@@G@@CDLEN(J)=SCALEN(JS) @#@@@@ GO TO 120 @^@@@@ 115 CDLEN(J)=-JSMS )@@G@@/8 + 1@#@@@@ 120 CONTINUE @A@@@@ IF(NSCALE .EQ. 0) GO TO 140 MT )@@G@@@^@@@@ DO 130 I=1,NSCALE @A@@@@ IF(TC(I) .EQ. 0) GO TO 130 MU )@@G@@@#@@@@ NIN=NIN+1 @A@@@@ SCALNO(NIN)=SCALNO(I)*4+TC(I) @#@@@@MV )@@G@@ TC(I)=NIN @#@@@@ 130 CONTINUE @A@@@@ IF(NIN .EQ. NSCALEMW )@@G@@) GO TO 140 @^@@@@ DO 135 J=1,NCOORD @#@@@@ I=CDSCL(J) @ @@@@MX )@@G@@ IF(I .LE. 0) GO TO 135 @^@@@@ CDSCL(J)=TC(I) @#@@@@ 135 MY )@@G@@CONTINUE @#@@@@ 140 NSCALE=NIN @[@@@@C @B@@@@C COMPMZ )@@G@@UTE SUMMATION AREA SIZE @[@@@@C @#@@@@ ACCTOT=0 @#@@@@ NA )@@G@@HISTOT=0 @#@@@@ HISMAX=0 @#@@@@ CLSMAX=0 @A@@@@ NB )@@G@@IF(NCOORD .EQ. 0) GO TO 150 @^@@@@ DO 145 J=1,NCOORD @^@@@@ NC )@@G@@ROWS=CDLEN(J) @ @@@@ NCLASS=AND(TW(J+150),63)@^@@@@ HCORE=ND )@@G@@TW(J+150)/64@^@@@@ HSIZE=ROWS*NCLASS @B@@@@ IF(HSIZE .GT. HISMNE )@@G@@AX) HISMAX=HSIZE @B@@@@ IF(NCLASS .GT. CLSMAX) CLSMAX=NCLASS@ @@@@NF )@@G@@ HISTOT=HISTOT+ROWS*HCORE@ @@@@ 145 ACCTOT=ACCTOT+ROWS*TW(J)@[@@@@NG )@@G@@C @B@@@@C DUMP PARAMETERS IF SELECTED @[@@@@C @A@@@@NH )@@G@@ 150 IF(CPDUMP .EQ. 0) GO TO 200 @A@@@@ IF(NCOORD .EQ. 0) GO TO NI )@@G@@190 @^@@@@ CALL S1PCHD(3) @#@@@@ PRINT 160 @D@@@@ 160 NJ )@@G@@FORMAT(/'0COORDINATES - I VAR SCALE LEN') @^@@@@ DO 170 I=1,NNK )@@G@@COORD @^@@@@ CALL S1PCHD(1) @C@@@@ PRINT 165,I,CDVAR(I),CDSNL )@@G@@CL(I),CDLEN(I) @ @@@@ 165 FORMAT(10X,I6,I5,2I7) @#@@@@ 170 CONTINNM )@@G@@UE @A@@@@ 175 IF(NSCALE .EQ. 0) GO TO 190 @^@@@@ CALL S1PCHD(NN )@@G@@3) @#@@@@ PRINT 177 @D@@@@ 177 FORMAT(/'0SCALES USED - J NONO )@@G@@. LAB6 LAB4') @^@@@@ DO 185 J=1,NSCALE @^@@@@ CALL S1PCHD(NP )@@G@@1) @^@@@@ TMP=SCALNO(J) @^@@@@ LAB6=AND(TMP,1) @^@@@@NQ )@@G@@ LAB4=AND(TMP,2)/2 @#@@@@ TMP=TMP/4 @A@@@@ PRINT 180,J,NR )@@G@@TMP,LAB6,LAB4 @^@@@@ 180 FORMAT(10X,4I6) @#@@@@ 185 CONTINUE NS )@@G@@@^@@@@ 190 CALL S1PCHD(3) @#@@@@ PRINT 195 @B@@@@ 195 FORMATNT )@@G@@(/'0MISCELLANEOUS PARAMETERS')@A@@@@ CALL PLV('NCOORD',NCOORD) NU )@@G@@@A@@@@ CALL PLV('NSCALE',NSCALE) @ @@@@ CALL PLV('NTABS',NNV )@@G@@TABS) @A@@@@ CALL PLV('ACCTOT',ACCTOT) @ @@@@ CALL PLV('NVNW )@@G@@AR',NVAR) @A@@@@ CALL PLV('NMODEL',NMODEL) @A@@@@ CALL PNX )@@G@@LV('NWMODL',NWMODL) @A@@@@ CALL PLV('NDVTOT',NDVTOT) @A@@@@NY )@@G@@ CALL PLV('NGRTOT',NGRTOT) @A@@@@ CALL PLV('HISTAT',HISTATNZ )@@G@@) @A@@@@ CALL PLV('HISTOT',HISTOT) @ @@@@ CALL PLV('MMOA )@@G@@COR',MMCOR) @A@@@@ CALL PLV('NHISTS',NHISTS) @A@@@@ CALL POB )@@G@@LV('DATSAV',DATSAV) @A@@@@ CALL PLV('HISMAX',HISMAX) @A@@@@OC )@@G@@ CALL PLV('CLSMAX',CLSMAX) @ @@@@ CALL PLV('BAVAR',BAVAR) OD )@@G@@@ @@@@ CALL PLV('BABUF',BABUF) @A@@@@ CALL PLV('OSIZEM',OSIZEMOE )@@G@@) @A@@@@ CALL PLV('OSIZEC',OSIZEC) @A@@@@ 200 IF(CCERR .NEOF )@@G@@. 0) GO TO 310 @[@@@@C @C@@@@C CALL S22SC2 TO PROCESSOG )@@G@@ SCALES @[@@@@C @E@@@@ 300 CALL S22SC2(NSCOUT,SCALNO,NSCALE,CATOH )@@G@@WTS,SCLTOT,LABTOT,@B@@@@ - VARSCL,SCALEN,TC,TW,SCR,LST,$80) @A@@@@OI )@@G@@ IF(NSCALE .EQ. 0) GO TO 310 @B@@@@ CALL S22DWR(SCALNO,NSCALOJ )@@G@@E,$510) @A@@@@ 310 IF(CPDUMP .EQ. 0) GO TO 350 @A@@@@ CALL POK )@@G@@LV('CATWTS',CATWTS) @A@@@@ CALL PLV('SCLTOT',SCLTOT) @A@@@@OL )@@G@@ CALL PLV('LABTOT',LABTOT) @[@@@@C @D@@@@C PREPOM )@@G@@ARE POINTER VECTORS FOR SAVING DATA @[@@@@C @A@@@@ 350 IF(CCERR .NEON )@@G@@. 0) GO TO 360 @A@@@@ CALL S22DWR(HISTAT,1,$510) @A@@@@ OO )@@G@@CALL S22DWR(DATSAV,1,$510) @A@@@@ 360 IF(DATSAV .EQ. 0) GO TO 400 OP )@@G@@@#@@@@ NCDSAV=0 @^@@@@ DO 370 I=1,NCOORD @A@@@@ CALL TOQ )@@G@@STBIT(CDSAV,I,$370) @^@@@@ NCDSAV=NCDSAV+1 @^@@@@ TB(200OR )@@G@@+NCDSAV)=I @#@@@@ 370 CONTINUE @D@@@@ IF(CPDUMP .NE. 0) CALL POS )@@G@@LV('NCDSAV',NCDSAV) @A@@@@ IF(CCERR .NE. 0) GO TO 375 @A@@@@OT )@@G@@ CALL S22DWR(NCDSAV,1,$510) @B@@@@ CALL S22DWR(TB(201),NCDSOU )@@G@@AV,$510) @#@@@@ 375 NDVSAV=0 @^@@@@ DO 380 I=1,NVAR @A@@@@OV )@@G@@ CALL TSTBIT(DVSAV,I,$380) @^@@@@ NDVSAV=NDVSAV+1 @^@@@@OW )@@G@@ TB(200+NDVSAV)=I @#@@@@ 380 CONTINUE @C@@@@ CALL S1GTAG(OX )@@G@@'IDVAR',IDFW,DUM,DUM,$390) @^@@@@ NDVSAV=NDVSAV+1 @ @@[@ OY )@@G@@TB(200+NDVSAV)=X(IDFW)/2@#[@@@ 390 CONTINUE @D@@@@ IF(CPDUMP .NOZ )@@G@@E. 0) CALL PLV('NDVSAV',NDVSAV) @A@@@@ IF(CCERR .NE. 0) GO TO 4PA )@@G@@00 @A@@@@ CALL S22DWR(NDVSAV,1,$510) @B@@@@ CALL S22DWR(PB )@@G@@TB(201),NDVSAV,$510) @[@@@@C @F@@@@C COMPUTE ARRAY LEPC )@@G@@NGTHS REQUIRED FOR ANALYSIS PHASE @[@@@@C @]@@@@ 400 NALL=0@#@@@@PD )@@G@@ ALLTOT=0 @#@@@@ ENTMAX=0 @A@@@@ IF(NCOORD .EQ. 0) PE )@@G@@GO TO 420 @^@@@@ DO 410 I=1,NCOORD @C@@@@ IF(CDLEN(I) .GT. EPF )@@G@@NTMAX) ENTMAX=CDLEN(I) @A@@@@ IF(CDSCL(I) .GE. 0) GO TO 410 @#@@@@PG )@@G@@ NALL=NALL+1 @ @@@@ ALLTOT=ALLTOT+CDLEN(I)+5@#@@@@ 410 CONTINPH )@@G@@UE @A@@@@ 420 IF(CPDUMP .EQ. 0) GO TO 430 @ @@@@ CALL PLV('NAPI )@@G@@LL',NALL) @A@@@@ CALL PLV('ALLTOT',ALLTOT) @A@@@@ CALL PPJ )@@G@@LV('ENTMAX',ENTMAX) @#@@@@ 430 SCR(1)=NVAR @#@@@@ DO 435 I=2,6PK )@@G@@@^@@@@ 435 SCR(I)=NCOORD @^@@@@ DO 440 I=7,14 @^@@@@ 440 PL )@@G@@SCR(I)=NSCALE @^@@@@ SCR(15)=SCLTOT @#@@@@ SCR(16)=NALLPM )@@G@@@^@@@@ SCR(17)=3*NALL @^@@@@ SCR(18)=ALLTOT @^@@@@ PN )@@G@@SCR(19)=2*ALLTOT @ @@@@ SCR(20)=NSCALE+LABTOT @^@@@@ DO 442PO )@@G@@ I=21,24 @^@@@@ 442 SCR(I)=NMODEL @^@@@@ SCR(25)=5*NMODEL PP )@@G@@@^@@@@ SCR(26)=4*NMODEL @^@@@@ SCR(27)=NTABS @^@@@@ PQ )@@G@@SCR(28)=NTABS @^@@@@ SCR(29)=NDVTOT @^@@@@ SCR(30)=NGRTPR )@@G@@OT @D@@@@ SCR(31)=20*ENTMAX + 4*CLSMAX + HISMAX + 2*OSIZEM@C@@@@PS )@@G@@ IF(HISTAT .NE. 0) SCR(31)=SCR(31)+6*ENTMAX@^@@@@ SCR(32)=2*NHPT )@@G@@ISTS @^@@@@ SCR(33)=2*NHISTS @^@@@@ SCR(34)=HISTOT @^@@@@PU )@@G@@ DO 445 I=35,39 @^@@@@ 445 SCR(I)=ACCTOT @A@@@@ IF(MDAPV )@@G@@TA .EQ. 0) SCR(36)=0 @^@@@@ SCR(40)=2*ACCTOT @A@@@@ IF(DATPW )@@G@@SAV .NE. 0) GO TO 455 @ @@@@ SCR(41)=2000-6*ACCTOT @A@@@@ PX )@@G@@IF(SCR(41) .LT. 0) SCR(41)=0 @#@@@@ GO TO 460 @A@@@@ 455 SCR(41PY )@@G@@)=4000+2*(NCDSAV+NDVSAV)@D@@@@ IF(6*ACCTOT .LT. 2000) SCR(40)=2000-PZ )@@G@@4*ACCTOT @^@@@@ 460 SCR(42)=3*BAVAR @#@@@@ SCR(43)=0 @A@@@@QA )@@G@@ IF(BAVAR .NE. 0) SCR(43)=14 @^@@@@ SCR(44)=BABUF @#@@@@QB )@@G@@ SCR(45)=0 @^@@@@ SCR(46)=OSIZEC @#@@@@ SCR(47)=100 QC )@@G@@@#@@@@ NARRAY=47 @A@@@@ IF(CPDUMP .EQ. 0) GO TO 480 @^@@@@QD )@@G@@ CALL S1PCHD(3) @#@@@@ PRINT 465 @D@@@@ 465 FORMAT(/'0STQE )@@G@@ORAGE VECTORS REQUIRED - I LEN') @^@@@@ DO 475 I=1,NARRAY @^@@@@QF )@@G@@ CALL S1PCHD(1) @^@@@@ PRINT 470,I,SCR(I)@^@@@@ 470 FORMATQG )@@G@@(25X,I4,I7) @#@@@@ 475 CONTINUE @^@@@@ 480 DO 485 I=1,NARRAY @^@@@@QH )@@G@@ 485 ARRLEN(I)=SCR(I) @^@@@@ NARLEN=NARRAY @[@@@@C @C@@@@QI )@@G@@C SAVE PARAMETERS AND CLOSE S22UNIT @[@@@@C @ @@@@ QJ )@@G@@IF(CCERR .NE. 0) RETURN @A@@@@ CALL S22DWR(CDVAR,NCOORD,$510)@#@@@@QK )@@G@@ GO TO 520 @#@@@@ 510 PRINT 515 @C@@@@ 515 FORMAT('0***** I/OQL )@@G@@ TROUBLE IN S82CP2') @#@@@@ RETURN 6 @A@@@@ 520 CALL S22DWR(QM )@@G@@CDSCL,NCOORD,$510)@A@@@@ CALL S22DWR(CDLEN,NCOORD,$510)@A@@@@ QN )@@G@@IF(NALL .EQ. 0) GO TO 530 @]@@@@ K=0 @^@@@@ DO 525 I=1,NQO )@@G@@COORD @A@@@@ IF(CDSCL(I) .GE. 0) GO TO 525 @]@@@@ K=K+1 @#@@@@QP )@@G@@ SCR(K)=2 @B@@@@ CALL S1GTVT(CDVAR(I),SCR(K),$525) @#@@@@QQ )@@G@@ 525 CONTINUE @A@@@@ CALL S22DWR(SCR,NALL,$510) @^@@@@ 530 QR )@@G@@CALL S22DEF($510) @^@@@@ SAVPAR(1)=NCOORD @^@@@@ SAVPAR(2)=NSQS )@@G@@CALE @^@@@@ SAVPAR(3)=NALL @^@@@@ SAVPAR(4)=NMODEL @^@@@@QT )@@G@@ SAVPAR(5)=CATWTS @^@@@@ SAVPAR(6)=NWMODL @^@@@@ SAVPARQU )@@G@@(7)=MDATA @^@@@@ SAVPAR(8)=ENTMAX @^@@@@ SAVPAR(9)=ACCTOT QV )@@G@@@^@@@@ SAVPAR(10)=NWHEAD @C@@@@ CALL S1STFT('S22PAR',FW,1,NSVPQW )@@G@@AR,$580) @^@@@@ DO 550 I=1,NSVPAR @^@@@@ X(FW)=SAVPAR(I) QX )@@G@@@#@@@@ 550 FW=FW+1 @]@@@@ RETURN@#@@@@ 580 PRINT 585 @E@@@@QY )@@G@@ 585 FORMAT('0***** TROUBLE SAVING PARAMETERS IN S22CP2') @#@@@@ QZ )@@G@@RETURN 6 @[@@@@C @D@@@@C LOCAL SUBROUTINE TO PRINT LARA )@@G@@BELLED VALUE@[@@@@C @ @@@@ SUBROUTINE PLV(LB,VL) @^@@@@ RB )@@G@@CALL S1PCHD(1) @^@@@@ PRINT 1010,LB,VL @ @@@@ 1010 FORMAT(2X,A6RC )@@G@@,3H = ,I6) @]@@@@ RETURN@[@@@@C @D@@@@C LOCAL ROUTRD )@@G@@INE TO ESTIMATE SCALE STORAGE @C@@@@C REQUIREMENTS IF S22SC2RE )@@G@@ NOT CALLED @[@@@@C @^@@@@ SUBROUTINE ESTSCL @ @@@@ IMPLICRF )@@G@@IT INTEGER (A-Z) @#@@@@ CATWTS=1 @#@@@@ SCLTOT=0 @#@@@@RG )@@G@@ LABTOT=0 @ @@@@ IF(NSCALE .EQ. 0) RETURN@ @@@@ DO 202RH )@@G@@0 II=1,NSCALE @B@@@@ IF(SCALTP(II) .LT. 0) GO TO 2020 @ @@@@RI )@@G@@ XA=AND(SCALTP(II),7) @ @@@@ IF(XA .GT. 4) GO TO 2020@^@@@@RJ )@@G@@ SLL=SCALEN(II)*2 @^@@@@ SCLTOT=SCLTOT+SLL @B@@@@ IF(XA RK )@@G@@.LE. 2) SCLTOT=SCLTOT+SLL @ @@@@ LABTOT=LABTOT+5*SLL @#@@@@RL )@@G@@ 2020 CONTINUE @]@@@@ RETURN@[@@@@C @[@@@@C @D@@@@C RM )@@G@@ LOCAL SUBROUTINE TO TEST BIT IN A VECTOR @[@@@@C @B@@@@ RN )@@G@@SUBROUTINE TSTBIT(BVEC,INDEX,$) @ @@@@ IMPLICIT INTEGER (A-Z) RO )@@G@@@^@@@@ DIMENSION BVEC(1) @^@@@@ IW=(INDEX-1)/36 @^@@@@ RP )@@G@@IBIT=INDEX-36*IW-1@C@@@@ IF(FLD(IBIT,1,BVEC(IW+1)) .EQ. 0) RETURN 3RQ )@@G@@@]@@@@ RETURN@]@@@@ END ___HD(1) @^@@@@ PRINT 470,I,RR )@@G@@SCR(I)@^@@@@ 470 FORMAT*[S@@@*SDFF*@D@@@@ SUBROUTINE S82MOD(CN,CARRS )@@G@@D,NC,SCR,LSCR,NERR,$) @ @@@@ IMPLICIT INTEGER (A-Z) @ @@@@ RT )@@G@@DIMENSION CARD(1),SCR(1)@[@@@@C @B@@@@C ONEWAY2 MODEL CARD PRRU )@@G@@OCESSOR. @[@@@@C @[@@@@C @E@@@@C MODEL CARD NUMBER CN RV )@@G@@(STORED IN VECTOR CARD) IS @F@@@@C DECODED AND CHECKED. VALIDRW )@@G@@ SPECIFICATIONS ARE SAVED IN @B@@@@C COMMON /S82BLK/ AS FOLLOWS RX )@@G@@- @E@@@@C NMODEL - TOTAL NUMBER OF MODEL CARDS PROCESSEDRY )@@G@@@D@@@@C NWMODL - NUMBER OF MODELS WITH NO ERRORS@D@@@@C RZ )@@G@@ NCOORD - NUMBER OF DISTINCT COORDINATES @D@@@@C CDVASA )@@G@@R (IN TA) - COORDINATE VARIABLES @C@@@@C CDSCL (IN TA) - SB )@@G@@COORDINATES SCALES@D@@@@C MODNO - NUMBER OF THE CURRENT MODESC )@@G@@L @C@@@@C NFACT - NUMBER OF FACTOR VARIABLES@E@@@@C SD )@@G@@ NCELL - NUMBER OF PRIMARY CELLS IN THE MODEL @D@@@@C SE )@@G@@ NDEPV - NUMBER OF DEPENDENT VARIABLES @E@@@@C NDVGRP - NSF )@@G@@UMBER OF DEPENDENT VARIABLE GROUPS @E@@@@C NTABS - TOTAL NOSG )@@G@@. OF FACTOR VAR. IN ALL MODELS@E@@@@C NDVTOT - TOTAL NO. OF SH )@@G@@DEP. VAR. IN ALL MODELS @F@@@@C NGRTOT - TOTAL NO. OF DEP. VSI )@@G@@AR. GROUPS IN ALL MODELS@C@@@@C HISTAT - NON-ZERO IF HISTOGRSJ )@@G@@AMS @G@@@@C MMCOR - TOTAL NO. OF DEP. VAR. GROUPS WITH HISSK )@@G@@TOGRAMS @E@@@@C NHISTS - TOTAL NO. OF HISTOGRAMS TO PRINSL )@@G@@T @E@@@@C DATSAV - SET NON-ZERO IF DATA TO BE SAVED SM )@@G@@@E@@@@C CDSAV - BIT FLAGS FOR COORDINATES TO BE SAVED @E@@@@SN )@@G@@C DVSAV - BIT FLAGS FOR DEP. VAR. TO BE SAVED @E@@@@C SO )@@G@@ BAVAR - MAX. NUMBER OF VARIABLES FOR BANKRES @D@@@@C SP )@@G@@ BABUF - MAX. BUFFER SIZE FOR BANKRES @G@@@@C OSIZEM - MSQ )@@G@@AX. LENGTH OF OUTPUT SPECS WRITTEN ON UNIT 5 @E@@@@C TC -SR )@@G@@ VECTOR OF DEPENDENT VARIABLE NUMBERS @E@@@@C TW - VECTOSS )@@G@@R OF DEPENDENT VAR. GROUP SIZES @[@@@@C @E@@@@C IF THERE ST )@@G@@ARE NO ERRORS ON THE CARD , THE FOLLOWING@C@@@@C INFORMATION IS SU )@@G@@WRITTEN ON UNIT 3 - @B@@@@C MODNO,NFACT,NDEPV,NDVGRP SV )@@G@@@C@@@@C HIST (NON-ZERO IF HISTOGRAMS) @D@@@@C SW )@@G@@ NCLASS, HMIN, HMAX (ONLY IF HIST .NE. 0)@C@@@@C COORDINATESX )@@G@@ NUMBERS (NFACT OF THEM)@E@@@@C DEPENDENT VARIABLE NUMBERS (SY )@@G@@NDEPV OF THEM) @D@@@@C DEPVAR GROUP SIZES (NDVGRP OF THEMSZ )@@G@@) @[@@@@C @D@@@@C OUTPUT SPECIFICATIONS ARE WRITTEN ON UNTA )@@G@@IT 5. @[@@@@C @[@@@@C @[@@@@C @[@@@@C @A@@@@ COMMONTB )@@G@@ /S82BLK/ LCCT,LCCN, @D@@@@ - NSCALE,SCALNO(400),SCALTP(400),SCTC )@@G@@ALEN(400), @A@@@@ - VARSCL(500),VARLIM,VAROVF, @ @@@@ - MDATD )@@G@@TA,NWHEAD,NSCOUT, @ @@@@ - NMODEL,NWMODL,NCOORD,@B@@@@ - MODTE )@@G@@NO,NFACT,NCELL,NDEPV,NDVGRP, @ @@@@ - NTABS,NDVTOT,NGRTOT, @ @@@@TF )@@G@@ - HISTAT,MMCOR,NHISTS, @A@@@@ - DATSAV,CDSAV(5),DVSAV(30), TG )@@G@@@A@@@@ - BAVAR,BABUF,OSIZEM,OSIZEC, @B@@@@ - TA(400),TB(400)TH )@@G@@,TC(400),TW(400) @[@@@@C @[@@@@C @ @@[@ DIMENSION CWSPEC(1TI )@@G@@04) @^[@@@ DATA CWSPEC / @C@@@@ 1 12HGROUPS ,-1,0,TJ )@@G@@1001,2,1,9,1,1000,@C@@@@ 2 12HDEPVARS ,2,0,1,400,1,-1,0,0, TK )@@G@@@C@@@@ 3 12HREPVARS ,2,0,501,400,1,-2,0,0, @A@@@@ 4 12HTL )@@G@@NOANOVA ,2,0,1401,0,@A@@@@ 5 12HREFFECTS ,2,0,1402,0,@F@@@@TM )@@G@@ 6 12HHIST ,2,0,1403,4,0,19,-999999999,999999999, @A@@@@TN )@@G@@ 7 12HASSOC ,2,0,1430,0,@C@@@@ 8 12HHOMVAR ,2,0,1TO )@@G@@431,10,1,8,0,0, @D@@@@ 9 12HRESID ,2,0,1460,3,0,9,1,999999TP )@@G@@999, @C@@@@ - 12HBANKRES ,4,3,1480,1,0,8,0,0, @A@@[@ 1TQ )@@G@@ 12HNODSTAT ,2,0,1490,0,@C@@[@ 2 12HLABELVAR ,2,0,1495,1,TR )@@G@@1,-1,0,0/ @[[@@@C @[@@@@C @^@@@@ DATA NHV /10/ @B@@@@TS )@@G@@ DIMENSION HMV(10),HMCL(2,10),HMC(10)@G@@@@ DATA HMCL /'BARTLETT )@@G@@TT','COCHRAN','FMAX ','BKB ','BKBLOG ', @F@@@@ - 'JACKKNIFTU )@@G@@E','LEVENEZ','LEVENEM','LEVENES','BA '/ @E@@@@ DATA HMC /'BTV )@@G@@','C','F','K',' ','J','LZ','LM','LS',' '/ @[@@@@C @ @@@@ DIMENSTW )@@G@@ION MODNUM(50) @^@@@@ DATA MODLIM /50/ @[@@@@C @E@@@@ TX )@@G@@DIMENSION CDVAR(150),CDSCL(150),FVAR(50),FSCL(50) @A@@@@ DATA CTY )@@G@@DLIM /150/ FACLIM /50/ @D@@@@ EQUIVALENCE (CDVAR(1),TA(1)), (FVAR(TZ )@@G@@1),TA(151)) @E@@@@ EQUIVALENCE (CDSCL(1),TA(201)), (FSCL(1),TA(351)UA )@@G@@) @B@@@@ DIMENSION CDCORA(150),CDCORH(150) @E@@@@ EQUIVAUB )@@G@@LENCE (CDCORA(1),TB(1)), (CDCORH(1),TB(151)) @[@@@@C @^@@@@ UC )@@G@@DIMENSION INFO(2) @^@@@@ REAL HMIN,HMAX @#@@@@ REAL RVAL UD )@@G@@@ @@@@ EQUIVALENCE (IVAL,RVAL) @^@@@@ DIMENSION SPEC(12)@#@@@@UE )@@G@@ COMMON BC(1)@[@@@@C @[@@@@C @^@@@@C INITIALIZEUF )@@G@@@[@@@@C @]@@@@ NERR=0@[@@@@C @C@@@@C CHECK MODEUG )@@G@@L NUMBER FOR DUPLICATE @[@@@@C @#@@@@ MODNO=CN @A@@@@ UH )@@G@@IF(NMODEL .EQ. 0) GO TO 80 @B@@@@ IF(NMODEL .GT. MODLIM) GO TO 1UI )@@G@@00 @^@@@@ DO 55 I=1,NMODEL @B@@@@ IF(MODNO .EQ. MODNUM(I))UJ )@@G@@ GO TO 60 @#@@@@ 55 CONTINUE @#@@@@ GO TO 80 @A@@@@ 60 UK )@@G@@NCN=MOD(MODNO*100+1,10000) @#@@@@ GO TO 70 @#@@@@ 65 NCN=NCUL )@@G@@N+1 @^@@@@ 70 DO 75 I=1,NMODEL @B@@@@ IF(NCN .EQ. MODNUM(I)) GUM )@@G@@O TO 65 @#@@@@ 75 CONTINUE @^@@@@ CALL S1PCHD(1) @ @@@@UN )@@G@@ PRINT 9705,MODNO,NCN @G@@@@ 9705 FORMAT(' MODEL',I6,' ALREADY SUO )@@G@@PECIFIED. THIS MODEL RENUMBERED'I6)@#@@@@ MODNO=NCN @^@@@@ 80 UP )@@G@@NMODEL=NMODEL+1 @B@@@@ IF(NMODEL .GT. MODLIM) GO TO 100 @ @@@@UQ )@@G@@ MODNUM(NMODEL)=MODNO @[@@@@C @B@@@@C DECODE ANDUR )@@G@@ CHECK THE CARD @[@@@@C @F@@@@ 100 CALL S1ENDC(12HMODEL ,CUS )@@G@@ARD,NC,SCR,LSCR,LEND,NE,$999) @#@@@@ NERR=NERR+NE@#@@@@ BS=LENUT )@@G@@D @^@@@@ LSTOR=LSCR-LEND @A@@@@ IF(LSTOR .LT. 1500) GO TUU )@@G@@O 999 @G@@[@ CALL S1ENST(12HMODEL ,SCR,LEND,CWSPEC,12,0,SCR(BUV )@@G@@S+1),LSTOR, @#[@@@ - DUMMY,NE)@#@@@@ NERR=NERR+NE@[@@@@C UW )@@G@@@D@@@@C BEGIN LOOP TO CHECK AND SAVE GROUP SPECS@[@@@@C UX )@@G@@@#@@@@ 150 L=BS+1001 @#@@@@ NFACT=SCR(L)@#@@@@ NCELL=0 UY )@@G@@@A@@@@ IF(NFACT .EQ. 0) GO TO 300 @B@@@@ IF(NFACT .LE. FACLUZ )@@G@@IM) GO TO 160 @#@@@@ CALL ERROR @^@@@@ PRINT 9150,FACLIM VA )@@G@@@G@@@@ 9150 FORMAT(' ***** ONEWAY2 ERROR. LIMIT OF',I5,' GROUPS CONTROLVB )@@G@@ WORDS@#@@@@ - EXCEEDED') @#@@@@ NFACT=FACLIM@#@@@@ 160 LUP=NFVC )@@G@@ACT*8 @^@@@@ DO 165 I=1,LUP @]@@@@ L=L+1 @#@@@@ 165 TW(I)=VD )@@G@@SCR(L)@]@@@@ L=1 @^@@@@ DO 280 I=1,NFACT @#@@@@ FVAR(IVE )@@G@@)=0 @#@@@@ FSCL(I)=0 @#@@@@ NMODIF=TW(L)@]@@@@ L=L+1 VF )@@G@@@A@@@@ IF(NMODIF .EQ. 0) GO TO 280 @[@@@@C @B@@@@C VG )@@G@@ CHECK VARIABLE SPECIFICATION@[@@@@C @A@@@@ IF(TW(L) .EQ. 4) GVH )@@G@@O TO 180 @#@@@@ VI=TW(L+1) @]@@@@ L=L+2 @ @@@@ CALL SVI )@@G@@1CKVI(VI,$170) @#@@@@ GO TO 200 @C@@@@ 170 CALL S1MSG4(366,VIVJ )@@G@@,'GROUPS',' ') @#@@@@ NERR=NERR+1 @#@@@@ GO TO 195 VK )@@G@@@A@@@@ 180 CALL S1CKVN(TW(L+1),VI,$190) @]@@@@ L=L+3 @#@@@@ VL )@@G@@GO TO 200 @E@@@@ 190 CALL S1MSG5(367,TW(L+1),TW(L+2),'GROUPS',' VM )@@G@@') @#@@@@ NERR=NERR+1 @]@@@@ L=L+3 @]@@@@ 195 VI=0 @#@@@@VN )@@G@@ 200 FVAR(I)=VI @A@@@@ IF(NMODIF .GT. 1) GO TO 220 @ @@@@ VO )@@G@@IF(VI .EQ. 0) GO TO 280 @#@@@@ KVS=(VI+1)/2@ @@@@ KVSB=(VI-2*KVP )@@G@@VS+1)*16+1 @A@@@@ TEMP=FLD(KVSB,16,VARSCL(KVS)) @A@@@@ IF(TEMVQ )@@G@@P .NE. 0) GO TO 210 @#@@@@ CALL ERROR @^@@@@ PRINT 9205,VVR )@@G@@I @G@@@@ 9205 FORMAT(' ***** ONEWAY2 ERROR. SCALE HAS NOT BEEN DEFIVS )@@G@@NED FOR GROU@^@@@@ -PS VARIABLE',I4) @#@@@@ GO TO 280 @^@@@@VT )@@G@@ 210 SCAL=TEMP-20000 @#@@@@ GO TO 275 @[@@@@C @A@@@@C VU )@@G@@ CHECK SECOND MODIFIER @[@@@@C @A@@@@ 220 IF(TW(L) .EQ. 4) GVV )@@G@@O TO 230 @]@@@@ L=L+2 @#@@@@ 225 CALL ERROR @#@@@@ PRINT VW )@@G@@9225 @G@@@@ 9225 FORMAT(' ***** ONEWAY2 ERROR. SECOND MODIFIER OF GROUVX )@@G@@PS IS NOT IN@D@@@@ - ONE OF THESE FORMS - SCALE S, ALL K, XALL K') VY )@@G@@@#@@@@ GO TO 280 @#@@@@ 230 TEMP=TW(L+1)@]@@@@ L=L+3 @ @@@@VZ )@@G@@ CALL S1PRFT(TEMP,1,CHAR)@ @@@@ CALL S1PRST(TEMP,6,' ') @A@@@@WA )@@G@@ IF(CHAR .EQ. 'S') GO TO 234 @ @@@@ CALL S1PRST(TEMP,5,' ') WB )@@G@@@A@@@@ IF(CHAR .EQ. 'X') GO TO 232 @A@@@@ IF(CHAR .NE. 'A') WC )@@G@@GO TO 225 @ @@@@ CALL S1PRST(TEMP,4,' ') @A@@@@ IF(TEMP .NE.WD )@@G@@ 'ALL') GO TO 225 @]@@@@ NA=4 @#@@@@ GO TO 235 @A@@@@ 232 WE )@@G@@IF(TEMP .NE. 'XALL') GO TO 225@]@@@@ NA=5 @#@@@@ GO TO 235 WF )@@G@@@B@@@@ 234 IF(TEMP .NE. 'SCALE') GO TO 225 @]@@@@ NA=6 @]@@@@WG )@@G@@ 235 SCH=0 @^@@@@ DO 238 J=NA,12 @A@@@@ CALL S1PRFT(TW(L-2WH )@@G@@),J,CHAR) @A@@@@ IF(CHAR .EQ. ' ') GO TO 240 @B@@@@ IF(S1SWI )@@G@@PCT(CHAR) .NE. 2) GO TO 225 @#@@@@ SCH=SCH+1 @A@@@@ 238 CALL SWJ )@@G@@1PRST(INFO,SCH,CHAR) @ @@@@ 240 IF(SCH .EQ. 0) GO TO 225@ @@@@ WK )@@G@@CALL S1VLU(INFO,SCH,SK) @ @@@@ IF(NA .EQ. 6) GO TO 250 @D@@@@ WL )@@G@@IF(SK .GT. 1 .AND. SK .LE. 1000) GO TO 245 @#@@@@ CALL ERROR WM )@@G@@@#@@@@ PRINT 9240 @G@@@@ 9240 FORMAT(' ***** ONEWAY2 ERROR. K MUSWN )@@G@@T EXCEED 1 AND NOT EXCEED 1000@ @@@@ - WHEN ALL K IS USED') @]@@@@WO )@@G@@ SK=1 @#@@@@ 245 SCAL=-8*SK @A@@@@ IF(NA .EQ. 5) SCAL=-(8*SWP )@@G@@K+1) @#@@@@ GO TO 275 @[@@@@C @B@@@@C SECOND MODWQ )@@G@@IFIER IS SCALE S @[@@@@C @A@@@@ 250 IF(NSCALE .EQ. 0) GO TO 258 WR )@@G@@@^@@@@ DO 255 J=1,NSCALE @B@@@@ IF(SK .NE. SCALNO(J)) GO TO 25WS )@@G@@5 @]@@@@ SCAL=J@#@@@@ GO TO 260 @#@@@@ 255 CONTINUE WT )@@G@@@#@@@@ 258 CALL ERROR @^@@@@ PRINT 9260,SK @G@@@@ 9260 FORMATWU )@@G@@(' ***** ONEWAY2 ERROR. SCALE',I6,' HAS NOT BEEN DEFINED') @]@@@@ WV )@@G@@SCAL=0@#@@@@ GO TO 275 @^@@@@ 260 JS=SCALTP(SCAL) @ @@@@ WW )@@G@@IF(JS .GE. 0) GO TO 261 @#@@@@ SCAL=-JS @#@@@@ GO TO 260 WX )@@G@@@#@@@@ 261 WX=JS/8 @^@@@@ STYPE=AND(JS,7) @A@@@@ IF(STYWY )@@G@@PE .NE. 6) GO TO 263 @]@@@@ 262 SK=WX @^@@@@ IF(SK .EQ. 0) SK=1WZ )@@G@@@#@@@@ GO TO 245 @A@@@@ 263 IF(STYPE .NE. 7) GO TO 265 @]@@@@XA )@@G@@ NA=5 @#@@@@ GO TO 262 @D@@@@ 265 IF(STYPE .EQ. 0 .OR. VXB )@@G@@I .EQ. 0) GO TO 275 @A@@@@ CALL S1GTVT(VI,VTYP,$275) @A@@@@XC )@@G@@ IF(VTYP .EQ. 2) GO TO 267 @A@@@@ IF(STYPE .GE. 2) GO TO 2XD )@@G@@75 @#@@@@ CALL ERROR @^@@@@ PRINT 9265,SK,VI @G@@@@ 9265 XE )@@G@@FORMAT(' ***** ONEWAY2 ERROR. SCALE',I6,' IS A DISCRETE SCALE BUT@A@@@@XF )@@G@@ - VARIABLE',I4,' IS NUMERIC') @#@@@@ GO TO 275 @A@@@@ 267 XG )@@G@@IF(STYPE .EQ. 1) GO TO 270 @#@@@@ CALL ERROR @^@@@@ PRINT XH )@@G@@9267,SK,VI @G@@@@ 9267 FORMAT(' ***** ONEWAY2 ERROR. SCALE',I6,' IS A XI )@@G@@RANGE SCALE BUT VA@A@@@@ -RIABLE',I4,' IS ALPHANUMERIC')@#@@@@ XJ )@@G@@GO TO 275 @ @@@@ 270 IF(WX .EQ. 0) GO TO 275 @ @@@@ CALL S1GTVW(XK )@@G@@VI,WID,$275)@A@@@@ IF(WID .GE. WX) GO TO 275 @#@@@@ CALL EXL )@@G@@RROR @^@@@@ PRINT 9270,VI,SK @G@@@@ 9270 FORMAT(' ***** ONEWAY2 EXM )@@G@@RROR. FIELD WIDTH OF VARIABLE',I4,' IS LE@E@@@@ -SS THAN THE MAXIMUXN )@@G@@M SCALE VALUE WIDTH OF SCALE',I6) @#@@@@ 275 FSCL(I)=SCAL@ @@@@ XO )@@G@@IF(SCAL)276,280,277 @#@@@@ 276 SK=-SCAL/8 @#@@@@ GO TO 278 XP )@@G@@@ @@@@ 277 SK=SCALEN(SCAL)/1024 @A@@@@ IF(SK .EQ. 0) SK=SCALEN(XQ )@@G@@SCAL) @A@@@@ 278 IF(SK .GT. NCELL) NCELL=SK @#@@@@ 280 CONTINUE XR )@@G@@@[@@@@C @A@@@@C CHECK REPVAR SPECS @[@@@@C @#@@@@XS )@@G@@ 300 NDEPV=0 @#@@@@ NDVGRP=0 @#@@@@ L=BS+501 @#@@@@XT )@@G@@ NDVS=SCR(L) @]@@@@ LS=0 @A@@@@ IF(NDVS .EQ. 0) GO TO 32XU )@@G@@5 @]@@@@ L=L+1 @#@@@@ GSIZE=0 @^@@@@ DO 320 I=1,NXV )@@G@@DVS @#@@@@ NEXT=SCR(L) @A@@@@ IF(NEXT .EQ. 0) GO TO 310 XW )@@G@@@A@@@@ CALL S1GTVT(NEXT,VTYP,$305) @A@@@@ IF(VTYP .NE. 2) GOXX )@@G@@ TO 305 @#@@@@ CALL ERROR @^@@@@ PRINT 9305,NEXT @G@@@@XY )@@G@@ 9305 FORMAT(' ***** ONEWAY2 ERROR. DEPENDENT VARIABLE',I4,' IS ALPHANUXZ )@@G@@@#@@@@ -MERIC') @^@@@@ 305 NDEPV=NDEPV+1 @A@@@@ IF(NDEYA )@@G@@PV .GT. 400) GO TO 395 @^@@@@ GSIZE=GSIZE+1 @#@@@@ LS=LS+YB )@@G@@1 @#@@@@ TC(LS)=NEXT @#@@@@ GO TO 320 @^@@@@ 310 NDVGRPYC )@@G@@=NDVGRP+1 @^@@@@ TW(NDVGRP)=GSIZE @#@@@@ GSIZE=0 @]@@@@YD )@@G@@ 320 L=L+1 @^@@@@ NDVGRP=NDVGRP+1 @^@@@@ TW(NDVGRP)=GSIZE YE )@@G@@@[@@@@C @A@@@@C CHECK DEPVARS SPECS @[@@@@C @]@@@@YF )@@G@@ 325 L=BS+1@#@@@@ NDVS=SCR(L) @#@@@@ NREPV=NDEPV @A@@@@ YG )@@G@@IF(NDVS .EQ. 0) GO TO 345 @]@@@@ L=L+1 @^@@@@ DO 340 I=1,NYH )@@G@@DVS @#@@@@ NEXT=SCR(L) @]@@@@ L=L+1 @A@@@@ CALL S1GTVT(YI )@@G@@NEXT,VTYP,$330) @A@@@@ IF(VTYP .NE. 2) GO TO 330 @#@@@@ YJ )@@G@@CALL ERROR @^@@@@ PRINT 9305, NEXT @^@@@@ 330 NDEPV=NDEPV+1 YK )@@G@@@A@@@@ IF(NDEPV .GT. 400) GO TO 395 @#@@@@ LS=LS+1 @#@@@@YL )@@G@@ TC(LS)=NEXT @^@@@@ NDVGRP=NDVGRP+1 @#@@@@ TW(NDVGRP)=1YM )@@G@@@A@@@@ IF(NREPV .EQ. 0) GO TO 340 @^@@@@ DO 335 J=1,NREPV YN )@@G@@@A@@@@ IF(NEXT .NE. TC(J)) GO TO 335 @#@@@@ CALL ERROR @^@@@@YO )@@G@@ PRINT 9335, NEXT @G@@@@ 9335 FORMAT(' ***** ONEWAY2 ERROR. DEPVAYP )@@G@@RS VARIABLE',I4,' IS ALSO SPEC@ @@@@ -IFIED WITH REPVARS') @#@@@@YQ )@@G@@ GO TO 340 @#@@@@ 335 CONTINUE @#@@@@ 340 CONTINUE @A@@@@YR )@@G@@ 345 IF(NDEPV .NE. 0) GO TO 400 @[@@@@C @D@@@@C CREAYS )@@G@@TE DEPVARS LIST IF NONE SPECIFIED @[@@@@C @#@@@@ 350 NVARS=0 YT )@@G@@@B@@@@ CALL S1GVAL('NVARS',NVARS,$360,$360)@#@@@@ 360 NTVARS=0 YU )@@G@@@C@@@@ CALL S1GVAL('NTVARS',NTVARS,$370,$370) @A@@@@ 370 IF(NTVYV )@@G@@ARS .NE. 0) NVARS=NTVARS@A@@@@ IF(NVARS .EQ. 0) GO TO 400 @^@@@@YW )@@G@@ DO 390 I=1,NVARS @ @@@@ CALL S1GTVT(I,VTYP,$380)@A@@@@ YX )@@G@@IF(VTYP .EQ. 2) GO TO 390 @A@@@@ 380 IF(NFACT .EQ. 0) GO TO 387 YY )@@G@@@^@@@@ DO 385 J=1,NFACT @A@@@@ IF(I .EQ. FVAR(J)) GO TO 390 YZ )@@G@@@#@@@@ 385 CONTINUE @^@@@@ 387 NDEPV=NDEPV+1 @A@@@@ IF(NDEZA )@@G@@PV .GT. 400) GO TO 395 @#@@@@ TC(NDEPV)=I @^@@@@ NDVGRP=NDVGRZB )@@G@@P+1 @#@@@@ TW(NDVGRP)=1@#@@@@ 390 CONTINUE @#@@@@ GO TO ZC )@@G@@400 @#@@@@ 395 CALL ERROR @#@@@@ PRINT 9395 @G@@@@ 9395 FORMATZD )@@G@@(' ***** ONEWAY2 ERROR. MAXIMUM OF 400 DEPENDENT VARIABLES @#@@@@ -ZE )@@G@@EXCEEDED') @[@@@@C @ @@@@C CHECK HIST SPECS@[@@@@C ZF )@@G@@@#@@@@ 400 L=BS+1403 @]@@@@ HIST=0@#@@@@ HCORE=0 @#@@@@ZG )@@G@@ NCLASS=0 @A@@@@ IF(SCR(L) .EQ. 0) GO TO 450 @]@@@@ ZH )@@G@@HIST=1@#@@@@ MINMAX=2 @]@@@@ HMIN=0@]@@@@ HMAX=0@#@@@@ZI )@@G@@ NCLASS=24 @^@@@@ NMODIF=SCR(L+1) @A@@@@ IF(NMODIF .EZJ )@@G@@Q. 0) GO TO 440 @]@@@@ HIST=2@]@@@@ L=L+2 @A@@@@ IF(SCRZK )@@G@@(L) .EQ. 1) GO TO 410 @#@@@@ 405 CALL ERROR @#@@@@ PRINT 9405 ZL )@@G@@@G@@@@ 9405 FORMAT(' ***** ONEWAY2 ERROR. HIST IS NOT IN ONE OF THESE FZM )@@G@@ORMS -@B@@@@ - HIST, HIST(N), HIST(N,MIN,MAX)') @#@@@@ GO TO ZN )@@G@@450 @^@@@@ 410 NCLASS=SCR(L+1) @]@@@@ L=L+2 @E@@@@ IF(NCLZO )@@G@@ASS .GE. 5 .AND. NCLASS .LE. 40) GO TO 415 @#@@@@ CALL ERROR ZP )@@G@@@#@@@@ PRINT 9410 @G@@@@ 9410 FORMAT(' ***** ONEWAY2 ERROR. NUMBEZQ )@@G@@R OF INTERVALS SPECIFIED WITH @B@@@@ -HIST MUST BE BETWEEN 5 AND 40'ZR )@@G@@) @A@@@@ IF(NCLASS .GT. 40) NCLASS=40 @A@@@@ IF(NCLASS .LZS )@@G@@T. 5) NCLASS=5 @A@@@@ 415 IF(NMODIF .EQ. 1) GO TO 440 @A@@@@ ZT )@@G@@IF(NMODIF .EQ. 3) GO TO 418 @A@@@@ IF(NMODIF .NE. 4) GO TO 405 ZU )@@G@@@A@@@@ IF(SCR(L) .NE. 5) GO TO 405 @]@@@@ L=L+1 @ @@@@ 418 ZV )@@G@@IF(SCR(L)-2)420,422,405 @^@@@@ 420 HMIN=SCR(L+1) @#@@@@ GO TO ZW )@@G@@425 @^@@@@ 422 IVAL=SCR(L+1) @#@@@@ HMIN=RVAL @]@@@@ 425 ZX )@@G@@L=L+2 @ @@@@ IF(SCR(L)-2)430,432,405 @^@@@@ 430 HMAX=SCR(L+1) ZY )@@G@@@#@@@@ GO TO 435 @^@@@@ 432 IVAL=SCR(L+1) @#@@@@ HMAX=RZZ )@@G@@VAL @#@@@@ 435 MINMAX=1 @A@@@@ IF(HMIN .LT. HMAX) GO TO 440 AA )@@G@@@#@@@@ CALL ERROR @#@@@@ PRINT 9440 @G@@@@ 9440 FORMAT(' ***AB )@@G@@** ONEWAY2 ERROR. HIST MINIMUM VALUE IS NOT LESS THAN@^@@@@ - MAXIMAC )@@G@@UM VALUE') @ @@@@ 440 HISTAT=OR(HISTAT,MINMAX)@A@@@@ NHISTS=NHISTAD )@@G@@S+NFACT*NDVGRP @^@@@@ HCORE=(NCLASS+1)/2@A@@@@ IF(HCORE .EQAE )@@G@@. 0) HCORE=12 @^@@@@ HCORE=HCORE*NDVGRP@[@@@@C @A@@@@C AF )@@G@@ CHECK HOMVAR SPECS @[@@@@C @#@@@@ 450 L=BS+1431 @^@@@@AG )@@G@@ DO 455 I=1,NHV @#@@@@ 455 HMV(I)=0 @^@@@@ NMODIF=SCR(LAH )@@G@@) @A@@@@ IF(NMODIF .EQ. 0) GO TO 475 @]@@@@ L=L+1 @^@@@@AI )@@G@@ DO 470 J=1,NMODIF @#@@@@ TEMP=SCR(L) @]@@@@ L=L+2 @^@@@@AJ )@@G@@ DO 460 I=1,NHV @A@@@@ IF(TEMP .EQ. HMC(I)) GO TO 458@B@@@@AK )@@G@@ IF(TEMP .NE. HMCL(1,I)) GO TO 460 @C@@@@ IF(SCR(L-1) .NE. HAL )@@G@@MCL(2,I)) GO TO 460 @]@@@@ 458 II=I @#@@@@ GO TO 465 @#@@@@AM )@@G@@ 460 CONTINUE @#@@@@ CALL ERROR @A@@@@ PRINT 9460,SCR(L-2AN )@@G@@),SCR(L-1) @G@@@@ 9460 FORMAT(' ***** ONEWAY2 ERROR. THE CODE ',2A6,' AO )@@G@@CANNOT BE USED WIT@#@@@@ -H HOMVAR') @#@@@@ GO TO 470 @A@@@@AP )@@G@@ 465 IF(HMV(II) .EQ. 0) GO TO 468 @#@@@@ CALL ERROR @#@@@@ AQ )@@G@@PRINT 9465 @G@@@@ 9465 FORMAT(' ***** ONEWAY2 ERROR. THE SAME MODIFIERAR )@@G@@ OF HOMVAR IS SPEC@ @@@@ -IFIED MORE THAN ONCE') @#@@@@ 468 HMV(IIAS )@@G@@)=1 @#@@@@ 470 CONTINUE @[@@@@C @A@@@@C CHECK BANKAT )@@G@@RES SPECS @[@@@@C @#@@@@ 475 L=BS+1480 @]@@@@ NADD=0@A@@@@AU )@@G@@ IF(SCR(L) .EQ. 0) GO TO 500 @A@@@@ IF(NFACT .LE. 1) GO TO 4AV )@@G@@80 @#@@@@ CALL ERROR @#@@@@ PRINT 9475 @G@@@@ 9475 FORMATAW )@@G@@(' ***** ONEWAY2 ERROR. BANKRES CANNOT BE SPECIFIED IF GROU@A@@@@ -AX )@@G@@PS IS USED MORE THAN ONCE') @#@@@@ 480 NADD=NDEPV @ @@@@ IF(NADAY )@@G@@D .EQ. 0) NADD=1 @^@@@@ NMODIF=SCR(L+1) @A@@@@ IF(NMODIF .EAZ )@@G@@Q. 0) GO TO 486 @^@@@@ INFO(1)=SCR(L+2) @^@@@@ INFO(2)=SCR(BA )@@G@@L+3) @#@@@@ DO 482 I=1,9@ @@@@ CALL S1PRFT(INFO,I,CHAR)@A@@@@BB )@@G@@ IF(CHAR .NE. ' ') GO TO 482 @]@@@@ NCH=I @#@@@@ GO TO BC )@@G@@490 @#@@@@ 482 CONTINUE @#@@@@ 484 CALL ERROR @#@@@@ PRINT BD )@@G@@9484 @G@@@@ 9484 FORMAT(' ***** VARIABLE NAME SPECIFIED WITH BANKRES HABE )@@G@@S TOO MANY C@#@@@@ -HARACTERS') @#@@@@ GO TO 500 @C@@@@ 486 BF )@@G@@CALL S1GTAG('VNAMES',FW,DUM,DUM,$500) @C@@@@ CALL S1GTAG('INAMEBG )@@G@@S',FW,DUM,DUM,$490) @]@@@@ 490 LS=1 @]@@@@ NSUF=1@^@@@@ BH )@@G@@DO 495 I=1,NADD @A@@@@ IF(NMODIF .NE. 0) GO TO 492 @A@@@@ BI )@@G@@IF(NDEPV .EQ. 0) GO TO 491 @A@@@@ IF(TC(I) .LE. 0) GO TO 495 BJ )@@G@@@^@@@@ L=FW+(TC(I)-1)*2 @B@@@@ IF(BC(L) .EQ. ' ') GO TO BK )@@G@@491 @^@@@@ INFO(1)='R ' @^@@@@ INFO(2)=' ' @A@@@@BL )@@G@@ CALL S1TCHS(BC(L),1,INFO,2,7) @#@@@@ GO TO 493 @^@@@@ 491 BM )@@G@@INFO(1)='AVR ' @^@@@@ INFO(2)=' ' @]@@@@ NCH=4 @A@@@@BN )@@G@@ 492 IF(NADD .EQ. 1) GO TO 493 @A@@@@ CALL S1ENCI(NSUF,TEMP,6,BO )@@G@@6,1) @#@@@@ NSUF=NSUF+1 @^@@@@ CALL S1ENCB(KL) @A@@@@ BP )@@G@@IF(NCH+KL .GT. 9) GO TO 484 @B@@@@ CALL S1TCHS(TEMP,7-KL,INFO,NCHBQ )@@G@@,KL) @#@@@@ 493 SCR(LS)=0 @A@@@@ IF(I .GT. 1) SCR(LS)='SKPERR' BR )@@G@@@D@@@@ CALL S1CKBN('BANKRES',INFO,1,SCR(LS),BUFSIZ,NE) @#@@@@ BS )@@G@@NERR=NERR+NE@^@@@@ SCR(LS+1)=INFO(1) @^@@@@ SCR(LS+2)=INFO(2) BT )@@G@@@#@@@@ LS=LS+3 @B@@@@ IF(BUFSIZ .GT. BABUF) BABUF=BUFSIZ BU )@@G@@@#@@@@ 495 CONTINUE @A@@@@ IF(BAVAR .LT. NADD) BAVAR=NADD@[@@@@BV )@@G@@C @C@@[@C CHECK LABELVAR AND RESID SPECS @[[@@@C BW )@@G@@@#@@@@ 500 RPRINT=0 @#@@@@ RPUNCH=0 @#@@@@ RFILE=0 BX )@@G@@@ @@[@ LABELV=SCR(BS+1495) @A@@[@ IF(LABELV .EQ. 0) GO TO BY )@@G@@505 @A@@[@ CALL S1GTVT(LABELV,TYP,$502) @^@@[@ 502 LABELV=LABELBZ )@@G@@V*2 @A@@[@ IF(TYP .EQ. 1) LABELV=LABELV+1@#@@[@ 505 L=BS+1460 CA )@@G@@@A[@@@ IF(SCR(L) .EQ. 0) GO TO 550 @^@@@@ NMODIF=SCR(L+1) CB )@@G@@@]@@@@ L=L+2 @A@@@@ IF(NMODIF .NE. 0) GO TO 510 @#@@@@ CC )@@G@@RPRINT=1 @#@@@@ GO TO 550 @^@@@@ 510 DO 540 J=1,NMODIF @#@@@@CD )@@G@@ VAL=SCR(L+1)@A@@@@ IF(VAL .NE. 'PRINT') GO TO 520@A@@@@ CE )@@G@@IF(RPRINT .EQ. 0) GO TO 515 @#@@@@ 512 CALL ERROR @^@@@@ PRINT CF )@@G@@9515,VAL @G@@@@ 9515 FORMAT(' ***** ONEWAY2 ERROR. ',A5,' IS SPECIFICG )@@G@@ED MORE THAN ONCE @#@@@@ -WITH RESID')@#@@@@ 515 RPRINT=1 @#@@@@CH )@@G@@ GO TO 540 @A@@@@ 520 IF(VAL .NE. 'PUNCH') GO TO 525@A@@@@ CI )@@G@@IF(RPUNCH .NE. 0) GO TO 512 @#@@@@ RPUNCH=1 @#@@@@ GO TO CJ )@@G@@540 @A@@@@ 525 CALL S1UFOT(SCR(L),2,TEMP,NE) @#@@@@ NERR=NERR+NECK )@@G@@@ @@@@ CALL S1UFT2(LUNDEV) @A@@@@ IF(LUNDEV .NE. 2) GO TO CL )@@G@@528 @D@@@@ IF(NDVGRP .LE. 1 .AND. NFACT .LE. 1) GO TO 528@#@@@@CM )@@G@@ NERR=NERR+1 @^@@@@ CALL S1PCHD(2) @#@@@@ PRINT 9525 CN )@@G@@@G@@@@ 9525 FORMAT(' ***** ONEWAY2 ERROR. RESID OUTPUT FILE CAN NOT BE CO )@@G@@ON MAS@G@@@@ -S STORAGE IF THERE ARE MULTIPLE DEPENDENT VARIABLES,'/CP )@@G@@20X,'REPLICA@A@@@@ -TE SETS, OR GROUPS VARIABLES')@#@@@@ 528 CONTINCQ )@@G@@UE @A@@@@ IF(RFILE .EQ. 0) GO TO 530 @#@@@@ VAL='FILE' CR )@@G@@@#@@@@ GO TO 512 @#@@@@ 530 RFILE=TEMP @]@@@@ 540 L=L+3 @[@@@@CS )@@G@@C @B@@@@C UPDATE COORDINATE LISTS @[@@@@C @A@@@@CT )@@G@@ 550 IF(NFACT .EQ. 0) GO TO 600 @^@@@@ DO 590 I=1,NFACT @#@@@@CU )@@G@@ VI=FVAR(I) @ @@@@ IF(VI .EQ. 0) GO TO 590 @#@@@@ SCAL=FCV )@@G@@SCL(I)@A@@@@ IF(SCAL .EQ. 0) GO TO 590 @A@@@@ IF(NCOORD .ECW )@@G@@Q. 0) GO TO 575 @^@@@@ DO 570 J=1,NCOORD @A@@@@ IF(VI .NE. CCX )@@G@@DVAR(J)) GO TO 570@A@@@@ IF(SCAL .LT. 0) GO TO 560 @B@@@@ CY )@@G@@IF(SCAL .NE. CDSCL(J)) GO TO 570 @#@@@@ 555 FVAR(I)=J @A@@@@ CZ )@@G@@CDCORA(J)=CDCORA(J)+NDVGRP @ @@@@ NCLAS2=AND(CDCORH(J),63)@A@@@@DA )@@G@@ CDCORH(J)=CDCORH(J)-NCLAS2 @A@@@@ CDCORH(J)=CDCORH(J)+HCORDB )@@G@@E*64 @C@@@@ CDCORH(J)=CDCORH(J)+MAX0(NCLASS,NCLAS2) @#@@@@ DC )@@G@@GO TO 590 @A@@@@ 560 IF(CDSCL(J) .GE. 0) GO TO 570 @#@@@@ TEMP=-DD )@@G@@SCAL @^@@@@ XALL=AND(TEMP,1) @#@@@@ ALLK=TEMP/8 @^@@@@ DE )@@G@@TEMP=-CDSCL(J) @^@@@@ XALL2=AND(TEMP,1) @#@@@@ ALLK2=TEMP/8DF )@@G@@@B@@@@ IF(XALL + XALL2 .EQ. 1) GO TO 570 @A@@@@ IF(ALLK .GT.DG )@@G@@ ALLK2) ALLK2=ALLK@A@@@@ CDSCL(J)=-(8*ALLK2+XALL2) @#@@@@ DH )@@G@@GO TO 555 @#@@@@ 570 CONTINUE @^@@@@ 575 NCOORD=NCOORD+1 @B@@@@DI )@@G@@ IF(NCOORD .LE. CDLIM) GO TO 580 @#@@@@ CALL ERROR @^@@@@DJ )@@G@@ PRINT 9575,CDLIM @G@@@@ 9575 FORMAT(' ***** ONEWAY2 ERROR. LIMITDK )@@G@@ OF ',I4,' COORDINATE SCALES E@#@@@@ -XCEEDED') @#@@@@ NCOORDDL )@@G@@=1 @^@@@@ 580 CDVAR(NCOORD)=VI @^@@@@ CDSCL(NCOORD)=SCAL@^@@@@DM )@@G@@ FVAR(I)=NCOORD @ @@@@ CDCORA(NCOORD)=NDVGRP @A@@@@ DN )@@G@@CDCORH(NCOORD)=HCORE*64+NCLASS@#@@@@ 590 CONTINUE @A@@@@ IF(NFADO )@@G@@CT .EQ. 1) GO TO 600 @^@@@@ DO 598 I=2,NFACT @^@@@@ TEMP=FDP )@@G@@VAR(I-1) @A@@@@ IF(TEMP .EQ. 0) GO TO 598 @^@@@@ DO 595DQ )@@G@@ J=I,NFACT @B@@@@ IF(FVAR(J) .NE. TEMP) GO TO 595 @#@@@@ DR )@@G@@CALL ERROR @#@@@@ PRINT 9595 @G@@@@ 9595 FORMAT(' ***** ONEWAY2 EDS )@@G@@RROR. THE SAME VARIABLE WITH THE SAME SCA@E@@@@ -LE IS USED IN MOREDT )@@G@@ THAN ONE GROUPS SPECIFICATION') @#@@@@ GO TO 600 @#@@@@ 595 DU )@@G@@CONTINUE @#@@@@ 598 CONTINUE @[@@@@C @C@@@@C SET DV )@@G@@FLAGS FOR DATA TO BE SAVED @[@@@@C @D@@@@ 600 IF(HIST .EQ. 0 .ODW )@@G@@R. MINMAX .EQ. 1) GO TO 602 @C@@@@ CALL S1GTAG('STJBIN',FW,DUM,DUDX )@@G@@M,$605) @C@@@@ CALL S1GTAG('TVTYPE',FW,DUM,DUM,$602) @#@@@@DY )@@G@@ GO TO 605 @^@@@@ 602 DO 603 I=4,10 @A@@@@ IF(HMV(I) .NDZ )@@G@@E. 0) GO TO 605 @#@@@@ 603 CONTINUE @A@@@@ IF(NADD .NE. 0) GOEA )@@G@@ TO 605 @F@@@@ IF(RPRINT .NE. 0 .OR. RPUNCH .NE. 0 .OR. RFILEB )@@G@@E .NE. 0) @#@@@@ - GO TO 605@#@@@@ GO TO 650 @#@@@@ 605 EC )@@G@@DATSAV=1 @A@@@@ IF(NFACT .EQ. 0) GO TO 620 @^@@@@ DO 610ED )@@G@@ I=1,NFACT @A@@@@ CALL SETBIT(CDSAV,FVAR(I)) @#@@@@ 610 CONTINEE )@@G@@UE @A@@@@ 620 IF(NDEPV .EQ. 0) GO TO 640 @^@@@@ DO 630 I=1,NEF )@@G@@DEPV @ @@@@ CALL SETBIT(DVSAV,TC(I))@#@@@@ 630 CONTINUE @A@@[@EG )@@G@@ 640 CALL SETBIT(DVSAV,LABELV/2) @[[@@@C @D@@@@C SAVEEH )@@G@@ OUTPUT SPECS ON FILE 5 IF NO ERRORS@[@@@@C @ @@@@ 650 IF(NERR .NE.EI )@@G@@ 0) RETURN @^@@@@ SPEC(1)='MODEL' @^@@@@ SPEC(2)=MODNO EJ )@@G@@@C@@@@ SPEC(3)=SCR(BS+1401)*2 + SCR(BS+1490) @ @@@@ SPEC(4EK )@@G@@)=SCR(BS+1402) @ @@@@ SPEC(5)=SCR(BS+1430) @^@@@@ SPEC(6EL )@@G@@)=RPRINT @^@@@@ SPEC(7)=RPUNCH @^@@@@ SPEC(8)=RFILE EM )@@G@@@^@@[@ SPEC(9)=LABELV @#[@@@ SPEC(10)=0 @#@@@@ SPEC(1EN )@@G@@1)=0 @^@@@@ SPEC(12)=NADD @B@@@@ CALL S1IODR(5,'WRITE',12EO )@@G@@,SPEC,DUMMY)@B@@@@ CALL S1IODR(5,'WRITE',NHV,HMV,DUMMY)@F@@@@ EP )@@G@@IF(NADD .NE. 0) CALL S1IODR(5,'WRITE',3*NADD,SCR,DUMMY) @[@@@@C EQ )@@G@@@C@@@@C SAVE PROCESSING SPECS ON FILE 3 @[@@@@C @^@@@@ER )@@G@@ NWMODL=NWMODL+1 @B@@@@ CALL S1IODR(3,'WRITE',1,MODNO,DUMMY)ES )@@G@@@B@@@@ CALL S1IODR(3,'WRITE',1,NFACT,DUMMY)@B@@@@ CALL S1IODR(ET )@@G@@3,'WRITE',1,NDEPV,DUMMY)@C@@@@ CALL S1IODR(3,'WRITE',1,NDVGRP,DUMMYEU )@@G@@) @B@@@@ CALL S1IODR(3,'WRITE',1,HIST,DUMMY) @A@@@@ IF(HISEV )@@G@@T .EQ. 0) GO TO 810 @ @@@@ IF(HIST .EQ. 1) NCLASS=0@C@@@@ EW )@@G@@CALL S1IODR(3,'WRITE',1,NCLASS,DUMMY) @B@@@@ CALL S1IODR(3,'WRIEX )@@G@@TE',1,HMIN,DUMMY) @B@@@@ CALL S1IODR(3,'WRITE',1,HMAX,DUMMY) @#@@@@EY )@@G@@ 810 CONTINUE @^@@@@ NTABS=NTABS+NFACT @ @@@@ NDVTOT=NDVTOEZ )@@G@@T+NDEPV @ @@@@ NGRTOT=NGRTOT+NDVGRP @C@@@@ CALL S1IODR(FA )@@G@@3,'WRITE',NFACT,FVAR,DUMMY) @C@@@@ CALL S1IODR(3,'WRITE',NDEPV,TCFB )@@G@@,DUMMY) @C@@@@ CALL S1IODR(3,'WRITE',NDVGRP,TW,DUMMY) @]@@@@FC )@@G@@ RETURN@[@@@@C @[@@@@C @#@@@@ 999 PRINT 9999 @C@@@@ 9999 FD )@@G@@FORMAT(' ***** SYSTEM ERROR IN S82MOD') @#@@@@ RETURN 7 @[@@@@FE )@@G@@C @[@@@@C @C@@@@C LOCAL SUBROUTINE FOR ERROR HANDLING FF )@@G@@@[@@@@C @^@@@@ SUBROUTINE ERROR @#@@@@ NERR=NERR+1 @^@@@@FG )@@G@@ CALL S1PCHD(1) @]@@@@ RETURN@[@@@@C @[@@@@C @C@@@@FH )@@G@@C LOCAL SUBROUTINE TO SET BIT IN A VECTOR@[@@@@C @A@@@@ FI )@@G@@SUBROUTINE SETBIT(BVEC,INDEX) @ @@@@ IMPLICIT INTEGER (A-Z) @^@@@@FJ )@@G@@ DIMENSION BVEC(1) @ @@@@ IF(INDEX .LE. 0) RETURN @^@@@@ FK )@@G@@IW=(INDEX-1)/36 @^@@@@ IBIT=INDEX-36*IW-1@ @@@@ FLD(IBIT,1,BFL )@@G@@VEC(IW+1))=1@]@@@@ RETURN@]@@@@ END ___RPRINT .NE. 0 .OR. FM )@@G@@RPUNCH .NE. 0 .OR. RFILE .NE. 0) @#@@@@ -*[S@@@*SDFF*@I@@@@ FN )@@G@@SUBROUTINE S9DNPF(IMAGES,NCARDS,SCR,LSCR,NERR) STJ001FO )@@G@@00 @I@@@@C FP )@@G@@ STJ00200 @I@@@@C IF NCARDS .EQ. 0, S9DNPF GENERATES CODEFQ )@@G@@ WORDS FOR COMPLETELY CROSSED STJ00300 @I@@@@C DESIGN (RECOGNIZINGFR )@@G@@ POOL IF SET IN TAGGED STORAGE PRIOR TO CALL) STJ00400 @I@@@@C FS )@@G@@ STJ005FT )@@G@@00 @I@@@@ IMPLICIT INTEGER (A-Z) FU )@@G@@ STJ00600 @I@@@@ COMMON X(2) FV )@@G@@ STJ00700 @I@@@@ DIMENSION IMAGES(2FW )@@G@@),SCR(2),TABLE(30),NESTS(12,12) STJ00800 @I@@@@ FX )@@G@@DIMENSION NAME1(2),NAME2(2) STJ009FY )@@G@@00 @I@@@@ DIMENSION JERR(12),JNAME(2,12),JFAC(12),TAGSCR(10) FZ )@@G@@ STJ01000 @I@@@@ DIMENSION MASK(12),B(12),C(325),D(32GA )@@G@@5),E(325),NBITS(325),JJ(13) STJ01100 @B@@@@ DIMENSION IVEC(325GB )@@G@@),IN(6),OUT(6) @B@@@@ DIMENSION LABEL(132),PLABEL(132) @B@@@@GC )@@G@@ EQUIVALENCE (LABEL(1),PLABEL(1)) @I@@@@ DATA (TABLE(I),I=1GD )@@G@@,30)/ STJ01300 @I@@@@ *GE )@@G@@12HNEST ,-2,0,1,11,1,9,1,200, STJ014GF )@@G@@00 @I@@@@ *12HWITHIN ,-2,0,301,11,1,9,1,200, GG )@@G@@ STJ01500 @I@@@@ *12HPOOL ,2,0,0,1,1,1,1,11/ GH )@@G@@ STJ01600 @I@@@@ DIMENSION CCTYPE(2GI )@@G@@) STJ01700 @I@@@@ GJ )@@G@@DATA (CCTYPE(I),I=1,2)/12HDESIGN / STJ018GK )@@G@@00 @G@@@@ DATA COMMA,STAR,BLANK,WITHIN,NAME/2H ,,2H *,1H ,6HWIGL )@@G@@THIN,0/ @^@@@@C****************** @[@@@@C @G@@@@C THISGM )@@G@@ ROUTINE PROCESSES NWAY1 DESIGN CARDS OR GENERATES A FULLY @D@@@@C GN )@@G@@ CROSSED DESIGN IF NO DESIGN CARD WAS PRESENT. @[@@@@C @^@@@@C*****GO )@@G@@************* @[@@@@C @A@@@@C S9DNPF SYMBOL USAGE SUMMARY GP )@@G@@@[@@@@C @^@@@@C****************** @E@@@@C B - DIMENGQ )@@G@@SIONED(12), NESTING INDICATORS. @[@@@@C @^@@@@C BLANK - GR )@@G@@ =6H @I@@@@C C DIMENSIONED(325), CODE WORD ARRAY. BIT SEGS )@@G@@T FOR FACTOR IF THESE AR@D@@@@C WITHIN SOMETHING, OR NOGT )@@G@@ WITHINS. @[@@@@C @C@@@@C CCTYPE - DIMENSIONED(2), =12HDESGU )@@G@@IGN @^@@@@C COMMA - =2H ,@I@@@@C D - DIMENSIONEDGV )@@G@@(325), CODE WORD ARRAY. BIT SET FOR FACTOR IF C'S FACT@A@@@@C GW )@@G@@ ARE WITHIN D'S. @#@@@@C DCODE - @[@@@@C @A@@@@C GX )@@G@@ DUM - DUMMY VARIABLE. @G@@@@C E - DIMENSIONED(325),GY )@@G@@ CODE WORD ARRAY THAT IS PASSED TO @G@@@@C THE ANALYSIGZ )@@G@@S PHASE. EACH FACTOR HAS 3 BITS, FACTOR @G@@@@C ONE GHA )@@G@@ETTING THE LOW ORDER BITS. ONLY THE LOWEST @F@@@@C HB )@@G@@ ORDER BIT IS USED, AND IT IS ONE IF THAT FACTOR@D@@@@C HC )@@G@@ IS INVOLVED IN THIS INTERACTION. @C@@@@C EMAX - MAXIMUM VALHD )@@G@@UE IN THE E ARRAY.@B@@@@C FW - FIRST WORD OF TAG. @B@@@@HE )@@G@@C I - TEMPORARY VARIABLE. @C@@@@C ICKWD - CODE HF )@@G@@WORD WITH ALL BITS ON. @A@@@@C IDUM - DUMMY VARIABLE. @A@@@@HG )@@G@@C IFACT - FACTOR NUMBER. @B@@@@C II - TEMPORARY VHH )@@G@@ARIABLE. @F@@@@C IMAGES - FORMAL PARAMETER, DIMENSIONED(2), CHI )@@G@@ARD IMAGES @G@@@@C OF DESIGN CARD TO BE PROCESSED OR ZHJ )@@G@@ERO IF FULLY CROSS@G@@@@C CROSSED DESIGN IS TO BE GENERHK )@@G@@ATED AS THE DEFAULT. @ @@@@C IMAX - MAXIMUM I. @G@@@@C HL )@@G@@ IN - DIEMNSIONED(6), USED IN BUILDING LABELS FROM CODEWORD@B@@@@HM )@@G@@C FOR STORING CHARACTERS.@F@@@@C INEST - COUNTHN )@@G@@ OF THE NUMBER OF NEST CONTROL WORDS. @G@@@@C INICE - USED HO )@@G@@TO SET UP NICE OUTPUT, =2HST,2HND OR 2HRD OR 2HT@E@@@@C HP )@@G@@ 2HTH DEPENDING ON NUMBER TO BE PRINTED. @H@@@@C ISW - SWITCHQ )@@G@@H, =0 OR 1, IF ONE WE NEED A * OR , BEFORE NEXT ENTRY.@C@@@@C IVECHR )@@G@@ - DIMENSIONED(325), =0 OR 1. @G@@@@C IWITHN - NUMBER OF WHS )@@G@@ITHIN CONTROL WORDS ON THE DESIGN CARD. @B@@@@C I1 - TEMPOHT )@@G@@RARY VARIABLE. @B@@@@C I2 - TEMPORARY VARIABLE. @B@@@@HU )@@G@@C J -- TEMPORARY VARIABLE. @G@@@@C JERR - DIMENHV )@@G@@SIONED(12), NUMBER OF ERRORS IN MODIFIER LIST. @G@@@@C JFAC - HW )@@G@@ DIMENSIONED(12) FACTOR NUMBERS FROM THE WITHIN LIST @G@@@@C JFACHX )@@G@@T - FACTOR NUMBER RETURNED BY S9GTFC FROM WITHIN LIST. @E@@@@C HY )@@G@@ JJ - DIMENSIONED(13), TEMPORARY VARIABLE. @G@@@@C JNAMHZ )@@G@@E - DIMENSIONED(2,12) NAMES OF THE FACTOR VARIABLES IN @A@@@@C IA )@@G@@ A WITHIN LIST. @H@@@@C JSW - SWITCH. 1= IF THIIB )@@G@@S WAS LAST WORD OF THE LABEL, 0 OTHERWISE.@B@@@@C J1 - TEMPOIC )@@G@@RARY VARIABLE. @B@@@@C J2 - TEMPORARY VARIABLE. @B@@@@ID )@@G@@C K - TEMPORARY VARIABLE. @F@@@@C KNF - NUMBEIE )@@G@@R OF FACTORS, INCLUDING ANY ORDERFAC. @G@@@@C LABEL - DIMENIF )@@G@@SIONED(132), EQUIVALENT TO PLABEL. SPACE FOR @A@@@@C IG )@@G@@ LABEL BUILDING. @A@@@@C LCHAR - LAST CHARACTER. @G@@@@C IH )@@G@@ LEND - STATUS FROM S1IODR OR THE LENGTH OF CRACKED STRING @A@@@@II )@@G@@C FROM S1ENST. @G@@@@C LINFO - POINTER TO IJ )@@G@@TAG S9INFO IN BLANK COMMON ARRAY, EQUIV. @ @@@@C LOCS9IK )@@G@@. @G@@@@C LMAX - MAXIMUM NUMBER OF WORDS THAT S1ENDC CAN UIL )@@G@@SE IN THE @A@@@@C SCRATCH ARRAY. @E@@@@C LOC IM )@@G@@- LOCATION OF VNAME IN BLANK COMMON ARRAY. @E@@@@C LOCS9 - IN )@@G@@ EQUIV. LINFO - POINTER TO TAG S9INFO. @D@@@@C LOOP - FROM IO )@@G@@1 TO KNF, A POINTER INTO JJ. @D@@@@C LSCR - FORMAL PARAMETER,IP )@@G@@ LENGTH OF SCR. @B@@@@C LTOP - TEMPORARY VARIABLE. @G@@@@IQ )@@G@@C MASK - DIMENSIONED(12), BITS SET IN FACTORS POSITION IN EACHIR )@@G@@@^@@@@C CELL.@F@@@@C NAME - POINTER TO TAG 'VIS )@@G@@ANMES' IN BLANK COMMON ARRAY. @E@@@@C NAME1 - DIMENSIONED(2), NIT )@@G@@AME OF THE NEST FACTOR. @F@@@@C NAME2 - DIMENSIONED(2), NAME OFIU )@@G@@ THE WITHIN FACTOR. @G@@@@C NB - DIMENSIONED(325) NUMBERIV )@@G@@ OF BITS SET IN CODE WORDS. @F@@@@C THUS, NUMBER OF FIW )@@G@@ACTORS IN THIS CODE WORD. @D@@@@C NBITS - NUMBER OF BITS SEIX )@@G@@T IN THE CODEWORD.@F@@@@C NBMIN - MINIMUM NUMBER OF BITS SET INIY )@@G@@ ANY CODE WORD. @A@@@@C USED IN THE SORT.@E@@@@C IZ )@@G@@ NCARDS - NUMBER OF CARDS IN A SET OF DESIGN CARDS.@D@@@@C NCW JA )@@G@@- NUMBER OF CODE WORDS GENERATED. @^@@@@C NCW1 - NCW-1JB )@@G@@@^@@@@C NCW2 - NCW+2@F@@@@C NERR - FORMAL PARAMETER JC )@@G@@NUMBER OF CONTROL CARD ERRS @G@@@@C NERR1 - NUMBER OF CONTROLJD )@@G@@ CARD ERRORS FOUND BY SUBSIDIARY @ @@@@C ROUTINE. JE )@@G@@@F@@@@C NERR2 - NUMBER OF CONTROL CARD ERRORS FOUND BY S9GTFC. JF )@@G@@@C@@@@C NERR3 - TEMPORARY NUMBER OF ERRORS. @C@@@@C NERRJG )@@G@@4 - TEMPORARY NUMBER OF ERRORS. @G@@@@C NESTS - DIMENSIONEDJH )@@G@@(12,12), (N,M) IF FACTOR N IS WITHIN M. @C@@@@C NF - NUMBEJI )@@G@@R OF FACTOR VARIABLES. @E@@@@C NPOOL - VALUE OF MODIFIER TO POJJ )@@G@@OL CONTROL WORD. @C@@@@C NUMNST - DO-LOOP PARAMETER ON NEST. JK )@@G@@@G@@@@C OUT - DIMENSIONED(6), USED TO HOLD ONE WORD FULL OF CJL )@@G@@HARACT@A@@@@C OUTP - POINTER TO OUT. @G@@@@C PLABEL - JM )@@G@@ DIMENSIONED(132), EQUIV. LABEL, PLACE TO BUILD PACKED@ @@@@C JN )@@G@@ LABEL. @D@@@@C POINT - POINTER TO THE LABEL BEING BUJO )@@G@@ILT. @C@@@@C PP - POINTER TO PACKED LABEL. @G@@@@C JP )@@G@@ SCR - FORMAL PARAMETER, DIMENSIONED(2), SCRATCH ARRAY. @^@@@@JQ )@@G@@C STAR - =2H *@C@@@@C S1ENDC - CRACKS CARD INTO TOKENSJR )@@G@@. @G@@@@C S1ENST - CHECKS TOKENS FOR LEGALITY AND FURTHER CRJS )@@G@@ACKS THE @^@@@@C CARD.@C@@@@C S1GTAG - RETRIJT )@@G@@EVES POINTERS TO A TAG. @C@@@@C S1GVAL - RETRIEVES THE VALUE OF JU )@@G@@A TAG.@A@@@@C S1IODR - DOES DISK I/O @F@@@@C S1SERR - JV )@@G@@ ROUTINE TO PRINT STATJOB SYSTEM ERROR MESSAGE. @E@@@@C S1STFT - JW )@@G@@ CREATES TAGS AND ALLOCATES THEIR STORAGE.@G@@@@C S9GTFC - RETURJX )@@G@@NS A FACTOR NUMBER AND ITS NAME FROM WITHIN OR N@ @@@@C JY )@@G@@ NEST WORD. @G@@@@C TABLE - DIMENSIONED(30) SPECIFIES NAMES ANDJZ )@@G@@ TYPES OF CONTROL @E@@@@C WORDS ALLOWED ON DESIGN CARD KA )@@G@@FOR S1ENST. @F@@@@C TAGSCR - DIMENSIONED(10), PASED TO S1ENST ASKB )@@G@@ SCRATCH. @B@@@@C TEMP - TEMPORARY VARIABLE. @E@@@@C KC )@@G@@ TEST - ZERO OR THE VALUE OF THE TAG 'TEST'. @B@@@@C TOP KD )@@G@@- TEMPORARY VARIABLE. @D@@@@C VARNO - INPUT VARIABLE FOKE )@@G@@R THE FACTOR. @ @@@@C WITHIN - =6HWITHIN @D@@@@C X - KF )@@G@@ DIMENSIONED(2) BLANK COMMON ARRAY. @B@@@@C XC - TEMPOKG )@@G@@RARY VARIABLE. @B@@@@C XD - TEMPORARY VARIABLE. @[@@@@KH )@@G@@C @^@@@@C****************** @[@@@@C @C@@@@C S9DNPF TAGKI )@@G@@GED STORAGE USAGE SUMMARY. @[@@@@C @^@@@@C****************** KJ )@@G@@@[@@@@C @G@@@@C 'CROSSD' IS RETRIEVED TO DIAGNOSE ERROR THATKK )@@G@@ NESTED DESIGN IS @F@@@@C NOT FULLY CROSSED, AND CAN'T KL )@@G@@BE CROSSEDFIXDF. @G@@@@C 'POOL' IS RETRIEVED TO GET THE VALUEKM )@@G@@ OF MODIFIER OF THIS @ @@@@C CODE WORD. @G@@@@C KN )@@G@@ 'S9CODE' IS RETRIEVED TO PREVENT THE USE OF BOTH DESIGN AND @G@@@@KO )@@G@@C CODE CONTROL CARDS. ALSO CREATED TO HOLD THE CODE KP )@@G@@@ @@@@C WORDS. @C@@@@C 'S9ICOD' IS CREATED KQ )@@G@@TO HOLD IVEC. @D@@@@C 'S9INFO' RETRIEVED FOR FACTOR INFORMATKR )@@G@@ION. @G@@@@C 'TEST' - IS RETRIEVED TO DECIDE WHETHER TO PRINT DKS )@@G@@IAGNOSTIC @ @@@@C OUTPUT. @F@@@@C 'VNAMES' KT )@@G@@ IS RETRIEVED TO GET FACTORS VARIABLE NAMES. @[@@@@C @^@@@@C*****KU )@@G@@************* @[@@@@C @A@@@@C S9DNPF DISK I/O USAGE SUMARYKV )@@G@@@[@@@@C @^@@@@C****************** @[@@@@C @G@@@@C UNITKW )@@G@@ 2 IS WRITTEN WITH LABELS FOR TH( ANOVA TABLE IN RECORDS@F@@@@C KX )@@G@@ OF THE FORM: WORD 1= NUMBER OF FOLLOWINF WORDS,@D@@@@C KY )@@G@@ WORDS 2 TO N+1 LABEL IN FIELDATA. @D@@@@C UNIT 2 KZ )@@G@@ IS ENDFILED AND REWOUND AT THE END.@[@@@@C @^@@@@C*****************LA )@@G@@* @[@@@@C @ @@@@C SET IVEC TO ZERO. @[@@@@C @^@@@@LB )@@G@@C****************** @I@@@@ DO 5 I=1,325 LC )@@G@@ STJ01900 @I@@@@5 IVEC(I)=0 LD )@@G@@ STJ02000 @^@@@@C*****LE )@@G@@************* @[@@@@C @ @@@@C SET NESTS TO ZERO. @[@@@@LF )@@G@@C @I@@@@ DO 10 I=1,12 LG )@@G@@ STJ02100 @I@@@@ DO 10 J=1,12 LH )@@G@@ STJ02200 @I@@@@ NESTS(I,J)=0 LI )@@G@@ STJ02300 @I@@@@ 10 LJ )@@G@@CONTINUE STJ024LK )@@G@@00 @I@@@@ LOCS9=0 LL )@@G@@ STJ02500 @I@@@@ NF=0 LM )@@G@@ STJ02600 @^@@@@C****************** LN )@@G@@@^@@@@C****************** @[@@@@C @A@@@@C GET THE NUMBER OLO )@@G@@F FACTORS. @[@@@@C @^@@@@C****************** @I@@@@ CALL SLP )@@G@@1GTAG('S9INFO',LOCS9,DUM,DUM,$20) STJ02700 LQ )@@G@@@I@@@@ NF=X(LOCS9) LR )@@G@@ STJ02800 @I@@@@ 20 IF (NF.NE.0) TABLE(30)=NF LS )@@G@@ STJ02900 @D@@@@ IF(X(LOCS9+1) .NE. 0) TALT )@@G@@BLE(30)=TABLE(30)+1 @#@@@@ INEST=0 @I@@@@ IF (NCARDS.ELU )@@G@@Q.0) GO TO 170 STJ03000 @I@@@@LV )@@G@@ IF(LSCR.LT.1000) GO TO 999 LW )@@G@@STJ03200 @I@@@@ LMAX=LSCR-600 LX )@@G@@ STJ03300 @I@@@@ CALL S1ENDC(CCTYPE,IMAGES,NCARLY )@@G@@DS,SCR(601),LMAX,LEND,NERR1,$999) STJ03500 @I@@@@ NERR=NERR+NELZ )@@G@@RR1 STJ03600 @I@@@@MA )@@G@@ IF (NERR1.GT.0) GO TO 900 MB )@@G@@STJ03700 @I@@@@ J=600 MC )@@G@@ STJ03800 @I@@@@ IWITHN=0 MD )@@G@@ STJ03900 @I@@@@ LTOP=600+LENME )@@G@@D STJ04100 @I@@@@MF )@@G@@ 30 J=J+1 MG )@@G@@STJ04200 @I@@@@ IF (J.GT.LTOP) GO TO 60 MH )@@G@@ STJ04300 @I@@@@ IF(SCR(J).NE.0) GO TO 30 MI )@@G@@ STJ04400 @I@@@@ J=J+1 MJ )@@G@@ STJ04500 @I@@@@MK )@@G@@ IF (SCR(J).EQ.6HNEST ) GO TO 40 ML )@@G@@STJ04600 @I@@@@ IF (SCR(J).EQ.6HWITHIN) GO TO 50 MM )@@G@@ STJ04700 @I@@@@ GO TO 30 MN )@@G@@ STJ04800 @I@@@@ 40 INEST=INEST+MO )@@G@@1 STJ04900 @I@@@@MP )@@G@@ GO TO 30 MQ )@@G@@STJ05000 @I@@@@ 50 IWITHN=IWITHN+1 MR )@@G@@ STJ05100 @I@@@@ IF (IWITHN.EQ.INEST) GO TO 30 MS )@@G@@ STJ05200 @I@@@@ 55 NERR=NERR+1 MT )@@G@@ STJ05300 @I@@@@MU )@@G@@ INICE=6HTH MV )@@G@@STJ05400 @I@@@@ IF (IWITHN.EQ.1) INICE=6HST MW )@@G@@ STJ05500 @I@@@@ IF (IWITHN.EQ.2) INICE=6HND MX )@@G@@ STJ05600 @I@@@@ IF (IWITHN.EMY )@@G@@Q.3) INICE=6HRD STJ05700 @I@@@@MZ )@@G@@ CALL S1PCHD(1) NA )@@G@@STJ05800 @I@@@@ PRINT 57,IWITHN,INICE NB )@@G@@ STJ05900 @I@@@@ 57 FORMAT(' ***** NWAY1 ERROR. NENC )@@G@@ST()WITHIN() SYNTAX ERROR DETECTED ASTJ06000 @I@@@@ *T ',I2,A2,' ND )@@G@@OCCURRANCE OF THE CONTROL WORD WITHIN.') STJ06100 @I@@@@NE )@@G@@ GO TO 900 NF )@@G@@STJ06200 @I@@@@ 60 IF (INEST.NE.IWITHN) GO TO 55 NG )@@G@@ STJ06300 @I@@@@ IF (NF.EQ.0) GO TO 900 NH )@@G@@ STJ06400 @I@@@@ CALL S1ENST(NI )@@G@@CCTYPE,SCR(601),LEND,TABLE,3,0,SCR(1),600,TAGSCR, STJ06500 @I@@@@NJ )@@G@@ *NERR1) NK )@@G@@STJ06600 @I@@@@ NERR=NERR+NERR1 NL )@@G@@ STJ06700 @B@@@@ CALL S1GTAG('POOL',DUM,DUM,DUMNM )@@G@@,$65) @B@@@@ CALL S1GTAG('EMS',DUM,DUM,DUM,$64) @#@@@@ 62 NERR=NNN )@@G@@ERR+1 @^@@@@ CALL S1PCHD(1) @#@@@@ PRINT 63 @G@@@@ 63 NO )@@G@@FORMAT(' ***** NWAY1 ERROR. POOL CANNOT BE USED IF EMS OR ZEROTER@A@@@@NP )@@G@@ -MS IS ON THE ANALYSIS CARD') @#@@@@ GO TO 65 @C@@@@ 64 NQ )@@G@@CALL S1GTAG('ZEROTM',DUM,DUM,DUM,$65) @#@@@@ GO TO 62 @#@@@@NR )@@G@@ 65 CONTINUE @I@@@@ IF (NERR1.NE.0) GO TO 900 NS )@@G@@ STJ06800 @I@@@@C NT )@@G@@ STJ06900 @I@@@@C****BUILD NNU )@@G@@ESTS TABLE - NESTS(I,J)=1 IF NEST(I)WITHIN(J) STJ07000 NV )@@G@@@I@@@@ NERR4=0 NW )@@G@@ STJ07100 @I@@@@ J1=1 NX )@@G@@ STJ07200 @I@@@@ J2=301 NY )@@G@@ STJ07300 @I@@@@ IF(SCRNZ )@@G@@(J1).NE.INEST) GO TO 999 STJ07500 OA )@@G@@@I@@@@ IF(SCR(J2).NE.IWITHN) GO TO 999 OB )@@G@@ STJ07700 @I@@@@ J1=J1+1 OC )@@G@@ STJ07800 @I@@@@ J2=J2+1 OD )@@G@@ STJ07900 @I@@@@ IF(INEOE )@@G@@ST.LT.1) GO TO 170 STJ08000 OF )@@G@@@I@@@@C OG )@@G@@ STJ08100 @F@@@@C CHECK FOR PRESENCE OF CROSSDFIXDF-IF PRESEOH )@@G@@NT, PRINT WARNING @C@@@@ CALL S1GTAG('CROSSD',IDUM,DUM,DUM,$73) OI )@@G@@@#@@@@ PRINT 72 @G@@@@72 FORMAT('*****NWAY1 NOTE---THE F-RATIOJ )@@G@@OS GIVEN AS OUTPUT APPLY ONLY @G@@@@ XTO A COMPLETELY CROSSED DESIGNOK )@@G@@.'/17X,' THIS DESIGN INCLUDES NESTIN@E@@@@ XG. F-RATIOS WILL NOT BE OL )@@G@@INCLUDED IN THE OUTPUT.') @#@@@@ X(IDUM)=0 @#@@@@73 CONTINOM )@@G@@UE @I@@@@C****LOOP ON NO. NEST()WITHIN() SPECIFICATIONS ON )@@G@@ STJ08200 @I@@@@C OO )@@G@@ STJ08300 @I@@@@ DO 160 NUMNST=1,INOP )@@G@@EST STJ08400 @I@@@@ OQ )@@G@@I1=SCR(J1) STJ085OR )@@G@@00 @I@@@@ J1=J1+1 OS )@@G@@ STJ08600 @I@@@@ I2=SCR(J2) OT )@@G@@ STJ08700 @I@@@@ J2=J2+1 OU )@@G@@ STJ08800 @I@@@@C OV )@@G@@ STJ089OW )@@G@@00 @I@@@@C****LOOP ON NO. MODIFIERS OF NEST() OX )@@G@@ STJ09000 @I@@@@C OY )@@G@@ STJ09100 @I@@@@ DO 150 I=1,I1 OZ )@@G@@ STJ09200 @I@@@@ PA )@@G@@CALL S9GTFC(SCR,J1,IFACT,NAME1,NERR1) STJ093PB )@@G@@00 @I@@@@C ABOVE CALL RETRIEVES FACTOR NUMBER IN IFACT,AND PC )@@G@@ STJ09400 @I@@@@C RESETS J1 TO NEXT MODE IN LIST OF NEST PD )@@G@@MODIFIERS. STJ09500 @I@@@@ IF (NERR1.EQ.0) GOPE )@@G@@ TO 110 STJ09600 @I@@@@ PF )@@G@@NERR4=NERR4+1 STJ097PG )@@G@@00 @I@@@@ CALL S1PCHD(1) PH )@@G@@ STJ09800 @I@@@@ PRINT 105,I,NUMNST PI )@@G@@ STJ09900 @I@@@@ 105 FORMAT(' ***** NWAPJ )@@G@@Y1 ERROR. MODIFIER ',I2,' OF NEST() SPECIFICATIOSTJ10000 @I@@@@ *PK )@@G@@N ',I2,' IS NOT A FACTOR VARIABLE.') STJ101PL )@@G@@00 @I@@@@ 110 CONTINUE PM )@@G@@ STJ10200 @I@@@@C PN )@@G@@ STJ10300 @I@@@@C****LOOP ON NO. MODIFIEPO )@@G@@RS OF WITHIN() STJ10400 @I@@@@C PP )@@G@@ STJ105PQ )@@G@@00 @I@@@@ DO 140 J=1,I2 PR )@@G@@ STJ10600 @I@@@@ IF(I.GT.1) GO TO 120 PS )@@G@@ STJ10700 @I@@@@ CALL S9GTFC(SCR,J2PT )@@G@@,JFACT,NAME2,NERR2) STJ10800 @I@@@@C ABOPU )@@G@@VE CALL RETRIEVS FACTOR NUMBER IN JFACT, AND STJ109PV )@@G@@00 @I@@@@C RESETS J2 TO NEXT MODE WORD IN LIST OF WITHIN MODIFIERS. PW )@@G@@ STJ11000 @I@@@@ JERR(J)=NERR2 PX )@@G@@ STJ11100 @I@@@@ JFAC(J)=JFACT PY )@@G@@ STJ11200 @I@@@@ PZ )@@G@@JNAME(1,J)=NAME2(1) STJ113QA )@@G@@00 @I@@@@ JNAME(2,J)=NAME2(2) QB )@@G@@ STJ11400 @I@@@@ IF (NERR2.EQ.0) GO TO 120 QC )@@G@@ STJ11500 @I@@@@ NERR4=NERR4+1 QD )@@G@@ STJ11600 @I@@@@ QE )@@G@@CALL S1PCHD(1) STJ117QF )@@G@@00 @I@@@@ PRINT 115,J,NUMNST QG )@@G@@ STJ11800 @I@@@@ 115 FORMAT(' ***** NWAY1 ERROR. MODIFIERQH )@@G@@ ',I2,' OF WITHIN() SPECIFICATSTJ11900 @I@@@@ *ION ',I2,' IS NOT QI )@@G@@A FACTOR VARIABLE.') STJ12000 @I@@@@ QJ )@@G@@GO TO 140 STJ121QK )@@G@@00 @I@@@@ 120 IF (NERR1.NE.0) GO TO 140 QL )@@G@@ STJ12200 @I@@@@ IF (JERR(J).NE.0) GO TO 140 QM )@@G@@ STJ12300 @I@@@@ JFACT=JFAC(J) QN )@@G@@ STJ12400 @I@@@@ QO )@@G@@NAME2(1)=JNAME(1,J) STJ125QP )@@G@@00 @I@@@@ NAME2(2)=JNAME(2,J) QQ )@@G@@ STJ12600 @I@@@@ NERR3=0 QR )@@G@@ STJ12700 @I@@@@ IF (NESTS(IFACT,JFQS )@@G@@ACT).EQ.0) GO TO 125 STJ12800 @I@@@@ QT )@@G@@NERR3=NERR3+1 STJ129QU )@@G@@00 @I@@@@ CALL S1PCHD(2) QV )@@G@@ STJ13000 @I@@@@ PRINT 122,NAME1,NAME2,NUMNST QW )@@G@@ STJ13100 @I@@@@ 122 FORMAT(' ***** NWAQX )@@G@@Y1 ERROR. FACTOR VARIABLE ',A6,A2,' IS NESTED WISTJ13200 @I@@@@ *QY )@@G@@THIN FACTOR VARIABLE ',A6,A2,' IN MORE THAN ONE '/20X,'NEST()WITHISTJ133QZ )@@G@@00 @I@@@@ *N() SPECIFICATION. ERROR DETECTED IN SPECIFICATION ',RA )@@G@@I2) STJ13400 @I@@@@ 125 IF (NESTS(JFACT,IFACT).EQ.0) GO TO 1RB )@@G@@30 STJ13500 @I@@@@ NERR3=NERR3+1 RC )@@G@@ STJ13600 @I@@@@ RD )@@G@@CALL S1PCHD(2) STJ137RE )@@G@@00 @I@@@@ PRINT 127,NAME1,NAME2,NUMNST RF )@@G@@ STJ13800 @I@@@@ 127 FORMAT(' ***** NWAY1 ERROR. FACTOR VRG )@@G@@ARIABLE ',A6,A2,' IS NESTED WISTJ13900 @I@@@@ *THIN FACTOR VARIABRH )@@G@@LE ',A6,A2,' IN NEST()WITHIN() SPECIFICATION ', STJ14000 @I@@@@ *RI )@@G@@I2/19X,' AND VICE-VERSA IN A PREVIOUS SPECIFICATION.') STJ141RJ )@@G@@00 @I@@@@ 130 IF (IFACT.NE.JFACT) GO TO 135 RK )@@G@@ STJ14200 @I@@@@ NERR3=NERR3+1 RL )@@G@@ STJ14300 @I@@@@ CALL S1PCHD(1) RM )@@G@@ STJ14400 @I@@@@ RN )@@G@@PRINT 132,NAME1,NUMNST STJ145RO )@@G@@00 @I@@@@ 132 FORMAT(' ***** NWAY1 ERROR. FACTOR VARIABLE ',A6,A2,' RP )@@G@@APPEARS IN BSTJ14600 @I@@@@ *OTH LISTS OF NEST()WITHIN() SPECIFICRQ )@@G@@ATION ',I2) STJ14700 @I@@@@ 135 NERR4=NERR4+NERR3 RR )@@G@@ STJ14800 @I@@@@ RS )@@G@@IF (NERR3.NE.0) GO TO 140 STJ149RT )@@G@@00 @I@@@@ NESTS(IFACT,JFACT)=1 RU )@@G@@ STJ15000 @I@@@@ 140 CONTINUE RV )@@G@@ STJ15100 @I@@@@ 150 CONTINUE RW )@@G@@ STJ15200 @I@@@@ 160 RX )@@G@@CONTINUE STJ153RY )@@G@@00 @I@@@@ NERR=NERR+NERR4 RZ )@@G@@ STJ15400 @D@@@@ CALL S1GTAG('ZEROTM',LZEROT,DUM,NZERSA )@@G@@OT,$168) @]@@@@ KNF=NF@B@@@@ IF(X(LOCS9+1) .NE. 0) KNF=KNF+SB )@@G@@1 @ @@@@ IF(KNF .LT. 1) GO TO 168@ @@@@ DO 166 NZT=1,NZEROSC )@@G@@T @^@@@@ ZEROT=X(LZEROT) @^@@@@ LZEROT=LZEROT+1 @#@@[@SD )@@G@@ K=8**(KNF-1)@^[@@@ DO 165 I=2,KNF @B@@@@ IF(AND(K,ZERSE )@@G@@OT) .EQ. 0) GO TO 165 @]@@[@ KK=K/8@^[@@@ DO 164 J=I,KNF SF )@@G@@@B@@@@ IF(AND(KK,ZEROT) .EQ. 0) GO TO 164 @G@@@@ IF(NESTS(I-1SG )@@G@@,J) .EQ. 0 .AND. NESTS(J,I-1) .EQ. 0) GO TO 164 @ @@@@ CALL GSH )@@G@@ETNAM(I-1,NAME1) @ @@@@ CALL GETNAM(J,NAME2) @#@@@@ NERR=NSI )@@G@@ERR+1 @^@@@@ CALL S1PCHD(2) @ @@@@ PRINT 162,NAME1,NAME2 SJ )@@G@@@G@@@@ 162 FORMAT(' ***** NWAY1 ERROR. THE INTERACTION ',A6,A2,'*',A6,SK )@@G@@A2,' I@G@@@@ -S SPECIFIED WITH ZEROTERMS ON THE ANALYSIS CARD,'/23X,SL )@@G@@'BUT ONE FAC@B@@@@ -TOR IS NESTED WITHIN THE OTHER') @#@@[@ 164 SM )@@G@@KK=KK/8 @]@@[@ 165 K=K/8 @#]@@@ 166 CONTINUE @#@@@@ 168 CONTINSN )@@G@@UE @I@@@@ IF (NERR4.NE.0) GO TO 900 SO )@@G@@ STJ15500 @I@@@@C SP )@@G@@ STJ15700 @I@@@@C****INITIALIZATION PRIOSQ )@@G@@R TO GENERATE CODE WORDS... STJ15800 @I@@@@C SR )@@G@@ STJ159SS )@@G@@00 @I@@@@ 170 CONTINUE ST )@@G@@ STJ16000 @I@@@@ KNF=NF SU )@@G@@ STJ16100 @I@@@@ IF(X(LOCS9+1).NE.0SV )@@G@@) KNF=KNF+1 STJ16200 @I@@@@ SW )@@G@@IF (KNF.LT.1) GO TO 900 STJ163SX )@@G@@00 @A@@@@ IF(INEST .EQ. 0) GO TO 174 @C@@@@ CALL S1STFT(SY )@@G@@'S9NEST',LNEST,1,KNF*KNF,$999)@^@@@@C****ENSURE TRANSITIVITY@#@@@@ SZ )@@G@@IMPLY=0 @^@@@@ DO 1735 I=1,KNF @^@@@@ 171 DO 173 J=1,KNF TA )@@G@@@B@@@@ IF(NESTS(I,J) .EQ. 0) GO TO 173 @^@@@@ DO 172 IJ=1,TB )@@G@@KNF @B@@@@ IF(NESTS(J,IJ) .EQ. 0) GO TO 172 @B@@@@ IF(NESTC )@@G@@TS(I,IJ) .NE. 0) GO TO 172 @ @@@@ IF(I .EQ. IJ) GO TO 172 @^@@@@TD )@@G@@ NESTS(I,IJ)=1 @#@@@@ IMPLY=1 @ @@@@ CALL GETNAM(TE )@@G@@I,NAME1) @ @@@@ CALL GETNAM(IJ,NAME2) @^@@@@ CALL S1PCHD(TF )@@G@@1) @ @@@@ PRINT 1705,NAME1,NAME2 @G@@@@ 1705 FORMAT(' NOTE. NETG )@@G@@ST(',A6,A2,') WITHIN (',A6,A2,') IS IMPLIED AND @A@@@@ -IS USED IN TTH )@@G@@HE ANALYSIS.') @#@@@@ GO TO 171 @#@@@@ 172 CONTINUE @#@@@@TI )@@G@@ 173 CONTINUE @#@@@@ 1735 CONTINUE @A@@@@ IF(IMPLY .EQ. 0) GTJ )@@G@@O TO 1739 @^@@@@ DO 1738 I=2,KNF @^@@@@ DO 1737 J=I,KNF TK )@@G@@@G@@@@ IF(NESTS(I-1,J) .EQ. 0 .OR. NESTS(J,I-1) .EQ. 0) GO TO 173TL )@@G@@7 @ @@@@ CALL GETNAM(I-1,NAME1) @ @@@@ CALL GETNAM(J,NAMETM )@@G@@2) @^@@@@ CALL S1PCHD(1) @^@@@@ NERR4=NERR4+1 @ @@@@TN )@@G@@ PRINT 1736,NAME1,NAME2 @G@@@@ 1736 FORMAT(' ***** NWAY1 ERROR. FTO )@@G@@ACTOR VARIABLE ',A6,A2,' IS NESTED W@D@@@@ -ITHIN FACTOR VARIABLE ',TP )@@G@@A6,A2,' AND VICE-VERSA')@#@@@@ 1737 CONTINUE @#@@@@ 1738 CONTINUE TQ )@@G@@@^@@@@ NERR=NERR+NERR4 @A@@@@ IF(NERR4 .NE. 0) GO TO 900 TR )@@G@@@#@@@@ 1739 CONTINUE @B@@@@ CALL S9GTST(KNF,NESTS,SCR,LSCR,$999)TS )@@G@@@#@@@@ 174 CONTINUE @I@@@@C****GENERATE MASKS TT )@@G@@ STJ16400 @I@@@@ K=1 TU )@@G@@ STJ16500 @I@@@@ TV )@@G@@DO 175 I=1,KNF STJ166TW )@@G@@00 @I@@@@ J=KNF-I+1 TX )@@G@@ STJ16700 @I@@@@ MASK(J)=K TY )@@G@@ STJ16800 @I@@@@ K=K*8 TZ )@@G@@ STJ16900 @I@@@@ 175 UA )@@G@@CONTINUE STJ170UB )@@G@@00 @I@@@@C****GENERATE (B(I),I=1,KNF) UC )@@G@@ STJ17100 @I@@@@ DO 190 I=1,KNF UD )@@G@@ STJ17200 @I@@@@ B(I)=0 UE )@@G@@ STJ17300 @I@@@@ UF )@@G@@DO 185 J=1,KNF STJ174UG )@@G@@00 @I@@@@ IF (NESTS(I,J).NE.0) B(I)=B(I)+MASK(J) UH )@@G@@ STJ17500 @A@@@@ IF(INEST .EQ. 0) GO TO 185 @ @@@@UI )@@G@@ X(LNEST)=NESTS(I,J) @^@@@@ LNEST=LNEST+1 @I@@@@ 185 UJ )@@G@@CONTINUE STJ176UK )@@G@@00 @I@@@@ 190 CONTINUE UL )@@G@@ STJ17700 @I@@@@C UM )@@G@@ STJ17800 @I@@@@C****GENERATE CODE WORDSUN )@@G@@ STJ17900 @I@@@@C UO )@@G@@ STJ180UP )@@G@@00 @I@@@@ NPOOL=0 UQ )@@G@@ STJ18100 @I@@@@ CALL S1GVAL('POOL',NPOOL,$198,$198) UR )@@G@@ STJ18200 @I@@@@198 ICKWD=0 US )@@G@@ STJ18300 @I@@@@ UT )@@G@@DO 199 I=1,KNF STJ184UU )@@G@@00 @I@@@@199 ICKWD=ICKWD*8+1 UV )@@G@@ STJ18500 @I@@@@ NCW=1 UW )@@G@@ STJ18600 @I@@@@ LOOP=0 UX )@@G@@ STJ18700 @I@@@@ 200 UY )@@G@@LOOP=LOOP+1 STJ188UZ )@@G@@00 @I@@@@ IF(LOOP.GT.KNF)GO TO 282 VA )@@G@@ STJ18900 @I@@@@ DO 205 I=1,LOOP VB )@@G@@ STJ19000 @I@@@@ 205 JJ(I)=I VC )@@G@@ STJ19100 @I@@@@ VD )@@G@@JJ(LOOP+1)=KNF+1 STJ192VE )@@G@@00 @I@@@@ GO TO 240 VF )@@G@@ STJ19300 @I@@@@ 225 DO 230 I=1,LOOP VG )@@G@@ STJ19400 @I@@@@ JJ(I)=JJ(I)+1 VH )@@G@@ STJ19500 @I@@@@ VI )@@G@@IF (JJ(I).LT.JJ(I+1)) GO TO 240 STJ196VJ )@@G@@00 @I@@@@ 230 JJ(I)=I VK )@@G@@ STJ19700 @I@@@@ GO TO 200 VL )@@G@@ STJ19800 @I@@@@ 240 XC=0 VM )@@G@@ STJ19900 @I@@@@ VN )@@G@@IF(NPOOL.EQ.0)GO TO 249 STJ200VO )@@G@@00 @I@@@@ IF(LOOP.LT.NPOOL)GO TO 249 VP )@@G@@ STJ20100 @I@@@@ C(NCW)=ICKWD VQ )@@G@@ STJ20200 @I@@@@ E(NCW)=ICKWD VR )@@G@@ STJ20300 @I@@@@ VS )@@G@@NBITS(NCW)=KNF STJ204VT )@@G@@00 @I@@@@ NCW=NCW+1 VU )@@G@@ STJ20500 @I@@@@ GO TO 282 VV )@@G@@ STJ20600 @I@@@@249 DO 250 I=1 ,LOOP VW )@@G@@ STJ20700 @I@@@@ VX )@@G@@K=JJ(I) STJ208VY )@@G@@00 @I@@@@ 250 XC=XC+MASK(K) VZ )@@G@@ STJ20900 @I@@@@ XD=0 WA )@@G@@ STJ21000 @I@@@@ DO 260 I=1,LOOP WB )@@G@@ STJ21100 @I@@@@ WC )@@G@@K=JJ(I) STJ212WD )@@G@@00 @I@@@@ 260 XD=OR(XD,B(K)) WE )@@G@@ STJ21300 @I@@@@ IF (AND(XC,XD).NE.0) GO TO 225 WF )@@G@@ STJ21400 @I@@@@ IF (NCW.GT.300) GOWG )@@G@@ TO 450 STJ21500 @I@@@@ WH )@@G@@C(NCW)=XC STJ216WI )@@G@@00 @I@@@@ D(NCW)=XD WJ )@@G@@ STJ21700 @I@@@@ E(NCW)=OR(XC,XD) WK )@@G@@ STJ21800 @I@@@@ NB=0 WL )@@G@@ STJ21900 @I@@@@ WM )@@G@@DO 270 I=1,KNF STJ220WN )@@G@@00 @I@@@@ IF (AND(E(NCW),MASK(I)).NE.0) NB=NB+1 WO )@@G@@ STJ22100 @I@@@@ 270 CONTINUE WP )@@G@@ STJ22200 @I@@@@ NBITS(NCW)=NB WQ )@@G@@ STJ22300 @I@@@@ WR )@@G@@NCW=NCW+1 STJ224WS )@@G@@00 @I@@@@ GO TO 225 WT )@@G@@ STJ22500 @I@@@@282 IF(NPOOL.EQ.0)GO TO 300 WU )@@G@@ STJ22600 @I@@@@C CHECK FOR PRESENCEWV )@@G@@ OF REQUIRED DUMMY CODE WORD. STJ22700 @I@@@@C WW )@@G@@IF NOT FOUND, ADD TO END OF ARRAY E AND CHANGE IVEC(NCW). STJ228WX )@@G@@00 @I@@@@C LATER SORT WILL PUT E(NCW) WHERE IT SHOULD BE. WY )@@G@@ STJ22900 @I@@@@ TOP=NCW-2 WZ )@@G@@ STJ23000 @I@@@@ DO 290 I=1,TOP XA )@@G@@ STJ23100 @I@@@@ XB )@@G@@DCODE=E(I) STJ232XC )@@G@@00 @I@@@@ ISW=0 XD )@@G@@ STJ23300 @I@@@@ DO 284 J=1,KNF XE )@@G@@ STJ23400 @I@@@@ IF(AND(E(I),MASK(JXF )@@G@@)).EQ.0)GO TO 284 STJ23500 @I@@@@ XG )@@G@@IF(B(J).EQ.0)GO TO 284 STJ236XH )@@G@@00 @I@@@@C FACTOR J IS PRESENT AND IS NESTED WITHIN SOMETHING XI )@@G@@ STJ23700 @I@@@@ ISW=1 XJ )@@G@@ STJ23800 @I@@@@ DCODE=AND(DCODE,COXK )@@G@@MPL(MASK(J))) STJ23900 @I@@@@284 XL )@@G@@CONTINUE STJ240XM )@@G@@00 @I@@@@ IF(DCODE.EQ.0)GO TO 290 XN )@@G@@ STJ24100 @I@@@@ IF(ISW.NE.1) GO TO 290 XO )@@G@@ STJ24200 @I@@@@ DO 286 J=1,TOP XP )@@G@@ STJ24300 @I@@@@286 XQ )@@G@@IF(DCODE.EQ.E(J))GO TO 290 STJ244XR )@@G@@00 @I@@@@ E(NCW)=DCODE XS )@@G@@ STJ24500 @I@@@@ IVEC(NCW)=1 XT )@@G@@ STJ24600 @I@@@@ NB=0 XU )@@G@@ STJ24700 @I@@@@ XV )@@G@@DO 288 J=1,KNF STJ248XW )@@G@@00 @I@@@@ IF(AND(E(NCW),MASK(J)).NE.0)NB=NB+1 XX )@@G@@ STJ24900 @I@@@@288 CONTINUE XY )@@G@@ STJ25000 @I@@@@ NBITS(NCW)=NB XZ )@@G@@ STJ25100 @I@@@@ YA )@@G@@NCW=NCW+1 STJ252YB )@@G@@00 @I@@@@290 CONTINUE YC )@@G@@ STJ25300 @I@@@@C FOLLOWING SORT MUST ALSO INCLUDE IVEYD )@@G@@C STJ25400 @I@@@@C YE )@@G@@ STJ25500 @I@@@@C****SYF )@@G@@HUFFLE NBITS, C, D, E IN INCREASING ORDER OF VECTOR NBITS AND STJ256YG )@@G@@00 @I@@@@C****DECREASING ORDER OF VECTOR E. YH )@@G@@ STJ25700 @I@@@@C YI )@@G@@ STJ25800 @^@@@@C****************** YJ )@@G@@@[@@@@C @F@@@@C TECHNIQUE IS SEARCH FOR THE SMALLEST AND PUT IYK )@@G@@T FIRST. @[@@@@C @^@@@@C****************** @I@@@@ 300 NCW=NCYL )@@G@@W-1 STJ25900 YM )@@G@@@I@@@@ IF (NCW.LT.2) GO TO 355 YN )@@G@@ STJ26000 @I@@@@ NCW1=NCW-1 YO )@@G@@ STJ26100 @I@@@@ DO 350 I=1,NCW1 YP )@@G@@ STJ26200 @I@@@@ IMAX=IYQ )@@G@@ STJ26300 YR )@@G@@@I@@@@ NBMIN=NBITS(I) YS )@@G@@ STJ26400 @I@@@@ EMAX=E(I) YT )@@G@@ STJ26500 @I@@@@ II=I+1 YU )@@G@@ STJ26600 @I@@@@ DO 310YV )@@G@@ J=II,NCW STJ26700 YW )@@G@@@I@@@@ IF (NBITS(J).GT.NBMIN) GO TO 310 YX )@@G@@ STJ26800 @I@@@@ IF (NBITS(J).LT.NBMIN) GO TO 305 YY )@@G@@ STJ26900 @I@@@@ IF (E(J).LT.EMAX) GO TO YZ )@@G@@310 STJ27000 @I@@@@ 305 IMAX=JZA )@@G@@ STJ27100 ZB )@@G@@@I@@@@ NBMIN=NBITS(J) ZC )@@G@@ STJ27200 @I@@@@ EMAX=E(J) ZD )@@G@@ STJ27300 @I@@@@ 310 CONTINUE ZE )@@G@@ STJ27400 @I@@@@ IF (IMZF )@@G@@AX.EQ.I) GO TO 350 STJ27500 ZG )@@G@@@I@@@@ TEMP=NBITS(IMAX) ZH )@@G@@ STJ27600 @I@@@@ NBITS(IMAX)=NBITS(I) ZI )@@G@@ STJ27700 @I@@@@ NBITS(I)=TEMP ZJ )@@G@@ STJ27800 @I@@@@ TEMP=CZK )@@G@@(IMAX) STJ27900 ZL )@@G@@@I@@@@ C(IMAX)=C(I) ZM )@@G@@ STJ28000 @I@@@@ C(I)=TEMP ZN )@@G@@ STJ28100 @I@@@@ TEMP=D(IMAX) ZO )@@G@@ STJ28200 @I@@@@ D(IMAXZP )@@G@@)=D(I) STJ28300 ZQ )@@G@@@I@@@@ D(I)=TEMP ZR )@@G@@ STJ28400 @I@@@@ TEMP=E(IMAX) ZS )@@G@@ STJ28500 @I@@@@ E(IMAX)=E(I) ZT )@@G@@ STJ28600 @I@@@@ E(I)=TZU )@@G@@EMP STJ28700 ZV )@@G@@@I@@@@ TEMP=IVEC(IMAX) ZW )@@G@@ STJ28800 @I@@@@ IVEC(IMAX)=IVEC(I) ZX )@@G@@ STJ28900 @I@@@@ IVEC(I)=TEMP ZY )@@G@@ STJ29000 @I@@@@ 350 CONTINZZ )@@G@@UE STJ29100 AA )@@G@@@I@@@@ 355 CONTINUE AB )@@G@@ STJ29200 @I@@@@C AC )@@G@@ STJ29300 @I@@@@C****STORE CONTROL WORDS AD )@@G@@ STJ29400 @I@@@@C AE )@@G@@ STJ29500 AF )@@G@@@I@@@@ CALL S1GTAG('S9CODE',DUM,DUM,DUM,$400) AG )@@G@@ STJ29600 @I@@@@ NERR=NERR+1 AH )@@G@@ STJ29700 @I@@@@ CALL S1PCHD(1) AI )@@G@@ STJ29800 @I@@@@ PRINT AJ )@@G@@360 STJ29900 AK )@@G@@@I@@@@ GO TO 900 AL )@@G@@ STJ30000 @I@@@@ 360 FORMAT(' ***** NWAY1 ERROR. DESIGN CARD MAAM )@@G@@Y NOT BE USED HERE.') STJ30100 @I@@@@ 400 NCW2=NCW+2 AN )@@G@@ STJ30200 @I@@@@ CALL SAO )@@G@@1STFT('S9CODE',FW,1,NCW2,$999) STJ30400 AP )@@G@@@I@@@@C****STORE FIRST WORD = 0 AQ )@@G@@ STJ30500 @I@@@@ X(FW)=0 AR )@@G@@ STJ30600 @I@@@@C****STORE SECOND WORD = ALL OAS )@@G@@NES STJ30700 @I@@@@ FW=FW+AT )@@G@@1 STJ30800 AU )@@G@@@I@@@@ X(FW)=0 AV )@@G@@ STJ30900 @I@@@@ DO 405 I=1,KNF AW )@@G@@ STJ31000 @I@@@@ X(FW)=X(FW)+MASK(I) AX )@@G@@ STJ31100 @I@@@@ 405 CONTINAY )@@G@@UE STJ31200 AZ )@@G@@@I@@@@ IF (NCW.LT.1) GO TO 415 BA )@@G@@ STJ31300 @I@@@@C****STORE GENERATED CODE WORDS BB )@@G@@ STJ31400 @I@@@@ DO 410 I=1,NCW BC )@@G@@ STJ31500 @I@@@@ FW=FW+BD )@@G@@1 STJ31600 BE )@@G@@@I@@@@ X(FW)=E(I) BF )@@G@@ STJ31700 @I@@@@ 410 CONTINUE BG )@@G@@ STJ31800 @I@@@@ 415 CONTINUE BH )@@G@@ STJ31900 @I@@@@C STORE BI )@@G@@VECTOR IVEC STJ32000 BJ )@@G@@@I@@@@CC NOTE THAT X(FW+2)=IVEC(1) BK )@@G@@ STJ32100 @I@@@@ CALL S1STFT('S9ICOD',FW,1,NCW2,$999) BL )@@G@@ STJ32200 @I@@@@ X(FW)=0 BM )@@G@@ STJ32300 @I@@@@ FW=FW+BN )@@G@@1 STJ32400 BO )@@G@@@I@@@@ X(FW)=0 BP )@@G@@ STJ32500 @I@@@@ DO 417 I=1,NCW BQ )@@G@@ STJ32600 @I@@@@ FW=FW+1 BR )@@G@@ STJ32700 @I@@@@417 X(FW)=BS )@@G@@IVEC(I) STJ32800 BT )@@G@@@I@@@@C BU )@@G@@ STJ32900 @B@@@@C GENERATE LABELS FOR EACH CODE WORD @E@@@@BV )@@G@@C USE SCRATCH FILE ( NUMBER 2 ) FOR CODE WORD LABELS @#@@@@ BW )@@G@@LINFO=LOCS9 @C@@@@ CALL S1GTAG('VNAMES',NAME,DUM,DUM,$5021) @ @@@@BX )@@G@@502 IF(X(NAME).EQ.0)NAME=0 @#@@@@5021 CONTINUE @]@@@@ EMS=0 BY )@@G@@@B@@@@ CALL S1GTAG('EMS',DUM,DUM,DUM,$5070)@]@@@@ EMS=1 @G@@@@BZ )@@G@@ DIMENSION CODES(13) /'A','B','C','D','E','F','G','H','Q','R','S', CA )@@G@@@#@@@@ - 'T','X'/ @ @@@@ DIMENSION ABCODE(12) @]@@@@ CB )@@G@@NEXT=0@^@@@@ DO 5050 J=1,KNF @ @@@@ VARNO=X(LOCS9+21+J) CC )@@G@@@A@@@@ IF(VARNO .NE. 0) GO TO 5030 @A@@@@ CALL S1PRFT(X(LINFCD )@@G@@O+2),1,CHAR)@#@@@@ GO TO 5035 @A@@@@ 5030 IF(NAME .EQ. 0) GO TO 50CE )@@G@@45 @ @@@@ LOC=NAME+2*(VARNO-1) @B@@@@ IF(X(LOC) .EQ. BLACF )@@G@@NK) GO TO 5045 @A@@@@ CALL S1PRFT(X(LOC),1,CHAR) @ @@@@ 5035 CG )@@G@@IF(J .EQ. 1) GO TO 5040 @^@@@@ DO 5038 I=2,J @B@@@@ IF(ABCCH )@@G@@ODE(I-1) .EQ. CHAR) GO TO 5045@#@@@@ 5038 CONTINUE @^@@@@ 5040 ABCODECI )@@G@@(J)=CHAR @#@@@@ GO TO 5050 @#@@@@ 5045 NEXT=NEXT+1 @^@@@@ CJ )@@G@@CHAR=CODES(NEXT) @#@@@@ GO TO 5035 @#@@@@ 5050 CONTINUE @#@@@@CK )@@G@@ WICODE='W' @^@@@@ 5055 DO 5060 J=1,KNF @B@@@@ IF(ABCODE(J)CL )@@G@@ .NE. WICODE) GO TO 5060@#@@@@ NEXT=NEXT+1 @^@@@@ WICODE=CODESCM )@@G@@(NEXT)@#@@@@ GO TO 5055 @#@@@@ 5060 CONTINUE @#@@@@ PECODECN )@@G@@='P' @^@@@@ 5062 DO 5065 J=1,KNF @B@@@@ IF(ABCODE(J) .NE. PECODECO )@@G@@) GO TO 5065@#@@@@ NEXT=NEXT+1 @^@@@@ PECODE=CODES(NEXT)@#@@@@CP )@@G@@ GO TO 5062 @#@@@@ 5065 CONTINUE @C@@@@ CALL S1STFT('S9ABRCQ )@@G@@V',FW,2,NCW+1,$999) @#@@@@ X(FW)=WICODE@^@@@@ X(FW+1)=PECOCR )@@G@@DE @#@@@@ FW=FW+2 @#@@@@ 5070 MAXPP=0 @ @@@@ DIMENSCS )@@G@@ION ABBREV(2) @^@@@@ DO 580 I=1,NCW @#@@@@ POINT=2 CT )@@G@@@B@@@@ IF(NPOOL.EQ.0.OR.I.NE.NCW)GO TO 508 @ @@@@ LABEL(POINT)CU )@@G@@='RESIDU' @ @@@@ LABEL(POINT+1)='AL ' @^@@@@ POINT=POINT+CV )@@G@@2 @#@@@@ GO TO 519 @]@@@@508 ISW=0 @^@@@@ ABBREV(1)=' CW )@@G@@ '@^@@@@ ABBREV(2)=' '@]@@@@ IABR=0@^@@@@ DO 510CX )@@G@@ J=1,KNF @B@@@@ IF(AND(C(I),MASK(J)).EQ.0) GO TO 510@#@@@@ CY )@@G@@IABR=IABR+1 @B@@@@ CALL S1PRST(ABBREV,IABR,ABCODE(J)) @ @@@@ CZ )@@G@@VARNO=X(LOCS9+21+J) @ @@@@ IF(VARNO.NE.0)GO TO 569 @ @@@@ DA )@@G@@IF(ISW.EQ.0)GO TO 560 @^@@@@ LABEL(POINT)=STAR @^@@@@ POINT=DB )@@G@@POINT+1 @[@@@@C @#@@@@C ORDERFAC @[@@@@C @ @@@@560 DC )@@G@@LABEL(POINT)=X(LINFO+2) @A@@@@ LABEL(POINT+1)=X(LINFO+3) @^@@@@DD )@@G@@ POINT=POINT+2 @]@@@@ ISW=1 @#@@@@ GO TO 510 @[@@@@DE )@@G@@C @^@@@@C GOT VNAMES? @[@@@@C @ @@@@569 IF(NAME.EQ.0DF )@@G@@)GO TO 504 @ @@@@ LOC=NAME+2*(VARNO-1) @[@@@@C @B@@@@C DG )@@G@@ YES, GOT ONE FOR THIS VARIABLE? @ @@@@C YES, NEED A STAR? DH )@@G@@@[@@@@C @A@@@@ IF(X(LOC).EQ.BLANK)GO TO 504 @ @@@@ IF(ISWDI )@@G@@.EQ.0)GO TO 503 @[@@@@C @^@@@@C YES PUT ONE IN. @[@@@@C DJ )@@G@@@^@@@@ LABEL(POINT)=STAR @^@@@@ POINT=POINT+1 @[@@@@C DK )@@G@@@A@@@@C PUT IN HTE VARIABLE NAME. @[@@@@C @ @@@@503 LABEL(DL )@@G@@POINT)=X(LOC) @ @@@@ LABEL(POINT+1)=X(LOC+1) @^@@@@ POINT=DM )@@G@@POINT+2 @]@@@@ ISW=1 @#@@@@ GO TO 510 @ @@@@504 IF(ISWDN )@@G@@.EQ.0)GO TO 505 @^@@@@ LABEL(POINT)=STAR @^@@@@ POINT=POINT+DO )@@G@@1 @A@@@@505 ENCODE(LABEL(POINT),506)VARNO @#@@@@506 FORMAT(I6) DP )@@G@@@^@@@@ POINT=POINT+1 @]@@@@ ISW=1 @#@@@@510 CONTINUE DQ )@@G@@@A@@@@ IF(EMS .EQ. 0) GO TO 5107 @^@@@@ X(FW)=ABBREV(1) DR )@@G@@@^@@@@ X(FW+1)=ABBREV(2) @#@@@@ FW=FW+2 @^@@@@C***********DS )@@G@@******* @[@@@@C @F@@@@C DONE WITH LABEL UPTO WITHIN PUT INDT )@@G@@ THE WITHIN CLAUSES @[@@@@C @^@@@@C****************** @ @@@@DU )@@G@@ 5107 IF(D(I).EQ.0)GO TO 519 @^@@@@ LABEL(POINT)=BLANK@ @@@@ DV )@@G@@LABEL(POINT+1)=WITHIN @ @@@@ LABEL(POINT+2)=BLANK @^@@@@ DW )@@G@@POINT=POINT+3 @]@@@@ ISW=0 @^@@@@ DO 520 J=1,KNF @B@@@@DX )@@G@@ IF(AND(D(I),MASK(J)).EQ.0) GO TO 520@ @@@@ VARNO=X(LOCS9+21+JDY )@@G@@) @ @@@@ IF(VARNO.NE.0)GO TO 579 @ @@@@ IF(ISW.EQ.0)GO TO DZ )@@G@@570 @^@@@@ LABEL(POINT)=COMMA@^@@@@ POINT=POINT+1 @ @@@@EA )@@G@@570 LABEL(POINT)=X(LINFO+2) @A@@@@ LABEL(POINT+1)=X(LINFO+3) EB )@@G@@@^@@@@ POINT=POINT+2 @]@@@@ ISW=1 @#@@@@ GO TO 520 EC )@@G@@@ @@@@579 IF(NAME.EQ.0) GO TO 514 @ @@@@ LOC=NAME+2*(VARNO-1) ED )@@G@@@A@@@@ IF(X(LOC).EQ.BLANK)GO TO 514 @ @@@@ IF(ISW.EQ.0)GO TO EE )@@G@@513 @^@@@@ LABEL(POINT)=COMMA@^@@@@ POINT=POINT+1 @ @@@@EF )@@G@@513 LABEL(POINT)=X(LOC) @ @@@@ LABEL(POINT+1)=X(LOC+1) @^@@@@EG )@@G@@ POINT=POINT+2 @]@@@@ ISW=1 @#@@@@ GO TO 520 @ @@@@EH )@@G@@514 IF(ISW.EQ.0)GO TO 515 @^@@@@ LABEL(POINT)=COMMA@^@@@@ EI )@@G@@POINT=POINT+1 @A@@@@515 ENCODE(LABEL(POINT),506)VARNO @^@@@@ EJ )@@G@@POINT=POINT+1 @]@@@@ ISW=1 @#@@@@520 CONTINUE @^@@@@519 EK )@@G@@POINT=POINT-1 @^@@@@C****************** @[@@@@C @A@@@@C EL )@@G@@LABEL FOR THIS CODE WORD DONE.@^@@@@C PACK OUT BLANKS @[@@@@C EM )@@G@@@^@@@@C****************** @#@@@@ LCHAR=5 @^@@@@C***********EN )@@G@@******* @[@@@@C @ @@@@C J GOES FROM 2 TO POINT@[@@@@C EO )@@G@@@^@@@@C****************** @]@@@@ J=2 @]@@@@ PP=2@C@@@@EP )@@G@@C PP IS THE LOCATION OF THE OUTPUT STRING @]@@@@ OUTP=1@ @@@@EQ )@@G@@521 IN(1)=FLD( 0,6,LABEL(J))@ @@@@ IN(2)=FLD( 6,6,LABEL(J))@ @@@@ER )@@G@@ IN(3)=FLD(12,6,LABEL(J))@ @@@@ IN(4)=FLD(18,6,LABEL(J))@ @@@@ES )@@G@@ IN(5)=FLD(24,6,LABEL(J))@ @@@@ IN(6)=FLD(30,6,LABEL(J))@]@@@@ET )@@G@@ K=1 @ @@@@522 IF(IN(K).EQ.5)GO TO 525 @[@@@@C @ @@@@C EU )@@G@@ NON-BLANK CHARACTER @[@@@@C @^@@@@ OUT(OUTP)=IN(K) @#@@@@EV )@@G@@ LCHAR=IN(K) @#@@@@ OUTP=OUTP+1 @#@@@@ GO TO 530 @ @@@@EW )@@G@@525 IF(LCHAR.EQ.5)GO TO 530 @[@@@@C @ @@@@C FIRST BLANK CHAREX )@@G@@ACTER.@[@@@@C @^@@@@ OUT(OUTP)=IN(K) @#@@@@ LCHAR=IN(K) EY )@@G@@@#@@@@ OUTP=OUTP+1 @#@@@@530 CONTINUE @ @@@@ IF(OUTP.LE.6EZ )@@G@@)GO TO 538 @^@@@@ PLABEL(PP)=BLANK @]@@@@ JSW=0 @A@@@@531 FA )@@G@@FLD(30,6,PLABEL(PP))=OUT(6) @A@@@@532 FLD(24,6,PLABEL(PP))=OUT(5) FB )@@G@@@A@@@@533 FLD(18,6,PLABEL(PP))=OUT(4) @A@@@@534 FLD(12,6,PLABEL(PPFC )@@G@@))=OUT(3) @A@@@@535 FLD( 6,6,PLABEL(PP))=OUT(2) @A@@@@536 FLD( 0FD )@@G@@,6,PLABEL(PP))=OUT(1) @ @@@@ IF(JSW.NE.0)GO TO 545 @#@@@@ FE )@@G@@PP=PP+1 @]@@@@ OUTP=1@]@@@@538 K=K+1 @ @@@@ IF(K.LE.6)GOFF )@@G@@ TO 522 @]@@@@ J=J+1 @ @@@@ IF(J.LE.POINT)GO TO 521 @[@@@@FG )@@G@@C @B@@@@C J IS .GT. POINT... FINISHED ARRAY @C@@@@C IF OUTFH )@@G@@P.GT.1 SAVE FRACTION OF NEXT WORD @[@@@@C @ @@@@ IF(OUTP.NE.1FI )@@G@@)GO TO 540 @#@@@@ PP=PP-1 @#@@@@ GO TO 545 @#@@@@540 FJ )@@G@@OUTP=OUTP-1 @^@@@@ PLABEL(PP)=BLANK @]@@@@ JSW=1 @B@@@@ FK )@@G@@GO TO (536,535,534,533,532,531),OUTP@#@@@@545 CONTINUE @^@@@@C*****FL )@@G@@************* @[@@@@C @D@@@@C FINISHED PACKING STRING FOR TFM )@@G@@HIS CODE WORD. @D@@@@C CHECK IF LAST WORD OF PACKED STRING IS BLAFN )@@G@@NK. @^@@@@C IF SO, DROP IT @[@@@@C @^@@@@C*****************FO )@@G@@* @A@@@@ IF(PLABEL(PP).EQ.BLANK)PP=PP-1@F@@@@C PRECEDE THE FP )@@G@@STRING BY A COUNT OF THE LENGTH OF THE STRING @^@@@@ PLABEL(1)=FQ )@@G@@PP-1 @A@@@@ IF(PP .GT. MAXPP) MAXPP=PP @E@@@@C STORE LABEL FR )@@G@@+ LENGTH FOR THIS CODE WORD INTO FILE 2 @C@@@@ CALL S1IODR(2,'WRIFS )@@G@@TE',PP,PLABEL(1),LEND) @#@@@@580 CONTINUE @D@@@@C ENDFILE AND FT )@@G@@REWIND TO DRAIN FILE 2 'S BUFFER @C@@@@ CALL S1IODR(2,'ENDFIL',DFU )@@G@@UM,PLABEL(1),LEND)@C@@@@ CALL S1IODR(2,'REWIND',DUM,PLABEL(1),LEND)FV )@@G@@@B@@@@ CALL S1STFT('S9MXPP',FW,1,1,$999) @^@@@@ X(FW)=MAXPP-FW )@@G@@1 @^@@@@C****************** @[@@@@C @H@@@@C DONE WITH FX )@@G@@WORK, NOW PRINT SUMMARY OF WHAT WAS GENERATED IF TESTING @[@@@@C FY )@@G@@@^@@@@C****************** @I@@@@C FZ )@@G@@ STJ33100 @I@@@@ TEST=0 GA )@@G@@ STJ33200 @I@@@@GB )@@G@@ CALL S1GVAL('TEST',TEST,$420,$420) GC )@@G@@STJ33300 @I@@@@ 420 CONTINUE GD )@@G@@ STJ33400 @I@@@@ IF (TEST.EQ.0) GO TO 500 GE )@@G@@ STJ33500 @I@@@@ PRINT 425 GF )@@G@@ STJ33600 @I@@@@GG )@@G@@ 425 FORMAT('0 MASKS VECTOR B MATRIX OF NESTS') GH )@@G@@STJ33700 @I@@@@ DO 430 I=1,KNF GI )@@G@@ STJ33800 @I@@@@ 430 PRINT 435,MASK(I),B(I),(NESTS(GJ )@@G@@I,J),J=1,KNF) STJ33900 @I@@@@ 435 FORMAT(1X,O1GK )@@G@@2,2X,O12,3X,12I3) STJ34000 @I@@@@GL )@@G@@ IF (NCW.LT.1) GO TO 442 GM )@@G@@STJ34100 @I@@@@ PRINT 437 GN )@@G@@ STJ34200 @I@@@@ 437 FORMAT('0 I C(I) GO )@@G@@ D(I) E(I) NBITS(ISTJ34300 @I@@@@ *)') GP )@@G@@ STJ34400 @I@@@@GQ )@@G@@ DO 440 I=1,NCW GR )@@G@@STJ34500 @I@@@@ 440 PRINT 445,I,C(I),D(I),E(I),NBITS(I) GS )@@G@@ STJ34600 @I@@@@ 442 CONTINUE GT )@@G@@ STJ34700 @I@@@@ 445 FORMAT(I5,3(GU )@@G@@2X,O12),I5) STJ34800 @I@@@@GV )@@G@@ GO TO 500 GW )@@G@@STJ34900 @I@@@@C**** GX )@@G@@ STJ35000 @I@@@@C****ERROR...TOO MANY CODE WORDS GENGY )@@G@@ERATED... STJ35100 @I@@@@ 450 NERR=NERR+1 GZ )@@G@@ STJ35200 @I@@@@HA )@@G@@ CALL S1PCHD(1) HB )@@G@@STJ35300 @I@@@@ PRINT 455 HC )@@G@@ STJ35400 @I@@@@ 455 FORMAT(' ***** NWAY1 ERROR. COHD )@@G@@DE WORD TABLE EXCEEDED.') STJ35500 @I@@@@ 500 CONTINUE HE )@@G@@ STJ35600 @I@@@@HF )@@G@@ 900 RETURN HG )@@G@@STJ35700 @ @@@@999 CALL S1SERR('S9DNPF') @]@@@@ RETURN@[@@@@HH )@@G@@C @[@@@@C @C@@@@C LOCAL SUBROUTINE TO GET FACTOR NAME HI )@@G@@@[@@@@C @A@@@@ SUBROUTINE GETNAM(FIND,FNAME) @^@@@@ DIMENSHJ )@@G@@ION FNAME(2)@ @@@@ VARNO=X(LOCS9+21+FIND) @A@@@@ IF(VARNO .NEHK )@@G@@. 0) GO TO 5000 @ @@@@ FNAME(1)=X(LOCS9+2) @ @@@@ FNAME(HL )@@G@@2)=X(LOCS9+3) @]@@@@ RETURN@C@@@@ 5000 CALL S1GTAG('VNAMES',NAMHM )@@G@@E,DUM,DUM,$5100) @A@@@@ IF(X(NAME) .EQ. 0) GO TO 5100 @ @@@@ HN )@@G@@NAME=NAME+2*(VARNO-1) @B@@@@ IF(X(NAME) .EQ. ' ') GO TO 5100HO )@@G@@@^@@@@ FNAME(1)=X(NAME) @^@@@@ FNAME(2)=X(NAME+1)@]@@@@ HP )@@G@@RETURN@ @@@@ 5100 ENCODE(FNAME,5200) VARNO@^@@@@ 5200 FORMAT(I4,4X) HQ )@@G@@@]@@@@ RETURN@I@@@@ END HR )@@G@@ STJ36200 ___ MASKS VECTOR B MAHS )@@G@@TRIX OF NESTS') STJ33700 @I@@@@ DO 430 I=1,KNF HT )@@G@@ STJ338*[S@@@*SDFF*@G@@@@ HU )@@G@@SUBROUTINE S1CCIN(IFLD,NCARD,SCR,LSCR,COP,MLE,NEWCW,LCWSP,CWSP, @A@@@@HV )@@G@@ - NVARS,NCR,COPIN,NERR,$) @ @@@@ IMPLICIT INTEGER (A-Z) HW )@@G@@@C@@@@ DIMENSION IFLD(1), SCR(LSCR), CWSP(LCWSP) @D@@@@ COMMONHX )@@G@@/S1CCI/DUMEE1(8),PROGNM(2),DUMEE2(12) @[@@@@C @[@@@@C @D@@@@HY )@@G@@C MULTIVARIATE *INPUT* CARD PROCESSOR @[@@@@C @[@@@@HZ )@@G@@C @[@@@@C @#@@@@ COMMON X(1) @ @@@@ DIMENSION CWSPEC(2IA )@@G@@00) @A@@@@ DATA (CWSPEC(I),I=1,110)/ @A@@@@ 1 12HSTJBANK IB )@@G@@ ,2,0,14,0, @C@@@@ 2 12HNCR ,4,12,2,1,1,1,1,2000, IC )@@G@@@ @@@@ 312HCOP ,2,0,3,0,@A@@@@ 412HMLE ,2,0,0,0ID )@@G@@, @A@@@@ 512HBCDTAPE ,4, 6,0,0, @A@@@@ 612HSDFFILE IE )@@G@@ ,4, 5,0,0, @C@@@@ 712HCHARS ,2,0,0,1,1,1,16,15000, IF )@@G@@@B@@@@ 812HREELS ,2,0,0,1,1,1,1,10, @C@@@@ 912HLABELREC IG )@@G@@ ,3,5,0,2,2,1,1,34000000000,@C@@@@ *12HBLOCKED ,3,5, 4,2,1,9,IH )@@G@@0,2000, @D@@@@ 1 12HNOBS ,2,0,15,1,1,5,1,O377777777777, II )@@G@@@B@@@@ 2 12HNLR ,4,2,2,1,1,1,1,2000,@B@@@@ 3 12HNVARS IJ )@@G@@ ,6,1,1,1,1,1,1,2000,@]@@@@ 4 / @[@@@@C @ @@@@ DIMENSIK )@@G@@ION TSTOR(100) @^@@@@ DIMENSION STOR(17)@^@@@@C*****************IL )@@G@@* @[@@@@C @G@@@@C S1CCIN HANDLES THE INPUT CARDS OF ALL STIM )@@G@@ATJOB PROGRAMS EXCEPT @G@@@@C ONEWAY1 AND COLFREQ1. IT ACCEPTS AIN )@@G@@ LIST OF CONTROL WORDS FOR @G@@@@C EACH PROGRAM, THAT ARE DIFFEIO )@@G@@RENT FROM, AND IN ADDITION TO, THE @^@@@@C STANDARD LIST @[@@@@IP )@@G@@C @^@@@@C****************** @[@@@@C @G@@@@C S1CCIN IQ )@@G@@ SYMBOL USAGE SUMMARY ALL VARIABLES ARE INTEGERS. @[@@@@C @^@@@@IR )@@G@@C****************** @[@@@@C @D@@@@C CHAR TEMPORARY SIS )@@G@@TORAGE FOR A CHARACTER. @E@@@@C CHARS VALUE OF 'CHARS' CONTROIT )@@G@@L WORD OR 80. @F@@@@C COP FORMAL PARAMETER, =0 IF COP LIU )@@G@@EGAL CONTROL WORD.@A@@@@C OTHERWISE _0. @G@@@@C IV )@@G@@ COPIN FORMAL PARAMETER, SET =1 IF COP PRESENT ON CARD, @B@@@@IW )@@G@@C =0 IF NOT PRESENT. @G@@@@C CWSP FORMAIX )@@G@@L PARAMETER, DIMENSIONED (LCWSP), ARRAY OF UP @E@@@@C IY )@@G@@ TO 96 WORDS TO ADD TO THE CONTROL WORD @A@@@@C SPECIIZ )@@G@@FICATIONS. @F@@@@C CWSPEC DIMENSIONED (200), ARRAY PASSED TO JA )@@G@@S1ENST WITH @C@@@@C CONTROL WORD SPECIFICATIONS. @G@@@@JB )@@G@@C IFLD FORMAL PARAMETER, THE CARD IMAGES OF THE INPUT CARD. JC )@@G@@@B@@@@C FW FIRST WORD OF TAG. @B@@@@C I JD )@@G@@ TEMPORARY VARIABLE. @B@@@@C J POINTER INTO CCSPEC. JE )@@G@@@C@@@@C LBLK POINTER TO TAG 'BLOCKE'. @F@@@@C LCARJF )@@G@@DS NUMBER OF WORDS TO CREATE IN TAG 'LCARDS'. @G@@@@C LCWSJG )@@G@@P FORMAL PARAMETER, NUMBER OF WORDS IN CWSP. MUST NOT @B@@@@C JH )@@G@@ BE GREATER THAN 96. @G@@@@C LEND NUMBER OF WJI )@@G@@ORDS OF CRACKED INFORMATION OUTPUT BY @ @@@@C S1ENDJJ )@@G@@C. @G@@@@C LSCR FORMAL PARAMETER, NUMBER OF WORDS IN ARRAJK )@@G@@Y SCR, USED @A@@@@C FOR SCRATCH. @G@@@@C MLE JL )@@G@@ FORMAL PARAMETER, =0 IF MLE NOT A LEGAL CONTROL WORD,@A@@@@C JM )@@G@@ _0 IF MLE LEGAL. @G@@@@C N SET TO VALUE TO PJN )@@G@@UT IN TAG 'INROUT', =1, CARDS, =2, @A@@@@C SDF, =3, BCJO )@@G@@D. @G@@@@C NCARD FORMAL PARAMETER, NUMBER OF CARDS OF INPUJP )@@G@@T CARD. @G@@@@C NCR FORMAL PARAMETER, VALUE OF CONTROL JQ )@@G@@WORD NCR OR NLR. @C@@@@C NCW NUMBER OF CONTROL WORDS LEGALJR )@@G@@@E@@@@C NE NUMBER OF ERRORS DETECTED IN SUBROUTINE. @G@@@@JS )@@G@@C NERR FORMAL PARAMETER, NUMBER OF ERRORS ON INPUT CARD. JT )@@G@@@G@@@@C NEWCW DORMAL PARAMETER, NUMBER OF NEW CONTROL WORDS BJU )@@G@@EING @ @@@@C SUPPLIED. @A@@@@C NN DUMMYJV )@@G@@ VARIABLE. @D@@@@C NVALS NUMBER OF VALUES SPECIFIED TO NOBS.JW )@@G@@@F@@@@C NVARS FORMAL PARAMETER, VALUE OF NVARS CONTROL WORD. JX )@@G@@@G@@@@C SCR FORMAL PARAMETER, DIMENSIONED (LSCR), SCRATCH AJY )@@G@@RRAY. @G@@@@C STOR DIMENSIONED (LL), PLACE FOR S1ENST TO PLAJZ )@@G@@CE SOME @A@@@@C OUTPUT VALUES. @E@@@@C S1ENKA )@@G@@DC ROUTINE TO CRACK THE CARD INTO TOKENS. @G@@@@C S1ENST KB )@@G@@ ROUTINE TO TAKE OUTPUT OF S1ENST AND CHECK IT FOR @G@@@@C KC )@@G@@ LEGAL CONSTRUCTS AND PUT VALUES INTO TAGGED STORAGE @A@@@@C KD )@@G@@ OR ARRAY STOR. @E@@@@C S1GTAG ROUTINE TO RETRIEKE )@@G@@VE POINTED TO A TAG. @D@@@@C S1GVAL ROUTINE TO RETRIEVE VALKF )@@G@@UE OF A TAG.@F@@@@C S1PRFT ROUTINE TO FETCH A CHARACTER FROM OKG )@@G@@N ARRAY. @F@@@@C S1PRST ROUTINE TO STORE A CHARACTER INTO AKH )@@G@@N ARRAY. @F@@@@C S1SERR ROUTINE TO PRINT STATJOB SYSTEM ERRKI )@@G@@OR MESSAGE. @F@@@@C S1STFT ROUTINE TO CREATE A TAG AND ALLOCATKJ )@@G@@E STORAGE @A@@@@C IMMEDIATELY. @G@@@@C S1STKK )@@G@@RS ROUTINE TO CREATE A TAG AND RESERVE STORAGE FOR IT IN@B@@@@C KL )@@G@@ THE ANALYSIS PHASE. @G@@@@C TEMP WORD USED TKM )@@G@@O TEST FOR ONLY ONE CHARACTER IN MODIFIER @ @@@@C OF BLKN )@@G@@OCKED.@G@@@@C TSTOR DIMENSIONED (100), ARRAY USED AS SCRATCH KO )@@G@@SPACE IN @ @@@@C S1ENST. @D@@@@C WORDS KP )@@G@@ NUMBER OF WORDS PER LOGICAL RECORD.@B@@@@C X BLANK COMMOKQ )@@G@@N ARRAY @[@@@@C @^@@@@C****************** @[@@@@C @C@@@@KR )@@G@@C S1CCIN TAGGED STORAGE USAGE SUMMARY @[@@@@C @^@@@@C*****KS )@@G@@************* @[@@@@C @G@@@@C 'MLE' WILL BE CREATED BKT )@@G@@Y S1ENST IF MLE IS PRESENT ON THE @A@@@@C CONTROL CARKU )@@G@@D @G@@@@C 'BCDTAP' WILL BE CREATED BY S1ENST IF 'BCDTAP' IS KV )@@G@@PRESENT ON @G@@@@C THE CONTROL CARD AND IS RETRIEVED TKW )@@G@@O DETERMINE INPUT @B@@@@C ROUTINE (TAG 'INROUT') @F@@@@KX )@@G@@C 'SDFFIL' WILL BE CREATED BY S1ENST IF SDFFILE IS ON THE @G@@@@KY )@@G@@C CONTROL CARD AND IS RETRIEVED TO DETERMINE THE INPUT KZ )@@G@@@G@@@@C 'CHARS' IS CREATED TO CONTAIN THE NUMBER OF CHARACTERS LA )@@G@@PER @B@@@@C ROUTINE (TAG 'INROUT') @D@@@@C LB )@@G@@ LOGICAL RECORD. DEFAULTED TO 80. @G@@@@C 'REELS' MAY BLC )@@G@@E CREATED BY S1ENST TO CONTAIN THE NUMBER OF @F@@@@C LD )@@G@@ REELS OF TAPE COMPRISING THE INPUT FILE. ONLY @F@@@@C LE )@@G@@ CREATED IF REELS IS PRESENT ON THE CONTROL CARD@G@@@@C 'LABELR' LF )@@G@@ WILL BE CREATED BY S1ENST IF LABELREC IS PRESENT ON @E@@@@C LG )@@G@@ THE CONTROL CARD TO CONTAIN ITS MODIFIER.@F@@@@C 'NVARS' LH )@@G@@ IS RETRIEVED TO SET IT FROM THE CONTROL CARD. @G@@@@C 'NOBS' IS LI )@@G@@CREATED IF NOBS WAS PRESENT TO CONTAIN THE MODIFIERS. @F@@@@C LJ )@@G@@ HAS LENGTH OF ONE OR TWO, TWO IF TWO MODIFIERS.@E@@@@C 'LCALK )@@G@@RDS' IS RESERVED TO HOLD A LOGICAL RECORD. @F@@@@C 'INROUT' LL )@@G@@ IS RETRIEVED AND SET TO =1 IF CARD INPUT, =2 IF@B@@@@C LM )@@G@@ SDFFILE =3 IF BCDTAPE. @F@@@@C 'BLOCKE' IS CREATED IF BLOCKED CLN )@@G@@ONTROL WORD WAS PRESENT.@G@@@@C 'PADDIN' IS CREATED TO HOLD THE LO )@@G@@PAD CHARACTER IF PRESENT IN @B@@@@C BLOCKED CONTROL WLP )@@G@@ORD. @[@@@@C @^@@@@C****************** @[@@@@C @]@@@@ LQ )@@G@@NERR=0@[@@@@C @B@@@@C SET UP CONTROL WORD SPECS @[@@@@LR )@@G@@C @B@@@@ IF(PROGNM(1).NE.'ROTATE')GO TO 40 @ @@@@ CWSPECLS )@@G@@(101)=6HFACTMA @^@@@@ CWSPEC(102)=6HT @^@@@@ CWSPEC(105)=LT )@@G@@11 @^@@@@ CWSPEC(106)=2 @^@@@@ CWSPEC(107)=2 @^@@@@LU )@@G@@ CWSPEC(110)=400 @#@@@@40 CONTINUE @ @@@@ CWSPEC(17)=6LV )@@G@@HCOP777 @B@@@@ IF(COP .NE. 0) CWSPEC(17)=6HCOP @ @@@@ LW )@@G@@CWSPEC(23)=6HMLE777 @A@@@@ IF (MLE.NE.0) CWSPEC(23)=6HMLE@#@@@@LX )@@G@@ NCW=13 @#@@@@ J=111 @A@@@@ IF(NEWCW .EQ. 0) GLY )@@G@@O TO 100 @^@@@@ NCW=NCW+NEWCW @^@@@@ DO 50 I=1,LCWSP LZ )@@G@@@^@@@@ CWSPEC(J)=CWSP(I) @]@@@@ 50 J=J+1 @[@@@@C @ @@@@C MA )@@G@@ CALL S1ENDC @[@@@@C @F@@@@ 100 CALL S1ENDC(8HINPUT ,IMB )@@G@@FLD,NCARD,SCR,LSCR,LEND,NE,$120) @#@@@@ NERR=NERR+NE@#@@@@ MC )@@G@@GO TO 150 @#@@@@ 120 RETURN 14 @[@@@@C @ @@@@C CALLMD )@@G@@ S1ENST @[@@@@C @G@@@@ 150 CALL S1ENST(8HINPUT ,SCR,LEND,CWSPME )@@G@@EC,NCW,0,STOR,17,TSTOR,NE) @#@@@@ NERR=NERR+NE@A@@@@ IF(SMF )@@G@@TOR(14).EQ.0) GO TO 141 @E@@@@ CALL S1CCSJ(STOR,TSTOR,SCR,LSCR,NEMG )@@G@@RR,CWSP,NEWCW) @E@@@@ IF(PROGNM(1).EQ.'ROTATE') CALL S1CTAG('VNAMH )@@G@@MES','NULL')@#@@@@141 CONTINUE @B@@@@ IF(PROGNM(1).EQ.'ROTATE'MI )@@G@@)GO TO 151 @^@@@@ NVARS=STOR(1) @#@@@@ GO TO 152 @#@@@@MJ )@@G@@ 151 CONTINUE @#@@@@ NV=STOR(11) @#@@@@ NF=STOR(12) @^@@@@MK )@@G@@ IF(NV.EQ.0)NV=400 @^@@@@ IF(NF.EQ.0)NF=400 @A@@@@ CALL SML )@@G@@1STFT('NV',LNV,1,1,$999)@A@@@@ CALL S1STFT('NF',LNF,1,1,$999)@#@@@@MM )@@G@@ X(LNV)=NV @#@@@@ X(LNF)=NF @#@@@@ NVARS=NF @ @@@@MN )@@G@@ IF(NF.LE.NV)GO TO 152 @#@@@@ NERR=NERR+1 @^@@@@ CALL SMO )@@G@@1PCHD(2) @#@@@@ PRINT 1530 @G@@@@1530 FORMAT('0*****FIRST PARAMP )@@G@@METER OF CONTROL WORD FACTMAT (VARIABLES) @E@@@@ *MUST NOT BE SMALLEMQ )@@G@@R THAN SECOND PARAMETER (FACTORS).')@#@@@@ 152 CONTINUE @#@@@@ MR )@@G@@NCR=STOR(2) @^@@@@ COPIN=STOR(3) @B@@@@ CALL S1GTAG('NVARSMS )@@G@@',FW,N,N,$999) @#@@@@ X(FW)=NVARS @A@@@@ IF( STOR(15) .EQ. MT )@@G@@0) GO TO 153@#@@@@ NVALS = 1 @A@@@@ IF( STOR(15) .EQ. 3) NVAMU )@@G@@LS = 2@C@@@@ CALL S1STFT('NOBS', FW, NVALS, 1, $999) @^@@@@ MV )@@G@@X(FW) = STOR(16) @B@@@@ IF( NVALS .EQ. 2) X(FW+1) = STOR(17)@#@@@@MW )@@G@@153 CONTINUE @ @@@@ IF(NVARS .LE. 0) NVARS=0@ @@@@ IF(NCRMX )@@G@@ .LE. 0) NCR=1 @#@@@@ CHARS=80 @C@@[@ CALL S1GTAG('CHARSMY )@@G@@',LCH,DUM,DUM,$154) @#@@[@ CHARS=X(LCH)@C@@[@ CALL S1GTAG(MZ )@@G@@'SDFFIL',DUM,DUM,DUM,$1541) @A]@@@ IF(CHARS.LE.378) GO TO 155 NA )@@G@@@^@@@@ CALL S1PCHD(1) @#@@@@ NERR=NERR+1 @#@@@@ PRINT NB )@@G@@995 @#@@@@ GO TO 155 @B@@@@154 CALL S1STFT('CHARS',FW,1,1,$99NC )@@G@@9) @#@@@@ X(FW)=80 @#@@[@ GO TO 155 @C@@[@1541 CALL SND )@@G@@1GVAL('BCDTAP',DUM,$1542,$1542) @#@@[@ GO TO 155 @^@@[@1542 NE )@@G@@CALL S1PCHD(1) @#@@[@ PRINT 998 @#@@[@ CHARS=80 @#@@[@NF )@@G@@ X(LCH)=80 @^@@@@155 WORDS=CHARS/6 @B@@@@ IF (WORDS*6.NG )@@G@@NE.CHARS) WORDS=WORDS+1 @B@@@@ CALL S1STFT('WORDS',FW,1,1,$999) NH )@@G@@@#@@@@ X(FW)=WORDS @^@@@@ LCARDS=NCR*WORDS+1@A@@@@ IF( CONI )@@G@@PIN .NE. 0) LCARDS = 14 @A@@@@ IF(PROGNM(1).NE.'ROTATE') @C@@@@NJ )@@G@@ *CALL S1STRS('LCARDS', 1, LCARDS, $999) @B@@@@ CALL S1GTAG(NK )@@G@@'INROUT',FW,N,N,$999) @]@@@@ N=1 @B@@@@ CALL S1GVAL('BCDTANL )@@G@@P',NN,$158,$158) @]@@@@ N=3 @A@@@@ IF(STOR( 4).EQ.0) GO TONM )@@G@@ 160 @A@@@@ IF (STOR( 5).EQ.1) GO TO 156 @#@@@@ NERR=NERR+1 NN )@@G@@@^@@@@ CALL S1PCHD(1) @#@@@@ PRINT 997 @#@@@@ GO TO NO )@@G@@160 @B@@@@ 156 CALL S1STFT('BLOCKE',LBLK,1,1,$999) @^@@@@ X(LBLKNP )@@G@@)=STOR( 6) @A@@@@ IF(STOR( 4).EQ.1) GO TO 160 @B@@@@ CALL SNQ )@@G@@1STFT('PADDIN',LBLK,1,1,$999) @A@@@@ IF (STOR( 7).EQ.1) GO TO 1572NR )@@G@@@C@@@@ IF (STOR(8 ).EQ.'BLANK') STOR( 8)=1H @^@@@@ TEMP=SNS )@@G@@TOR( 8) @ @@@@ CALL S1PRST(TEMP,1,1H ) @B@@@@ IF(TEMP.EQ.6NT )@@G@@H ) GO TO 1571 @#@@@@ 157 NERR=NERR+1 @^@@@@ CALL S1PCHD(NU )@@G@@1) @#@@@@ PRINT 996 @#@@@@ GO TO 160 @^@@@@ 1571 X(LBLKNV )@@G@@)=STOR( 8) @#@@@@ GO TO 160 @A@@@@ 1572 IF(STOR( 8).GT.9) GO TONW )@@G@@ 157 @ @@@@ STOR( 8)=STOR( 8)+48 @A@@@@ CALL S1PRFT(STOR( NX )@@G@@ 8),6,CHAR) @#@@@@ X(LBLK)=CHAR@#@@@@ GO TO 160 @B@@@@158 NY )@@G@@CALL S1GVAL('SDFFIL',NN,$160,$160) @]@@@@ N=2 @#@@@@160 CONTNZ )@@G@@INUE @A@@@@ IF(STOR(14).EQ.0) GO TO 161 @]@@@@ N=4 @#@@@@OA )@@G@@161 CONTINUE @#@@@@ X(FW)=N @]@@@@ RETURN@G@@@@ 995 OB )@@G@@FORMAT(' ***** CHARS MUST NOT EXCEED 378 FOR SDFFILE INPUT.') @G@@@@OC )@@G@@ 996 FORMAT(' ***** SECOND PARAMETER OF CONTROL WORD BLOCKED MUST BE A OD )@@G@@@G@@@@ *SINGLE LETTER OR NUMERAL OR THE WORD BLANK TO SPECIFY PADDINOE )@@G@@G CHAR@#@@@@ *ACTER.') @G@@@@ 997 FORMAT(' ***** FIRST PARAMETEROF )@@G@@ OF THE CONTROL WORD BLOCKED MUST BE@D@@@@ * THE BLOCKING FACTOR FOROG )@@G@@ BCD TAPE RECORDS.') @G@@[@998 FORMAT(' ***** THE CHARS CONTROL WOROH )@@G@@D WILL BE IGNORED; CHARS CAN O@C@@[@ *NLY BE USED WITH SDFFILE OR BCOI )@@G@@DTAPE.') @ @@@@999 CALL S1SERR('S1CCIN.')@]@@@@ END ___@[@OJ )@@G@@ CALL S1GTAG('CHARS',LCH,DUM,DUM,$154) @#@@[@ CHARS=X(LCH)OK )@@G@@@C@@[@ CALL S1GTAG(*[S@@@*SDFF*@E@@@@ SUBROUTINE S1GLST(FMT,FMOL )@@G@@TLEN,NVARS,LIST,RECWTH,NREC,$)@[@@@@C @H@@@@C FMT IS THE NAMEOM )@@G@@ OF AN ARRAY WHICH CONTAINS A STRING OF CHARACTERS @H@@@@C WHON )@@G@@ICH ARE THE FORTRAN FORMAT TO BE CRACKED. THE FORMAT MUST START @G@@@@OO )@@G@@C IN THE FIRST (LEFTHAND MOST) CHARACTER POSITION OF THE ARRAY. OP )@@G@@@[@@@@C @G@@@@C FMTLEN IS THE NUMBER OF CHARACTERS IN THE FOROQ )@@G@@MAT. THE FORMAT @H@@@@C MUST BEGIN WITH A LEFT PARENTHESIS BUTOR )@@G@@ OTHERWISE BLANKS ARE IGNORED.@[@@@@C @H@@@@C NVARS IS THE NUOS )@@G@@MBER OF VARIABLES FOR WHICH THIS FORMAT IS TO BE USED.@[@@@@C @H@@@@OT )@@G@@C LIST IS AN ARRAY DIMENSIONED AT 2 BY NVARS. UPON RETURN FROM TOU )@@G@@HIS @C@@@@C ROUTINE, LIST IS LEFT AS FOLLOWS... @F@@@@C FLDOV )@@G@@( 0,18,LIST(1,I))=RECORD NUMBER CONTAINING THE I'TH VARIABLE@I@@@@C FLDOW )@@G@@(18,18,LIST(1,I))=COLUMN NUMBER THE I'TH VARIABLE BEGINS IN IN THAT RECOOX )@@G@@RD @H@@@@C FLD( 0,18,LIST(2,I))=COLUMN NUMBER THE I'TH VARIABLE ENDSOY )@@G@@ IN IN THAT RECORD@G@@@@C FLD(18, 6,LIST(2,I))=INTEGER INDICATING THE TOZ )@@G@@YPE OF FIELD SPECIFIED @C@@@@C IF THE FIELD TYPE IS D,E,F, OR GPA )@@G@@ THEN @H@@@@C FLD(24, 6,LIST(2,I))=D WIDTH SPECIFIED FOR THE FIELD (I.EPB )@@G@@. 5 IN E13,5) @E@@@@C FLD(30, 6,LIST(2,I))=SCALE FACTOR SPECIFIED FPC )@@G@@OR THE FIELD@[@@@@C @H@@@@C RECWTH IS AN ARRAY DIMENSIONED ATPD )@@G@@ LEAST TO NREC. UPON RETURN FROM @H@@@@C THIS ROUTINE, RECWTHPE )@@G@@(I) WILL CONTAIN THE MINIMUM NUMBER OF COLUMNS @E@@@@C REQUIREDPF )@@G@@ BY THIS FORMAT TO BE IN RECORD NUMBER I. @[@@@@C @H@@@@C NREPG )@@G@@C IS AN INTEGER VARIABLE WHICH AT ENTRY GIVES THE MAXIMUM NUMBER @G@@@@PH )@@G@@C OF RECORDS TO BE ALLOWED FROM THE FORMAT. IF MORE RECORDS AREPI )@@G@@@H@@@@C SPECIFIED, AN ERROR IS INDICATED AND THE ERROR RETURN TAPJ )@@G@@KEN. UPON @H@@@@C RETURN, THIS VARIABLE WILL CONTAIN THE NUMBEPK )@@G@@R OF RECORDS REQUIRED @D@@@@C BY THE FORMAT FOR INPUTTING NVARPL )@@G@@S VARIABLES.@[@@@@C @H@@@@C THE SEVENTH ARGUMENT IS AN ERROR PM )@@G@@RETURN, TAKEN WHEN ANY TYPE OF ERROR@G@@@@C IS DETECTED. PRIOR PN )@@G@@TO RETURN, AN ERROR MESSAGE OF THE FORM...@F@@@@C ***** FORMPO )@@G@@AT ERROR - (...ERROR TYPE...) ON CARD XX @D@@@@C (CARDPP )@@G@@ IMAGE WITH ASTERISK POINTER) @H@@@@C WILL BE PRINTED. (THE CARPQ )@@G@@D IMAGE WILL NOT BE PRINTED IF THE ERROR @A@@@@C IS A PARENTHEPR )@@G@@SIS ERROR.) @H@@@@C MOST TYPES OF ERRORS ARE DETECTED BY THE ACTPS )@@G@@UAL FORMAT CRACKING @G@@@@C ROUTINE, S1SFMT, AND ARE DESCRIBPT )@@G@@ED IN CONNECTION WITH IT. TWO@H@@@@C ERROR TYPES ARE DETECTED IPU )@@G@@N THIS ROUTINE. ONE IS THE SPECIFICATION @H@@@@C BY THE FORMAT PV )@@G@@OF MORE THAN NREC RECORDS AS DESCRIBED ABOVE. THIS @H@@@@C REPW )@@G@@SULTS IN THE DIAGNOSTIC 'TOO MANY RECORS' BEING PRINTED. THE @H@@@@PX )@@G@@C OTHER IS INDICATED BY THE DIAGNOSTIC, 'EXTRA FORMAT', AND INDIPY )@@G@@CATES @G@@@@C THAT THE FORMAT HAS MORE SPECIFICATONS THAN REQUIRPZ )@@G@@ED FOR NVARS@H@@@@C VARIABLES. THE ROUTINE DETECTS THIS IF NO RQA )@@G@@IGHT PARENTHESIS ENDING @G@@@@C AN UNLIMITED GROUP IS ENCOUNTEREQB )@@G@@D. FOR EXAMPLE, THE FORMAT @H@@@@C (5F4.1,3E15.6) WOULD RESULQC )@@G@@T IN THIS DIAGNOSTIC IF NVARS WERE LESS @#@@@@C THAN 8. @[@@@@QD )@@G@@C @ @@@@ PARAMETER MAXTYP=13 @ @@@@ IMPLICIT INTEGER (QE )@@G@@A-Z) @E@@@@ DIMENSION FMT(2),LIST(2,NVARS),RECWTH(2),ERRMES(3) QF )@@G@@@A@@@@ DIMENSION HLDFMT(12)/12*1H / @[@@@@C @A@@@@C INIQG )@@G@@TIALIZE FORMAT CRACKER @[@@@@C @ @@@@ CALL S1SFMT(FMT,FMTLEN) QH )@@G@@@#@@@@ MAXREC=NREC @]@@@@ NREC=1@#@@@@ PSCAL=0 @]@@@@QI )@@G@@ COL=0 @#@@@@ COLMAX=0 @#@@@@ K=NVARS+1 @^@@@@ QJ )@@G@@ASSIGN 331 TO JUMP@[@@@@C @D@@@@C GO GET SPECIFICATIONS ONE FQK )@@G@@IELD AT A TIME @[@@@@C @#@@@@ DO 32 I=1,K @D@@@@ 31 CALL SQL )@@G@@1SPEC(FLDTYP,FLDWTH,DWIDTH,PSCALE,ERRMES) @A@@@@ IF(FLDTYP.LE.MAXTYQM )@@G@@P) GO TO 316@^@@@@ F=FLDTYP-MAXTYP @B@@@@ GO TO (311,312,313QN )@@G@@,314,315,900),F @[@@@@C @#@@@@C X FIELD @[@@@@C @ @@@@QO )@@G@@ 311 CALL ADDCOL(FLDWTH) @#@@@@ GO TO 31 @[@@@@C @#@@@@QP )@@G@@C T FIELD @[@@@@C @#@@@@ 312 COL=FLDWTH-1@A@@@@ IF(COLQQ )@@G@@.GT.COLMAX) COLMAX=COL @#@@@@ GO TO 31 @[@@@@C @^@@@@C QR )@@G@@ HOLERITH FIELD @[@@@@C @ @@@@ 313 CALL ADDCOL(FLDWTH) @#@@@@QS )@@G@@ GO TO 31 @[@@@@C @#@@@@C SLASH @[@@@@C @ @@@@QT )@@G@@ 314 RECWTH(NREC)=COLMAX @#@@@@ COLMAX=0 @]@@@@ COL=0 QU )@@G@@@#@@@@ NREC=NREC+1 @A@@@@ IF(NREC.LE.MAXREC) GO TO 31 @#@@@@QV )@@G@@ FLDWTH=17 @#@@@@ NREC=NREC-1 @A@@@@ CALL ERR('NRECS > QW )@@G@@NLR ') @#@@@@ RETURN 7 @[@@@@C @A@@@@C ) ENDING QX )@@G@@UNLIMITED GROUP @[@@@@C @ @@@@ 315 IF(I.EQ.K) GO TO 34 @^@@@@QY )@@G@@ ASSIGN 34 TO JUMP @#@@@@ GO TO 314 @[@@@@C @^@@@@C QZ )@@G@@ ALL OTHERS @[@@@@C @ @@@@ 316 IF(I.EQ.K) GO TO 33 @ @@@@RA )@@G@@ FLD(0,18,LIST(1,I))=NREC@A@@@@ FLD(18,18,LIST(1,I))=COL+1 RB )@@G@@@A@@@@ FLD(0,18,LIST(2,I))=COL+FLDWTH@ @@@@ CALL ADDCOL(FLDWTHRC )@@G@@) @A@@@@ FLD(18,6,LIST(2,I))=FLDTYP @ @@@@ IF(FLDTYP.GTRD )@@G@@.4) GO TO 32@A@@@@ FLD(24,6,LIST(2,I))=DWIDTH @B@@@@ IF(PSCRE )@@G@@ALE.NE.-999) PSCAL=PSCALE @A@@@@ FLD(30,6,LIST(2,I))=PSCAL RF )@@G@@@#@@@@ 32 CONTINUE @#@@@@ 33 GO TO JUMP @[@@@@C @A@@@@C RG )@@G@@ NEVER USED ALL OF FORMAT @[@@@@C @#@@@@ 331 FLDWTH=18 @A@@@@RH )@@G@@ IF(NVARS.EQ.0) GO TO 901 @A@@@@ CALL ERR('EXTRA FORMAT RI )@@G@@') @#@@@@ GO TO 901 @[@@@@C @^@@@@C NORMAL RETURN RJ )@@G@@@[@@@@C @ @@@@ 34 RECWTH(NREC)=COLMAX @]@@@@ RETURN@[@@@@RK )@@G@@C @ @@@@C ERRORS COME HERE @[@@@@C @^@@@@ 900 CALL ERL )@@G@@RR(ERRMES) @ @@@@ 901 RECWTH(NREC)=COLMAX @#@@@@ RETURN 7 RM )@@G@@@[@@@@C @D@@@@C ADDS N COLUMNS TO CURRENT COLUMN COUNTER RN )@@G@@@[@@@@C @ @@@@ SUBROUTINE ADDCOL(N) @#@@@@ COL=COL+N RO )@@G@@@A@@@@ IF(COL.GT.COLMAX) COLMAX=COL @]@@@@ RETURN@[@@@@C RP )@@G@@@A@@@@C HANDLES ERROR MESSAGES @[@@@@C @ @@@@ SUBROURQ )@@G@@TINE ERR(ERRMES) @ @@@@ DIMENSION ERRMES(3) @^@@@@ CALL SRR )@@G@@1WHR(F) @B@@@@C BACK POINTER UP 2, LOOK FOR NON-BLANK. @]@@[@ RS )@@G@@FF=F-2@^@@[@ IF(FF.LT.1) FF=1@^@@[@ DO 8990 H=FF,1,-1 @ #@@@RT )@@G@@ CALL S1PRFT(FMT,H,CHAR) @A@@@@ IF(CHAR.NE.1H ) GO TO 8994 RU )@@G@@@#@@@@8990 CONTINUE @^@@[@ DO 8991 H=FF,F,1@A@@[@ CALLRV )@@G@@ S1PRFT(FMT,H,CHAR) @A]@@@ IF(CHAR.NE.1H ) GO TO 8994 @#@@@@RW )@@G@@8991 CONTINUE @]@@[@ H=FF @A@@[@ IF(FLDWTH.EQ.1)GO TO 899RX )@@G@@4 @ @@[@ CALL S1SERR('S1GLST') @#@@[@ RETURN 7 @]@@@@RY )@@G@@8994 F=H @^@@@@C G IS CARD NUMBER. @#@@@@ G=(F-1)/64+1@^@@@@RZ )@@G@@ CALL S1PCHD(2) @ @@@@ PRINT 9000,ERRMES,G @G@@@@9000 SA )@@G@@FORMAT ('0***** FORMAT ERROR - ',3A6,' AS SPECIFIED BY THIS FORMAT@D@@@@SB )@@G@@ 1 ON CARD ', I3, ' OF FORMAT SPECIFICATION') @C@@@@C DO SC )@@G@@NOT POINT OUT PARENTHESIS ERROR @ @@@@ IF(FLDWTH.EQ.1) RETURN SD )@@G@@@#@@@@ G=(G-1)*64+1@C@@@@C G POINTS TO FIRST CHARACTER ON BAD CARDSE )@@G@@. @A@@@@ CALL S1TCHS(FMT,G,HLDFMT,1,64)@A@@@@ CALL S1SMCD(SF )@@G@@HLDFMT,F-G+1) @]@@@@ RETURN@]@@@@ END ___ IF(NREC.LE.MSG )@@G@@AXREC) GO TO 31 @#@@@@ FLDWTH=17 @#@@@@*[S@@@*SDFF*@D@@@@ SH )@@G@@SUBROUTINE S11BVP(CN,CARD,NC,SCR,LSCR,NERR,$) @ @@@@ IMPLICIT INTSI )@@G@@EGER (A-Z) @ @@@@ DIMENSION CARD(1),SCR(1)@[@@@@C @A@@@@C SJ )@@G@@ PICT1 SCAT CARD PROCESSOR. @[@@@@C @F@@@@C SCAT CARD NUMBESK )@@G@@R CN, STORED IN VECTOR CARD, IS DECODED @F@@@@C AND CHECKED. SSL )@@G@@UMMARY INFORMATION IS SAVED AT TAG 'SPLOT'@^@@@@C AS FOLLOWS - SM )@@G@@@B@@@@C 1. NUMBER OF SCAT CARDS @E@@@@C 2. SN )@@G@@MAXIMUM NUMBER OF VARIABLES SPECIFIED @B@@@@C 3. MAXIMUSO )@@G@@M NUMBER OF PLOTS @D@@[@C 4. MAXIMUM SIZE OF PLOTS IN CHARASP )@@G@@CTERS @C[@@@C 5. MAXIMUM VERTICAL PLOT LENGTH @D@@[@C SQ )@@G@@ 6. MAXIMUM TOTAL NUMBER OF CATEGORIES @D@@[@C 7. SR )@@G@@MAXIMUM GROUPS VALUES LIST SIZE @[@@@@C @F@@@@C OUTPUT SPSS )@@G@@ECIFICATIONS ARE WRITTEN ON UNIT 1, AS FOLLOWS @A@@@@C 1. ST )@@G@@SCAT CARD NUMBER @F@@@@C 2. 20 WORD SPECS VECTOR - SEE BELSU )@@G@@OW FOR CONTENTS @A@@@@C 3. VARIABLE LIST(S) @D@@@@C SV )@@G@@ 4. 5 BY NGROUP ARRAY - FOR EACH GROUPS @B@@@@C SW )@@G@@ A. VARIABLE INDEX @B@@@@C B. VARIABLE TYPE SX )@@G@@@C@@@@C C. NUMBER OF CATEGORIES @C@@@@C SY )@@G@@ D. NUMBER OF VALUES, NVALS@C@@@@C E. OTHERSZ )@@G@@ AND MISSING SPECS@D@@@@C 5. 2 BY NVALS ARRAY FOR EACH GROUTA )@@G@@PS @B@@@@C A. CATEGORY NUMBER @ @@@@C TB )@@G@@ B. VALUE@[@@@@C @[@@@@C @ @@@@ DIMENSION CWSPEC(1TC )@@G@@24) @^@@@@ DATA CWSPEC / @C@@@@ - 'VARS ',2,0,1,TD )@@G@@200,2,-1,0,0, @C@@@@ - 'HVARS ',7,1,201,200,1,-1,0,0, TE )@@G@@@C@@@@ - 'VVARS ',7,1,401,200,1,-1,0,0, @C@@@@ - 'SITF )@@G@@ZE ',2,0,601,2,2,3,3,20, @F@@@@ - 'HSCALE ',2,0,62TG )@@G@@1,2,1,3,-9999999999,9999999999, @F@@@@ - 'VSCALE ',2,0,64TH )@@G@@1,2,1,3,-9999999999,9999999999, @C@@@@ - 'GRID ',2,0,66TI )@@G@@1,2,2,9,0,20, @B@@@@ - 'REGRESSION ',2,0,681,2,0,8,0,0,@A@@@@TJ )@@G@@ - 'LISTMD ',2,0,691,0, @A@@@@ - 'LISTOFF ',2,0,69TK )@@G@@2,0, @C@@@@ - 'LABELVAR ',2,0,701,1,1,-1,0,0, @F@@@@ -TL )@@G@@ 'GROUPS ',-2,0,721,200,2,27,-9999999999,9999999999, @A@@@@ -TM )@@G@@ 'FREQ ',2,0,693,0, @A@@@@ - 'OK ',2,0,694,0/ TN )@@G@@@[@@@@C @[@@@@C @#@@@@ COMMON X(1) @^@@@@ DIMENSION NETO )@@G@@X(2) @#@@@@ REAL RVAL @ @@@@ EQUIVALENCE (VAL,RVAL) @[@@@@TP )@@G@@C @[@@@@C @ @@@@ DIMENSION SPECS(20) @A@@@@ EQUIVATQ )@@G@@LENCE(SPECS(1),NVARS) @A@@@@ EQUIVALENCE(SPECS(2),NHVARS) @A@@@@TR )@@G@@ EQUIVALENCE(SPECS(3),NVVARS) @A@@@@ EQUIVALENCE(SPECS(4),HSITS )@@G@@ZE) @A@@@@ EQUIVALENCE(SPECS(5),VSIZE) @A@@@@ EQUIVALENCE(TT )@@G@@SPECS(6),HSCALE) @A@@@@ EQUIVALENCE(SPECS(7),HMIN) @A@@@@ TU )@@G@@EQUIVALENCE(SPECS(8),HMAX) @A@@@@ EQUIVALENCE(SPECS(9),VSCALE) TV )@@G@@@A@@@@ EQUIVALENCE(SPECS(10),VMIN) @A@@@@ EQUIVALENCE(SPECS(TW )@@G@@11),VMAX) @A@@@@ EQUIVALENCE(SPECS(12),HGRID) @A@@@@ EQUIVATX )@@G@@LENCE(SPECS(13),VGRID) @A@@@@ EQUIVALENCE(SPECS(14),VIND) @A@@@@TY )@@G@@ EQUIVALENCE(SPECS(15),VDEP) @A@@@@ EQUIVALENCE(SPECS(16),LITZ )@@G@@STMD) @A@@@@ EQUIVALENCE(SPECS(17),LISTOF) @A@@@@ EQUIVALENCE(UA )@@G@@SPECS(18),LABELV) @A@@@@ EQUIVALENCE(SPECS(19),FREQ) @A@@@@ UB )@@G@@EQUIVALENCE(SPECS(20),NGROUP) @B@@@@ REAL HSIZE,VSIZE,HMIN,HMAX,VMIUC )@@G@@N,VMAX@[@@@@C @[@@@@C @^@@@@C INITIALIZE@[@@@@C UD )@@G@@@C@@@@ CALL S1GTAG('SPLOT',IBV,DUM,DUM,$110) @#@@@@ GO TO UE )@@G@@120 @]@@@@ 110 NEL=10@B@@@@ CALL S1STFT('SPLOT',IBV,1,NEL,$155) UF )@@G@@@^@@@@ DO 115 J=1,NEL @#@@@@ 115 X(IBV+J-1)=0@B@@@@ CALL SUG )@@G@@1IODR(1,'REWIND',DUM,DUM,DUM) @#@@[@ IDVAR=0 @C@@[@ CALL SUH )@@G@@1GTAG('IDVAR',IDFW,DUM,DUM,$120) @A@@[@ IF(X(IDFW) .EQ. 1) GO TOUI )@@G@@ 117 @A@@[@ IF(X(IDFW) .NE. 4) GO TO 120 @B@@[@ CALL S1CKVN(UJ )@@G@@X(IDFW+1),IDVAR,$120) @#@@[@ GO TO 118 @^@@[@ 117 IDVAR=X(IDFWUK )@@G@@+1) @B@@[@ 118 CALL S1VLST('IDVAR ',IDVAR,0,DUM) @^@@@@ 120 X(IBV)UL )@@G@@=X(IBV)+1 @[@@@@C @D@@@@C DECODE AND STORE CONTROL INFUM )@@G@@ORMATION @[@@@@C @#@@@@ 150 LLIST=1501 @^@@@@ LMAX=LSCR-LLUN )@@G@@IST @A@@@@ IF(LMAX .GT. 100) GO TO 160 @ @@@@ 155 CALL S1SERR(UO )@@G@@'S11BVP.') @]@@@@ RETURN@F@@@@ 160 CALL S1ENDC('SCAT ',CARD,NC,UP )@@G@@SCR(LLIST),LMAX,LEND,NE,$155) @#@@@@ NERR=NERR+NE@G@@@@ CALL SUQ )@@G@@1ENST('SCAT ',SCR(LLIST),LEND,CWSPEC,14,DUM,SCR,1500, @#@@@@ -UR )@@G@@ DUM,NE) @#@@@@ NERR=NERR+NE@[@@@@C @C@@@@C PROCUS )@@G@@ESS VARS,HVARS, AND VVARS @[@@@@C @#@@@@ 200 NVARS=SCR(1)@A@@@@UT )@@G@@ IF(NVARS .EQ. 0) GO TO 220 @B@@@@ CALL TSTALP('VARS ',NVUU )@@G@@ARS,SCR(2)) @#@@@@ GO TO 250 @^@@@@ 220 NHVARS=SCR(201) @^@@@@UV )@@G@@ NVVARS=SCR(401) @F@@@@ IF(NHVARS .NE. 0) CALL TSTALP('HVARSUW )@@G@@ ',NHVARS,SCR(202)) @F@@@@ IF(NVVARS .NE. 0) CALL TSTALP('VVARSUX )@@G@@ ',NVVARS,SCR(402)) @D@@@@ IF(NHVARS .EQ. 0 .OR. NVVARS .EQ. UY )@@G@@0) GO TO 250@^@@@@ DO 240 I=1,NHVARS @^@@@@ VI=SCR(201+I) UZ )@@G@@@^@@@@ DO 230 J=1,NVVARS @B@@@@ IF(VI .NE. SCR(401+J)) GO TO 2VA )@@G@@30 @#@@@@ CALL ERROR @^@@@@ PRINT 9225,VI @G@@@@ 9225 VB )@@G@@FORMAT(' ***** PICT1 ERROR. VARIABLE NUMBER',I4,' IS SPECIFIED WI@A@@@@VC )@@G@@ -TH BOTH HVARS AND VVARS') @#@@@@ GO TO 240 @#@@@@ 230 VD )@@G@@CONTINUE @#@@@@ 240 CONTINUE @[@@@@C @A@@@@C PROCVE )@@G@@ESS SIZE SPECS @[@@@@C @#@@[@ 250 HSIZE=6. @#@@[@ VSIZE=VF )@@G@@6. @A]@@@ IF(SCR(601) .EQ. 0) GO TO 300 @A@@@@ CALL LOAD3(SVG )@@G@@CR(601),HSIZE) @A@@@@ IF(HSIZE .LE. 10.) GO TO 275 @#@@@@ VH )@@G@@CALL ERROR @#@@@@ PRINT 9270 @G@@@@ 9270 FORMAT(' ***** PICT1 ERRVI )@@G@@OR. HORIZONTAL PLOT SIZE SPECIFIED WITH S@ @@@@ -IZE EXCEEDS 10 INCVJ )@@G@@HES') @A@@@@ 275 CALL LOAD3(SCR(603),VSIZE) @[@@@@C @B@@@@C VK )@@G@@ PROCESS HSCALE AND VSCALE @[@@@@C @C@@@@ 300 CALL PSCALE(VL )@@G@@'H',SCR(621),HSCALE,HMIN,HMAX)@C@@@@ CALL PSCALE('V',SCR(641),VSCALVM )@@G@@E,VMIN,VMAX)@[@@@@C @A@@@@C PROCESS GRID SPECS @[@@@@VN )@@G@@C @#@@@@ 350 HGRID=0 @#@@@@ VGRID=0 @A@@@@ IF(SCRVO )@@G@@(661) .EQ. 0) GO TO 400 @A@@@@ IF(SCR(661) .EQ. 4) GO TO 360 @A@@@@VP )@@G@@ IF(SCR(661) .NE. 1) GO TO 400 @]@@@@ L=663 @^@@@@ HGRID=VQ )@@G@@SCR(662) @A@@@@ IF(HGRID .LT. HSIZE) GO TO 370@#@@@@ CALL EVR )@@G@@RROR @#@@@@ PRINT 9355 @G@@@@ 9355 FORMAT(' ***** PICT1 ERROR. NVS )@@G@@UMBER OF GRID LINES SPECIFIED IS NOT@B@@@@ - LESS THAN THE PLOT SIZEVT )@@G@@ IN INCHES')@#@@@@ GO TO 370 @]@@@@ 360 L=664 @B@@@@ IF(SCRVU )@@G@@(662) .EQ. 'NONE') GO TO 370 @B@@@@ IF(SCR(662) .NE. 'SDV') GO TO VV )@@G@@365 @#@@@@ HGRID=-1 @#@@@@ GO TO 370 @#@@@@ 365 CALL EVW )@@G@@RROR @#@@@@ PRINT 9365 @G@@@@ 9365 FORMAT(' ***** PICT1 ERROR. OVX )@@G@@NLY INTEGERS OR ''NONE'' OR ''SDV'' @C@@@@ -CAN BE USED WITH THE CONVY )@@G@@TROL WORD GRID') @A@@@@ 370 IF(SCR(L) .EQ. 4) GO TO 380 @A@@@@ VZ )@@G@@IF(SCR(L) .NE. 1) GO TO 400 @^@@@@ VGRID=SCR(L+1) @A@@@@ WA )@@G@@IF(VGRID .LT. VSIZE) GO TO 400@#@@@@ CALL ERROR @#@@@@ PRINT WB )@@G@@9355 @#@@@@ GO TO 400 @B@@@@ 380 IF(SCR(L+1) .EQ. 'NONE') GO TOWC )@@G@@ 400 @B@@@@ IF(SCR(L+1) .NE. 'SDV') GO TO 385 @#@@@@ VGRID=WD )@@G@@-1 @#@@@@ GO TO 400 @#@@@@ 385 CALL ERROR @#@@@@ PRINT WE )@@G@@9365 @[@@@@C @B@@@@C PROCESS REGRESSION SPECS @[@@@@WF )@@G@@C @]@@@@ 400 VIND=0@]@@@@ VDEP=0@A@@@@ IF(SCR(681) .EQ. 0WG )@@G@@) GO TO 450 @^@@@@ NMODIF=SCR(682) @A@@@@ IF(NMODIF .NE. 0) WH )@@G@@GO TO 410 @]@@@@ VIND=1@]@@@@ VDEP=1@#@@@@ GO TO 450 WI )@@G@@@]@@@@ 410 L=683 @^@@@@ DO 440 J=1,NMODIF @B@@@@ IF(SCR(L) .NWJ )@@G@@E. 'VIND') GO TO 420 @A@@@@ IF(VIND .EQ. 0) GO TO 415 @#@@@@WK )@@G@@ 412 CALL ERROR @#@@@@ PRINT 9410 @G@@@@ 9410 FORMAT(' ***** PICWL )@@G@@T1 ERROR. VIND OR VDEP IS USED MORE THAN ONCE W@B@@@@ -ITH THE REGRWM )@@G@@ESSION CONTROL WORD') @#@@@@ GO TO 440 @]@@@@ 415 VIND=1@#@@@@WN )@@G@@ GO TO 440 @B@@@@ 420 IF(SCR(L) .NE. 'VDEP') GO TO 430 @A@@@@WO )@@G@@ IF(VDEP .NE. 0) GO TO 412 @]@@@@ VDEP=1@#@@@@ GO TO WP )@@G@@440 @#@@@@ 430 CALL ERROR @#@@@@ PRINT 9435 @G@@@@ 9435 FORMATWQ )@@G@@(' ***** PICT1 ERROR. A MODIFIER OTHER THAN VIND AND VDEP I@C@@@@ -WR )@@G@@S USED WITH THE REGRESSION CONTROL WORD') @]@@@@ 440 L=L+2 @[@@@@C WS )@@G@@@D@@@@C PROCESS LISTMD,LISTOFF AND LABELVAR @[@@@@C WT )@@G@@@^@@@@ 450 LISTMD=SCR(691) @^@@@@ LISTOF=SCR(692) @#@@@@ WU )@@G@@OK=SCR(694) @^@@@@ LABELV=SCR(701) @A@@@@ IF(LABELV .EQ. 0) WV )@@G@@GO TO 500 @B@@@@ CALL S1VLST('LABELVAR',LABELV,0,DUM)@A@@@@ WW )@@G@@CALL S1GTVT(LABELV,TYP,$460) @^@@@@ 460 LABELV=LABELV*2 @A@@@@ WX )@@G@@IF(TYP .EQ. 1) LABELV=LABELV+1@[@@@@C @E@@@@C SET FREQ AWY )@@G@@ND BEGIN PROCESSING GROUPS SPECS @[@@@@C @^@@@@ 500 FREQ=SCR(693WZ )@@G@@) @^@@@@ NGROUP=SCR(721) @#@@[@ ALLTOT=0 @#@@[@ XA )@@G@@LDAT=700 @A@@@@ IF(NGROUP .GT. 0) GO TO 510 @]@@@@ FREQ=1XB )@@G@@@#@@@@ GO TO 800 @A@@@@ 510 IF(NGROUP .LE. 20) GO TO 520 @#@@@@XC )@@G@@ CALL ERROR @#@@@@ PRINT 9515 @G@@@@ 9515 FORMAT(' ***** PICXD )@@G@@T1 ERROR. THE GROUPS CONTROL WORD IS USED MORE @^@@@@ -THAN 20 TIMEXE )@@G@@S') @#@@@@ NGROUP=20 @#@@@@ 520 LGD=600 @][@@@ NG=0 XF )@@G@@@]@@@@ L=722 @#@@@@ 530 NG=NG+1 @A@@@@ IF(NG .GT. NGROUP)XG )@@G@@ GO TO 800 @[@@@@C @F@@@@C GET NUMBER OF MODIFIERS AND XH )@@G@@VARIABLE SPECIFICATIONS @[@@@@C @^@@@@ NMODIF=SCR(L) @]@@@@XI )@@G@@ L=L+1 @A@@@@ IF(NMODIF .EQ. 0) GO TO 530 @]@@@@ VI=0 XJ )@@G@@@ @@@@ CALL NEXT(MTYP,NEX) @A@@@@ IF(MTYP .EQ. 4) GO TO 57XK )@@G@@0 @A@@@@ IF(MTYP .EQ. 1) GO TO 560 @#@@@@ CALL ERROR XL )@@G@@@#@@@@ PRINT 9550 @G@@@@ 9550 FORMAT(' ***** PICT1 ERROR. THE FIRXM )@@G@@ST MODIFIER OF GROUPS IS NOT T@B@@@@ -HE NAME OR NUMBER OF A VARIABLXN )@@G@@E') @#@@@@ GO TO 580 @ @@@@ 560 CALL S1CKVI(NEX(1),$565)@#@@@@XO )@@G@@ VI=NEX(1) @#@@@@ GO TO 580 @#@@@@ 565 CALL ERROR @^@@@@XP )@@G@@ PRINT 9565,NEX(1) @G@@@@ 9565 FORMAT(' ***** PICT1 ERROR. GROUPS XQ )@@G@@VARIABLE NUMBER',I5,' HAS NOT @^@@@@ -BEEN DEFINED') @#@@@@ XR )@@G@@GO TO 580 @ @@@@ 570 CALL S1CKVN(NEX,VI,$575)@#@@@@ GO TO 580 XS )@@G@@@#@@@@ 575 CALL ERROR @^@@@@ PRINT 9575,NEX @G@@@@ 9575 FORMATXT )@@G@@(' ***** PICT1 ERROR. GROUPS VARIABLE NAMED ',2A6,' IS NOT @#@@@@ -XU )@@G@@DEFINED') @]@@@@ 580 VTYP=0@ @@@@ IF(VI .EQ. 0) GO TO 590 @A@@@@XV )@@G@@ CALL S1GTVT(VI,VTYP,$590) @#@@@@ 590 SCR(LGD)=VI @B@@@@ XW )@@G@@CALL S1VLST('GROUPS ',VI,0,DUM) @^@@@@ SCR(LGD+1)=VTYP @[@@@@XX )@@G@@C @E@@@@C IF THERE ARE 2 MODIFIERS - CHECK FOR ALLK XY )@@G@@@[@@@@C @A@@@@ IF(NMODIF .EQ. 0) GO TO 530 @ @@@@ CALL NXZ )@@G@@EXT(MTYP,NEX) @A@@@@ IF(NMODIF .GT. 1) GO TO 650 @A@@@@ YA )@@G@@IF(MTYP .NE. 4) GO TO 650 @#@@@@ TEMP=NEX(1) @A@@@@ CALL SYB )@@G@@1TCHS(' ',1,TEMP,4,3) @A@@[@ IF(TEMP .EQ. 'ALL') GO TO 603 @#@@[@YC )@@G@@ TEMP=NEX(1) @A@@[@ CALL S1TCHS(' ',1,TEMP,5,2) @A@@[@ YD )@@G@@IF(TEMP .NE. 'XALL') GO TO 650@]@@[@ FCH=5 @#@@[@ ALLCOD=-2 YE )@@G@@@#@@[@ GO TO 605 @]@@[@ 603 FCH=4 @#@@[@ ALLCOD=-1 @^@@[@YF )@@G@@ 605 DO 610 J=FCH,12 @ ]@@@ CALL S1PRFT(NEX,J,CHAR) @A@@@@ YG )@@G@@IF(CHAR .EQ. ' ') GO TO 615 @B@@@@ IF(S1SPCT(CHAR) .NE. 2) GO TO YH )@@G@@650 @#@@@@ 610 CONTINUE @ @@[@ 615 IF(J .EQ. FCH) GO TO 650@B@@[@YI )@@G@@ CALL S1TCHS(' ',1,NEX,1,FCH-1) @ ]@@@ CALL S1VLU(NEX,J-1YJ )@@G@@,ALLK)@D@@@@ IF(ALLK .GT. 1 .AND. ALLK .LT. 36) GO TO 630 @#@@@@YK )@@G@@ CALL ERROR @#@@@@ PRINT 9625 @G@@@@ 9625 FORMAT(' ***** PICYL )@@G@@T1 ERROR. ALLK IS SPECIFIED WITH GROUPS AND K I@A@@@@ -S LESS THAN YM )@@G@@2 OR EXCEEDS 35') @#@@@@ ALLK=36 @^@@@@ 630 SCR(LGD+2)=ALLK YN )@@G@@@ @@[@ ALLTOT=ALLTOT+ALLK+6 @^@@[@ SCR(LGD+3)=ALLCOD @#[@@@YO )@@G@@ SCR(LGD+4)=0@#@@@@ 640 LGD=LGD+5 @#@@@@ GO TO 530 @[@@@@YP )@@G@@C @C@@@@C BEGINNING OF LOOP TO SAVE VALUES @[@@@@C YQ )@@G@@@#@@@@ 650 NVALS=0 @]@@@@ NGRP=1@#@@@@ OTHER=0 @#@@@@YR )@@G@@ MISSNG=0 @#@@@@ ALPERR=0 @#@@@@ ALPSIZ=0 @#@@@@YS )@@G@@ NUMERR=0 @D@@@@ 660 IF(MTYP .LT. 1 .OR. MTYP .GT. 5) GO TO 6YT )@@G@@75 @B@@@@ GO TO (700,720,680,740,760),MTYP @^@@@@ 670 NVALS=YU )@@G@@NVALS+1 @^@@@@ SCR(LDAT)=NGRP @^@@@@ SCR(LDAT+1)=VAL YV )@@G@@@#@@@@ LDAT=LDAT+2 @A@@@@ 675 IF(NMODIF .EQ. 0) GO TO 680 @ @@@@YW )@@G@@ CALL NEXT(MTYP,NEX) @#@@@@ GO TO 660 @[@@@@C @D@@@@YX )@@G@@C ALL VALUES SAVED - CHECK FOR DUPLICATES @[@@@@C @^@@@@YY )@@G@@ 680 SCR(LGD+2)=NGRP @ @@[@ ALLTOT=ALLTOT+NGRP+6 @A@@[@ YZ )@@G@@IF(NGRP .LT. 36) GO TO 682 @#@@[@ CALL ERROR @#@@[@ PRINT ZA )@@G@@9680 @G@@[@ 9680 FORMAT(' ***** PICT1 ERROR. MORE THAN 35 CATEGORIES AZB )@@G@@RE SPECIFIED@A@@[@ - WITH A GROUPS CONTROL WORD') @^@@[@ 682 SCR(LGZC )@@G@@D+3)=NVALS @A[@@@ SCR(LGD+4)=OTHER*1024 + MISSNG@A@@@@ IF(NVAZD )@@G@@LS .LT. 2) GO TO 640 @^@@@@ LT=LDAT-NVALS*2 +1@^@@@@ DO 690ZE )@@G@@ I=1,NVALS @#@@@@ TEMP=SCR(LT)@#@@@@ LT=LT+2 @B@@@@ ZF )@@G@@IF(TEMP .EQ. 'ERROR') GO TO 690 @#@@@@ LOW=I+1 @A@@@@ ZG )@@G@@IF(LOW .GE. NVALS) GO TO 690 @]@@@@ LTT=LT@^@@@@ DO 685 J=LOWZH )@@G@@,NVALS@B@@@@ IF(TEMP .NE. SCR(LTT)) GO TO 685 @#@@@@ CALL EZI )@@G@@RROR @#@@@@ PRINT 9685 @G@@@@ 9685 FORMAT(' ***** PICT1 ERROR. TZJ )@@G@@HE SAME VALUE IS USED MORE THAN ONCE@A@@@@ - IN A GROUPS SPECIFICATIZK )@@G@@ON') @#@@@@ GO TO 640 @#@@@@ 685 LTT=LTT+2 @#@@@@ 690 CONTINZL )@@G@@UE @#@@@@ GO TO 640 @[@@@@C @ @@@@C INTEGER VAZM )@@G@@LUE @[@@@@C @#@@@@ 700 VAL='ERROR' @A@@@@ IF(VTYP .EQ. 0) GOZN )@@G@@ TO 670 @A@@@@ IF(VTYP .EQ. 1) GO TO 710 @#@@@@ TNEX=NZO )@@G@@EX(1) @ @@@@ ENCODE(NEX,702) TNEX @#@@@@ 702 FORMAT(I12) @]@@@@ZP )@@G@@ JS=0 @^@@@@ TEMP=' ' @^@@@@ DO 705 J=1,12 ZQ )@@G@@@ @@@@ CALL S1PRFT(NEX,J,CHAR) @A@@@@ IF(CHAR .EQ. ' ') GO TO ZR )@@G@@705 @#@@@@ JS=JS+1 @ @@@@ IF(JS .GT. 6) GO TO 708 @A@@@@ZS )@@G@@ CALL S1PRST(TEMP,JS,CHAR) @#@@@@ 705 CONTINUE @#@@@@ ZT )@@G@@VAL=TEMP @#@@@@ GO TO 670 @#@@@@ 708 CALL ERROR @^@@@@ ZU )@@G@@PRINT 9708,TNEX @G@@@@ 9708 FORMAT(' ***** PICT1 ERROR. VALUE ',I12,'ZV )@@G@@ USED WITH GROUPS HAS MO@ @@@@ -RE THAN 6 CHARACTERS') @#@@@@ ZW )@@G@@GO TO 670 @#@@@@ 710 RVAL=NEX(1) @#@@@@ GO TO 670 @[@@@@C ZX )@@G@@@A@@@@C FLOATING POINT VALUE @[@@@@C @#@@@@ 720 VAL=NEZY )@@G@@X(1) @D@@@@ IF(NUMERR .NE. 0 .OR. VTYP .NE. 2) GO TO 670 @#@@@@ZZ )@@G@@ CALL ERROR @^@@@@ PRINT 9725,VI @G@@@@ 9725 FORMAT(' ***AA )@@G@@** PICT1 ERROR. GROUPS VARIABLE',I4,' IS ALPHANUMERIC@G@@@@ - BUT AAB )@@G@@ VALUE SPECIFIED FOR IT IS NUMERIC WITH A DECIMAL POINT') @#@@@@ AC )@@G@@NUMERR=1 @#@@@@ GO TO 670 @[@@@@C @A@@@@C ALPHAD )@@G@@ANUMERIC VALUE @[@@@@C @#@@@@ 740 VAL=NEX(1) @A@@@@ IF(VALAE )@@G@@ .EQ. 'OTHER') GO TO 780@F@@@@ IF(VAL .EQ. 'MISSIN' .AND. NEX(2) AF )@@G@@.EQ. 'G') GO TO 790 @D@@@@ IF(ALPERR .NE. 0 .OR. VTYP .NE. 1)AG )@@G@@ GO TO 750 @#@@@@ CALL ERROR @^@@@@ PRINT 9745,VI @G@@@@AH )@@G@@ 9745 FORMAT(' ***** PICT1 ERROR. GROUPS VARIABLE',I4,' IS NUMERIC BUT AI )@@G@@@C@@@@ -A VALUE SPECIFIED FOR IT IS ALPHANUMERIC')@#@@@@ ALPERRAJ )@@G@@=1 @#@@@@ GO TO 670 @A@@[@ 750 IF(ALPSIZ .NE. 0) GO TO 755 AK )@@G@@@B@@[@ IF(NEX(2) .EQ. ' ') GO TO 755 @#]@@@ CALL ERROR AL )@@G@@@#@@@@ PRINT 9755 @G@@@@ 9755 FORMAT(' ***** PICT1 ERROR. ONE OR AM )@@G@@MORE VALUES USED WITH GROUPS H@A@@@@ -AS MORE THE SIX CHARACTERS') AN )@@G@@@#@@@@ ALPSIZ=1 @B@@[@ 755 IF(VAL .EQ. ' ') GO TO 790 AO )@@G@@@#@@@@ GO TO 670 @[@@@@C @^@@@@C SLASH @[@@@@AP )@@G@@C @A@@@@ 760 IF(NVALS .EQ. 0) GO TO 675 @#@@@@ NGRP=NGRP+1 AQ )@@G@@@#@@@@ GO TO 675 @[@@@@C @^@@@@C OTHER @[@@@@AR )@@G@@C @A@@@@ 780 IF(OTHER .EQ. 0) GO TO 785 @#@@@@ CALL ERROR AS )@@G@@@#@@@@ PRINT 9785 @G@@@@ 9785 FORMAT(' ***** PICT1 ERROR. OTHER OAT )@@G@@R MISSING IS SPECIFIED MORE TH@ @@@@ -AN ONCE WITH GROUPS') @#@@@@AU )@@G@@ 785 OTHER=NGRP @#@@@@ GO TO 675 @[@@@@C @^@@@@C AV )@@G@@ MISSING @[@@@@C @A@@@@ 790 IF(MISSNG .EQ. 0) GO TO 795 @#@@@@AW )@@G@@ CALL ERROR @#@@@@ PRINT 9785 @#@@@@ 795 MISSNG=NGRP @#@@@@AX )@@G@@ GO TO 675 @[@@@@C @B@@@@C UPDATE STORAGE SIZE VAAY )@@G@@LUES @[@@@@C @#@@@@ 800 NV=NVARS @^@@@@ NP=(NV*(NV-1))/2 AZ )@@G@@@ @@@@ IF(NV .NE. 0) GO TO 820 @^@@@@ NV=NHVARS+NVVARS @^@@@@BA )@@G@@ NP=NHVARS*NVVARS @#@@[@ 820 NV=NV+NGROUP@E@@[@ IF(LISTMD .EBB )@@G@@Q. 0 .AND. LISTOF .EQ. 0) GO TO 825 @D@@[@ IF(LABELV .NE. 0 BC )@@G@@.OR. IDVAR .NE. 0) NV=NV+1 @#@@[@ 825 NP=NP*NGROUP@B@@[@ IF(NV BD )@@G@@.GT. X(IBV+1)) X(IBV+1)=NV @B[@@@ IF(NP .GT. X(IBV+2)) X(IBV+2)=BE )@@G@@NP @^@@[@ HS=(HSIZE*10+10)/6@^@@[@ VS=VSIZE*6 + 4 @#@@[@BF )@@G@@ NP=HS*VS @B#@@@ IF(NP .GT. X(IBV+3)) X(IBV+3)=NP @B@@@@BG )@@G@@ IF(VS .GT. X(IBV+4)) X(IBV+4)=VS @C@@[@ IF(ALLTOT .GT. X(IBH )@@G@@BV+5)) X(IBV+5)=ALLTOT @^@@[@ LDAT=LDAT-700 @B@@[@ IF(LDABI )@@G@@T .GT. X(IBV+6)) X(IBV+6)=LDAT@[@@@@C @B@@@@C OUTPUT SPEBJ )@@G@@CS IF NO ERRORS @[@@@@C @ @@@@ 850 IF(NERR .NE. 0) RETURN @BA@@@BK )@@G@@ CALL S1IODR(1,'WRITE',1,CN,DUM) @B@@@@ CALL S1IODR(1,'WRIBL )@@G@@TE',20,SPECS,DUM) @A@@@@ IF(NVARS .EQ. 0) GO TO 860 @C@@@@ BM )@@G@@CALL S1IODR(1,'WRITE',NVARS,SCR(2),DUM) @#@@@@ GO TO 870 @C@@@@BN )@@G@@ 860 CALL S1IODR(1,'WRITE',NHVARS,SCR(202),DUM)@C@@@@ CALL S1IODR(BO )@@G@@1,'WRITE',NVVARS,SCR(402),DUM)@ @@@@ 870 IF(NGROUP .EQ. 0) RETURN@D@@@@BP )@@G@@ CALL S1IODR(1,'WRITE',5*NGROUP,SCR(600),DUM) @B]@@@ CALL SBQ )@@G@@1IODR(1,'WRITE',1,LDAT,DUM) @ @@@@ IF(LDAT .EQ. 0) RETURN @C@@@@BR )@@G@@ CALL S1IODR(1,'WRITE',LDAT,SCR(700),DUM) @]@@@@ RETURN@[@@@@BS )@@G@@C @[@@@@C @C@@@@C LOCAL SUBROUTINE FOR ERROR HANDLING BT )@@G@@@[@@@@C @^@@@@ SUBROUTINE ERROR @^@@@@ CALL S1PCHD(1) BU )@@G@@@#@@@@ NERR=NERR+1 @]@@@@ RETURN@[@@@@C @[@@@@C @F@@@@BV )@@G@@C LOCAL SUBROUTINE TO CHECK FOR ALPHANUMERIC VARIABLES @[@@@@BW )@@G@@C @B@@@@ SUBROUTINE TSTALP(TYPE,NIN,LIST) @ @@@@ DIMENSBX )@@G@@ION LIST(NIN) @^@@@@ DO 1100 I=1,NIN @A@@@@ CALL S1VLST(BY )@@G@@TYPE,LIST(I),1,NE)@ @@@@ IF(NE .EQ. 0) GO TO 1100@#@@@@ NERR=NBZ )@@G@@ERR+NE@]@@@@ RETURN@#@@@@ 1100 CONTINUE @]@@@@ RETURN@[@@@@CA )@@G@@C @[@@@@C @D@@@@C LOCAL SUBROUTINE TO LOAD INTEGER OR FP CB )@@G@@VALUE @[@@@@C @A@@@@ SUBROUTINE LOAD3(TSPEC,VALUE) @^@@@@ CC )@@G@@DIMENSION TSPEC(2)@#@@@@ REAL VALUE @A@@@@ IF(TSPEC(1) .EQ. 2CD )@@G@@) GO TO 1800@^@@@@ VALUE=TSPEC(2) @]@@@@ RETURN@ @@@@ 1800 CE )@@G@@VALUE=BOOL(TSPEC(2)) @]@@@@ RETURN@[@@@@C @[@@@@C @C@@@@CF )@@G@@C LOCAL SUBROUTINE TO PROCESS SCALE SPECS@[@@@@C @D@@@@ CG )@@G@@SUBROUTINE PSCALE(HORV,SPECS,SCAL,SMIN,SMAX) @^@@@@ DIMENSION SPCH )@@G@@ECS(1)@^@@@@ REAL SMIN,SMAX @^@@@@ SCAL=SPECS(1) @ @@@@CI )@@G@@ IF(SCAL .EQ. 0) RETURN @A@@@@ CALL LOAD3(SPECS(2),SMIN) CJ )@@G@@@A@@@@ IF(SCAL .GT. 1) GO TO 2300 @D@@@@ IF(SMIN .GT. 0 .ACK )@@G@@ND. SMIN .LT. 10.) RETURN @#@@@@ CALL ERROR @^@@@@ PRINT CL )@@G@@2250,HORV @G@@@@ 2250 FORMAT(' ***** PICT1 ERROR. NUMBER OF STANDARD CM )@@G@@DEVIATIONS SPECIFI@D@@@@ -ED WITH ',A1,'SCALE MUST BE BETWEEN 0 AND CN )@@G@@10') @]@@@@ RETURN@A@@@@ 2300 CALL LOAD3(SPECS(4),SMAX) @A@@@@CO )@@G@@ IF(SMIN .NE. SMAX) RETURN @#@@@@ CALL ERROR @^@@@@ CP )@@G@@PRINT 2450,HORV @G@@@@ 2450 FORMAT(' ***** PICT1 ERROR. MINIMUM SCALECQ )@@G@@ VALUE SPECIFIED WITH ',@D@@@@ - A1,'SCALE IS EQUAL TO THE MAXIMUMCR )@@G@@ VALUE') @]@@@@ RETURN@[@@@@C @[@@@@C @E@@@@C LOCCS )@@G@@AL SUBROUTINE TO GET NEXT MODIFIER OF GROUPS @[@@@@C @A@@@@ CT )@@G@@SUBROUTINE NEXT(TYP,FIELD) @^@@@@ DIMENSION FIELD(2)@#@@@@ CU )@@G@@TYP=SCR(L) @]@@@@ L=L+1 @^@@@@ FIELD(1)=SCR(L) @^@@@@ CV )@@G@@FIELD(2)=SCR(L+1) @^@@@@ NMODIF=NMODIF-1 @C@@@@ IF(TYP .LE. CW )@@G@@0 .OR. TYP .GT. 5) RETURN @B@@@@ GO TO (2900,2900,2850,2850,295CX )@@G@@0),TYP@]@@@@ 2850 L=L+1 @]@@@@ 2900 L=L+1 @]@@@@ 2950 RETURN@]@@@@ CY )@@G@@END ___TO 870 @C@@@@*[S@@@*SDFF*@^@@@@ SUBROUTINE S18CCP @ @@@@CZ )@@G@@ IMPLICIT INTEGER (A-Z) @A@@@@ DIMENSION TABLE(13,8), D(9) DA )@@G@@@B@@@@CMAXST WILL BE SET TO 150K-10K-ANAL PHASE @ @@@@ DATA MAXSTDB )@@G@@/100000/ @#@@@@ COMMON IX(2)@^@@@@ INCLUDE CCI,LIST @B@@@@DC )@@G@@ DATA((TABLE(I,J),I=1,13),J=1,8)/ @C@@@@ 112HINPUT ,1,DD )@@G@@0,0,-1,0,0, 1,0,0,1, 0, @C@@@@ 212HI/FORMAT ,2,0,0,-1,0,0, 2,3,0,DE )@@G@@0,-2, @C@@@@ 312HINCHECKS ,3,0,0, 0,0,0, 3,0,0,0, 0, @C@@@@ 4DF )@@G@@12HVNAMES ,4,0,0, 0,0,0, 4,0,0,0, 0, @C@@@@ 512HTRANSFRM ,5,DG )@@G@@0,0, 0,0,0, 5,0,0,0,-1, @C@@@@ 612HTITLE ,6,0,0, 0,0,0, 6,5,0,DH )@@G@@0, 0, @C@@@@ 712HWEIGHT ,7,0,0, 0,0,0,30,0,0,0, 0, @C@@@@ 8DI )@@G@@12HOUTPUT ,8,1,0, 0,0,2,38,0,0,0, 0/ @A@@@@ CALL S1CCFS(TABLEDJ )@@G@@,8,INFOR,0) @#@@@@ NCERR=0 @#@@@@ IVARS=NVARS @A@@@@ DK )@@G@@IF(NTVARS.NE.0) IVARS=NTVARS @]@@@@ NOBS=0@C@@@@ CALL S1GTAG(DL )@@G@@'NOBS', LNOBS, NWE, NEL, $60) @^@@@@ NOBS = IX(LNOBS) @D@@@@ DM )@@G@@IF( NWE .EQ. 2) NOBS = IX(LNOBS+1) - NOBS + 1 @#@@@@2 NOUTS=0 DN )@@G@@@C@@@@ CALL S1GTAG('NOUTS',NOUTS,DUM,DUM,$4) @#@@@@ NOUTS=DO )@@G@@1 @#@@@@ GO TO 25 @[@@@@C @B@@@@C SET UP DEFAULT VALUESDP )@@G@@ - NO OUTPUT CARD @[@@@@C @#@@@@4 CONTINUE @C@@@@ CALL SDQ )@@G@@1GTAG('TEMP',LLOW,NWE,LLIM,$999) @B@@@@ CALL S1STFT('IXTRA',LXTRDR )@@G@@A,1,1,$999) @B@@@@ CALL S1STFT('NOUTS',LNOUTS,1,1,$999)@B@@@@ DS )@@G@@CALL S1STFT('MAX2',LMAX2,1,1,$999) @B@@@@ CALL S1STFT('MAX3',LMAX3DT )@@G@@,1,1,$999) @#@@@@ LBUF=LLOW @#@@@@ LBF2=LBUF+12@ @@@@ DU )@@G@@IF(LLIM.LT.13)GO TO 999 @#@@@@ IX(LBUF)=0 @#@@@@ DO 5 I=1,12 DV )@@G@@@#@@@@ IX(LBUF+I)=0@#@@@@5 CONTINUE @#@@@@ IWEIT=0 DW )@@G@@@#@@@@ ALPHA=0 @]@@@@ NUMH=0@B@@@@ CALL S1GVAL('WEIGHDX )@@G@@T',IWEIT,$10,$10) @B@@@@ CALL S1VLST('DUMMYCW',IWEIT,0,NERR1)@^@@@@DY )@@G@@ NERR=NERR+NERR1 @^@@@@10 IX(LBUF+3)=IWEIT @#@@@@ K=NVARDZ )@@G@@S @#@@@@ IX(LBUF+4)=K@A@@@@ IF(IWEIT.NE.0)IX(LBUF+4)=K-1 EA )@@G@@@C@@@@ IF(LLIM.LT.IX(LBUF+4)*2+4+13)GO TO 999 @]@@@@ M=0 EB )@@G@@@#@@@@ DO 20 L=1,K @A@@@@ IF(IX(LBUF+3).EQ.L)GO TO 19 @^@@@@EC )@@G@@ IX(LBF2+L+M)=L @^@@@@ CALL S1CKVI(L,$20)@B@@@@ CALL SED )@@G@@1GTVT(L,IX(LBF2+L+K+M),$20) @A@@@@ IF(IX(LBF2+L+K+M).NE.1)ALPHA=1EE )@@G@@@A@@@@ IF(IX(LBF2+L+K+M).EQ.1)NUMH=1 @B@@@@ CALL S1VLST('DUMMYEF )@@G@@CW',L,0,NERR1) @^@@@@ NERR=NERR+NERR1 @#@@@@ GO TO 20 EG )@@G@@@]@@@@19 M=-1 @#@@@@20 CONTINUE @ @@@@ KDFLT=MIN(NOBS,100EH )@@G@@) @]@@@@ MXIF=0@]@@@@ MXVL=0@^@@@@ LEN2=IX(LBUF+4)*2 EI )@@G@@@ @@@@ IF(ALPHA.EQ.0)GO TO 22 @^@@@@ IX(LBF2+LEN2+1)=4 @^@@@@EJ )@@G@@ IX(LBF2+LEN2+2)=1 @^@@@@ IX(LBF2+LEN2+3)=0 @ @@@@ IX(LBFEK )@@G@@2+LEN2+4)=KDFLT @#@@@@ IX(LBUF+9)=4@#@@@@ LEN2=LEN2+4 @^@@@@EL )@@G@@22 IX(LBUF+10 )=1 @^@@@@ IX(LMAX2)=LEN2 @^@@@@ IX(LBUEM )@@G@@F+12)=LEN2 @#@@@@ IX(LXTRA)=0 @ @@@@ IF(NUMH.EQ.1)IX(LXTRA)=1EN )@@G@@@#@@@@ IX(LNOUTS)=0@#@@@@ MAX2=LEN2 @]@@@@ LEN3=1@#@@@@EO )@@G@@ IX(LMAX3)=0 @B@@@@ CALL S1IODR(4,'REWIND',DUM,DUM,DUM) @C@@@@EP )@@G@@ CALL S1IODR(4,'WRITE',13,IX(LBUF),DUM) @C@@@@ CALL S1IODR(EQ )@@G@@4,'WRITE',LEN2,IX(LBF2+1),DUM)@ @@@@ IF(ALPHA.NE.1)GO TO 24 @#@@@@ER )@@G@@ MXIF=KDFLT @#@@@@ MXVL=KDFLT @]@@@@ LEN3=6@#@@@@ ES )@@G@@MAX3=LEN3 @^@@@@ IX(LMAX3)=MAX3 @#@@@@ IX(LBUF)=6 @#@@@@ET )@@G@@ IX(LBUF+1)=5@ @@@@ IX(LBUF+2)='DEFAUL' @ @@@@ IX(LBUEU )@@G@@F+3)='T: ALP' @ @@@@ IX(LBUF+4)='HAHIST' @ @@@@ IX(LBUEV )@@G@@F+5)='(F) ' @#@@@@24 CONTINUE @B@@@@ CALL S1IODR(4,'WRIEW )@@G@@TE',1,LEN3,DUM) @ @@@@ IF(LEN3.LE.1)GO TO 25 @C@@@@ CALL SEX )@@G@@1IODR(4,'WRITE',MAX3,IX(LBUF),DUM) @#@@@@25 CONTINUE @ @@@@ EY )@@G@@CALL S1VLSC(3,MXVARS) @ @@@@ IF(MXVARS.EQ.0)GO TO 90 @B@@@@ EZ )@@G@@CALL S1GVAL('IXTRA',IXTRA,$90,$90) @#@@[@ NEEDW=1 @C@@[@C FA )@@G@@ ALWAYS NEED AT LEAST ONE WEIT ARRAY @##@@@ MV=MXVARS @#@@@@FB )@@G@@ MX=IXTRA @B@@[@C TAKE OUT FOR ONE WEIT ARRAY @ [@@@FC )@@G@@ IAVAIL=MAXST-NOBS*NEEDW @#@@@@ IRECS=0 @F@@@@C IFD )@@G@@ MUST BE THE SMALLEST POSITIVE MULTIPLE OF 28>=NOBS @#@@@@ I=NOBSFE )@@G@@/28 @]@@@@ I=I*28@ @@@@ IF(NOBS-I.GT.0)I=I+28 @C@@@@C FF )@@G@@ AT LEAST ONE OBSERVATION MUST FIT @ @@@@ IF(I.GT.IAVAIL)GO FG )@@G@@TO 200@^@@@@C IS IXTRA=2 @ @@@@ IF(IXTRA.NE.2)GO TO 30 FH )@@G@@@D@@@@C YES, TRY FOR INEED=I*(MXVARS+2) NEEDW=2 @#@@@@ FI )@@G@@NEEDW=2 @C@@@@ IF(I*(MXVARS+2)+NOBS.LE.IAVAIL)GO TO 40 @C@@@@FJ )@@G@@C TRY FOR INEED=I*(MXVARS+1) NEEDW=1 @#@@@@ NEEDW=1 FK )@@G@@@]@@@@ MX=1 @B@@@@ IF(I*(MXVARS+1).LE.IAVAIL)GO TO 40 @B@@@@FL )@@G@@C TRY FOR INEED=I*(1+1) NEEDW=2 @B@@@@C WILL NEED TO FM )@@G@@STORE ON DRUM @#@@@@ IRECS=1 @#@@@@ NEEDW=2 @]@@@@FN )@@G@@ MV=1 @A@@@@ IF(I*2+NOBS.LE.IAVAIL)GO TO 40@A@@@@C TFO )@@G@@HEN INEED=I*1 NEEDW=1 @]@@@@ MX=0 @#@@@@ NEEDW=1 @#@@@@FP )@@G@@ GO TO 40 @E@@@@C GET HERE ONLY WHEN IXTRA=0,1 (ALPHA,NFQ )@@G@@UMERIC) @D@@[@C TRY FOR INEED=I*(MXVARS+IXTRA) NEEDW=1 FR )@@G@@@C[@@@30 IF(I*(MXVARS+IXTRA).LE.IAVAIL)GO TO 40 @A@@[@C TFS )@@G@@HEN INEED=I*1 NEEDW=1 @B[@@@C WILL NEED TO STORE ON DRUM FT )@@G@@@#@@@@ IRECS=1 @]@@@@ MV=1 @]@@@@ MX=0 @^@@@@40 FU )@@G@@INEED=I*(MV+MX) @#@@@@ IXTRA=MX @]@@@@ IXT=0 @ @@@@ FV )@@G@@IF(IRECS.EQ.0)IXT=IXTRA @B@@@@ IF(28*(MXVARS+IXT).LE.INEED)GO TO 55FW )@@G@@@C@@@@ IF(28*(MXVARS+IXT).GT.IAVAIL)GO TO 200 @ @@@@ INEED=FX )@@G@@28*(MXVARS+IXT) @#@@@@55 CONTINUE @B@@@@ CALL S1GTAG('IXTRAFY )@@G@@',LXTRA,1,1,$999) @^@@@@ IX(LXTRA)=IXTRA @B@@@@ CALL S1STFT(FZ )@@G@@'IRECS',LRECS,1,1,$999) @^@@@@ IX(LRECS)=IRECS @#@@@@ IAVAILGA )@@G@@=INEED@#@@@@ GO TO 80 @C@@@@60 CALL S1GTAG('STJBIN',LSTJB,DUMGB )@@G@@,DUM,$70) @^@@@@ NOBS=IX(LSTJB) @#@@@@ GO TO 2 @#@@@@GC )@@G@@70 CONTINUE @ @@@@ NCCERR = NCCERR + 1 @^@@@@ CALL SGD )@@G@@1PCHD(2) @#@@@@ PRINT 9901 @G@@@@9901 FORMAT('0***** UNISTAT2 GE )@@G@@ERROR. CONTROL WORD NOBS MUST BE PUNCHED O@ @@@@ *N THE INPUT CARD.'GF )@@G@@) @#@@@@80 CONTINUE @ @@@@ IF(NOUTS.EQ.0)GO TO 90 @]@@@@GG )@@G@@ MAX2=0@B@@@@ CALL S1GVAL('MAX2',MAX2,$90,$90) @]@@@@ GH )@@G@@MAX3=0@B@@@@ CALL S1GVAL('MAX3',MAX3,$90,$90) @B@@@@ CALL SGI )@@G@@1GVAL('MXIF',MXIF,$90,$90) @B@@@@ CALL S1GVAL('MXVL',MXVL,$90,$9GJ )@@G@@0) @#@@@@90 CONTINUE @#@@@@ D(1)=IVARS @#@@@@ D(2)=MGK )@@G@@XVARS @^@@@@ D(3)=NOBS*NEEDW @#@@@@ D(4)=13 @#@@@@ GL )@@G@@D(5)=MAX2 @#@@@@ D(6)=MAX3 @#@@@@ D(7)=IAVAIL @#@@@@ GM )@@G@@D(8)=MXIF @#@@@@ D(9)=MXVL @B@@@@ CALL S1STFT('IAVAIL',LIAGN )@@G@@V,1,1,$999) @^@@@@ IX(LIAV)=IAVAIL @B@@@@ CALL S1STFT('MXVARGO )@@G@@S',LMV,1,1,$999) @^@@@@ IX(LMV)=MXVARS @^@@@@ CALL S1STOR(GP )@@G@@9,D) @B@@@@ CALL S1IODR(4,'REWIND',DUM,DUM) @]@@@@ RETURNGQ )@@G@@@^@@@@200 CALL S1PCHD(2) @#@@@@ PRINT 9902@G@@@@9902 FORMATGR )@@G@@('0***** UNISTAT2 ERROR. NUMBER OF OBSERVATIONS TOO LARGE.'@D@@@@ *GS )@@G@@/7X,'PROGRAM CANNOT BE RUN WITH THIS DATA SET.')@^@@@@ NCCERR=NCCGT )@@G@@ERR+1 @#@@@@ GO TO 80 @ @@@@999 CALL S1SERR('S18CCP') @]@@@@GU )@@G@@ RETURN@]@@@@ END ___ TRY FOR INEED*[S@@@*SDFF*@C@@@@ GV )@@G@@SUBROUTINE S1CCFS(TABLE,NTYPE,INFOR,SPCCP)@ @@@@ IMPLICIT INTEGER(AGW )@@G@@-Z) @^@@@@ INCLUDE CCI,LIST @F@@@@ COMMON/S1CNTL/DEMAND,PGX )@@G@@APERS,LINENO,PAGLEN,CCLIST,RECLST @A@@@@ DIMENSION TABLE(13,NTYPEGY )@@G@@) @[@@@@C @ @@@@ DIMENSION OCCUR(25) @[@@@@C @^@@@@GZ )@@G@@ DIMENSION ERR(15) @#@@@@ LOGICAL ERR @[@@@@C @^@@@@ HA )@@G@@DIMENSION ME(14) @G@@@@ DATA (ME(I),I=1,14)/1,2,3,4,5,6,7,8,9,10,1HB )@@G@@1,12,13,14/M1/15/M2/16/ @B@@@@ 1M3/17/M4/18/M5/19/M6/20/M7/21/M8/22/HC )@@G@@@[@@@@C @^@@@@ DIMENSION CARD(14)@B@@@@ COMMON/S1BANK/STHD )@@G@@JBAN,CARD,ITYPE @[@@@@C @^@@@@ LOGICAL CERR @^@@@@ HE )@@G@@LOGICAL COMMA @^@@@@ LOGICAL NOPROC @ @@@@ LOGICAL PLUSHF )@@G@@, LPLUS @[@@@@C @^@@@@ DIMENSION NEWID(2)@[@@@@C @^@@@@HG )@@G@@ COMMON STOR(2000) @[@@@@C @ @@@@ DIMENSION CCSPEC(13) HH )@@G@@@ @@@@ DIMENSION LASTID(2) @B@@@@ EQUIVALENCE (LASTID(1),HI )@@G@@CCSPEC(1)) @A@@@@ EQUIVALENCE (ORDER,CCSPEC(3))@A@@@@ EQUIVAHJ )@@G@@LENCE (MULTC,CCSPEC(4))@B@@@@ EQUIVALENCE (MASTER,CCSPEC(5)) HK )@@G@@@A@@@@ EQUIVALENCE (USE,CCSPEC(6)) @B@@@@ EQUIVALENCE (PREDHL )@@G@@IC,CCSPEC(7)) @A@@@@ EQUIVALENCE (PRINT,CCSPEC(8))@ @@@@ HM )@@G@@LOGICAL MULTC,STJBAN @[@@@@C @^@@@@C****************** @[@@@@HN )@@G@@C @G@@@@C THIS ROUTINE HANDLES THE FIRST SIXTEEN COLUMNS OF COHO )@@G@@NTROL CARDS,@G@@@@C DOING SEQUENCE CHECKING, RUNID CHECKING, AND CHP )@@G@@ALLS S1CCPD TO @G@@@@C CALL PROCESSORS FOR EACH TYPE OF CONTROLHQ )@@G@@ CARD. THIS ROUTINE IS @^@@@@C TABLE DRIVEN @[@@@@C @^@@@@HR )@@G@@C****************** @G@@@@C S1CCFS SYMBOL USAGE SUMMARY ALHS )@@G@@L VAIABLES ARE INTEGERS UNLESS@B@@@@C OTHERWISE SPECIFIHT )@@G@@ED. @^@@@@C****************** @[@@@@C @F@@@@C CARD HU )@@G@@ DIMENSIONED (14), IMAGE NOW BEING LOOKED AT. @G@@@@C CCI HV )@@G@@ FORTRAN PROC WHICH CONTAINS INFORMATION ON COMMON @ @@@@C HW )@@G@@ BLOCK S1CCI@C@@@@C CCLIST =1 IF CONTROL CARDS ARE TO BE LISTED HX )@@G@@@E@@@@C CCNA FIRST NUMBER OF THE CONTROL CARD OR ZERO @G@@@@HY )@@G@@C CCNB SECOND NUMBER OF THE CONTROL CARD OR -1 IF ERROR HZ )@@G@@@B@@@@C OR 0 IF NOT PRESENT. @G@@@@C CCNUM IA )@@G@@ CONTROL CARD NUMBER IF SUCH NUMBERING IS APPLICABLE @B@@@@C IB )@@G@@ AS IN MODEL CARDS. @G@@@@C CCSPEC DIMENSIONED (13),IC )@@G@@ THE SPECIFICATIONS FROM TABLE FOR @E@@@@C CONTROL CARID )@@G@@D NOW BEING PROCESSED. EQUIV. @D@@@@C CCSPEC (1) = LIE )@@G@@ASTID (1) - NAME @D@@@@C CCSPEC (2) = LASTID (2) - IF )@@G@@NAME @G@@@@C CCSPEC (3) = ORDER - NUMBER SPECIFYINGIG )@@G@@ ORDER THAT @G@@@@C CARDS MUST APPEAR IN.CARD CANIH )@@G@@NOT PRECEED CARD @C@@@@C WITH LOWER NUMBER. II )@@G@@@G@@@@C CCSPEC (4) = MULTC, =1 IF MULTIPLE CARDS OF IJ )@@G@@THIS @E@@@@C TYPE, =0 IF ONLY ONE SET ALLOWED. IK )@@G@@@G@@@@C CCSPEC (5) = MASTER, =N IF THIS CARD HAS SECIL )@@G@@ONDARY@G@@@@C CARDS WHICH ARE THE NEXT CARD THROUIM )@@G@@GH CARD N IN@D@@@@C TABLE. =0 IF NOT MUSTER OF IN )@@G@@@G@@@@C TABLE. =0 IF NOT MASTER OR SECONDARY, =K,IO )@@G@@ IF @G@@@@C SECONDARY CARD. MASTER IS IN POSITIIP )@@G@@ON K OF @A@@@@C THE TABLE. @B@@@@C IQ )@@G@@ CCSPEC (6) = USE @C@@@@C = -1, CARD IR )@@G@@REQUIRED @B@@@@C =0, CARD OPTIONAL@G@@@@C IS )@@G@@ > CARD CONDITIONED ON CARD SPECIFIED IN PREDIC @G@@@@IT )@@G@@C =1 CARD MAY BE USED ONLY IF PREDIC IS USED IU )@@G@@@G@@@@C =2 CARD MAY BE USED ONLY IF PREDIC IS NOTIV )@@G@@ USED.@F@@@@C =3 CARD MUST BE USED IF PREDIC IS UIW )@@G@@SED @F@@@@C =4 CARD MUST BE USED IF PREDK IS NOIX )@@G@@T USED@G@@@@C =5 CARD MUST BE USED IF PREDIC IS NIY )@@G@@OT USED. @B@@@@C CCSPEC (7) = PREDIC @G@@@@C IZ )@@G@@ AN INTEGER >0 POINTER TO ANOTHER CARD IN THE @E@@@@JA )@@G@@C TABLE IS >0, IGNORED OTHERWISE @G@@@@C JB )@@G@@ CCSPEC (8) = PRINT, =0 IF NO SPECIAL SKIP, =1 IF @G@@@@JC )@@G@@C SPECIAL SKIP, =2 IF SPECIAL SKIP ONLY FIRST JD )@@G@@@B@@@@C TIME CARD PRINTED@G@@@@C JE )@@G@@ CCSPEC (9) IS PROSSOR NUMBER TO BE USED FOR THE @ @@@@C JF )@@G@@ CARD @G@@@@C CCSPEC (10 TO 12) IS SPECIJG )@@G@@AL INFORMATION TO BE @E@@@@C USED BY THE PROCEJH )@@G@@SSOR OF THE CARD. @F@@@@C CCSPEC (13) IS WHETHER A TJI )@@G@@ERMINAL PROCESSOR @G@@@@C EXISTS FOR THIS CARD. =JJ )@@G@@0 NONE, = POSITIVE, @G@@@@C CALL ALWAYS, = NEJK )@@G@@GATIVE, CALL ONLY IF THE CARD @A@@@@C IS FOUND JL )@@G@@@G@@@@C CERR LOGICAL, TRUE IF ERROR IN READING CARD FROM S1RJM )@@G@@EAD. @G@@@@C CH TEMPORARY VARIABLE FOR MOVING DATA SET LAJN )@@G@@BEL INTO @ @@@@C 'DSL'. @F@@@@C CHAR JO )@@G@@ TEMPORARY VARIABLE TO HOLD RETRIEVED CHARACTER.@G@@@@C COMMA JP )@@G@@ LOGICAL, TRUE IF COMMA OCCURRED IN THE SEQUENCE FIELD@G@@@@C COP JQ )@@G@@ IN COMMON BLOCK S1CCI - =1 IF COP ON INPUT CARD , @A@@@@C JR )@@G@@ =0 OTHERWISE. @G@@@@C DEMAND IN COMMON BLOCK SJS )@@G@@1CNTL, =4 IF DEMAND, =6 IF BATCH. @F@@@@C EPA POINTER TO JT )@@G@@MASTER CARD FOR THIS SECONDARY CARD.@F@@@@C EPB POINTER TO JU )@@G@@MASTER CARD THAT PREVIOUSLY OCCURED.@G@@@@C EPC POINTER TO JV )@@G@@CARD THAT THIS CARD IS USED WITH (OR MAY @B@@@@C NOT BJW )@@G@@E USED WITH, ETC).@F@@@@C ERR LOGICAL, DIMENSIONED (15), IFJX )@@G@@ TRUE, THAT ERROR @ @@@@C OCCURED @D@@@@C JY )@@G@@ ERR (1) = * MISSING FROM 16 @F@@@@C ERJZ )@@G@@R (2) = RUN ID DIFFERS FROM PREVIOUS CARD @D@@@@C ERKA )@@G@@R (3) = ILLEGAL SYMBOL IN 6-15@E@@@@C ERR (4) = ILLEKB )@@G@@GAL CONTROL CARD TYPE @F@@@@C ERR (5) = CAR TYPE PKC )@@G@@REVIOUSLY PROCESSED @F@@@@C ERR (6) = CARD TYPE KD )@@G@@PREVIOUSLY PROCESSED @E@@@@C ERR (7) = INVALID COKE )@@G@@NTINUATION NUMBER @E@@@@C ERR (8) = CONTROL CARD NUMKF )@@G@@BER ERROR @F@@@@C ERR (9) = INCORRECT CONTINUATIONKG )@@G@@ NUMBER @G@@@@C ERR (10) = CARD TYPE ALREADY PROKH )@@G@@CESSED SINCE LAST @A@@@@C --- CARD. @F@@@@C KI )@@G@@ ERR (11) = CARD TYPE MUST FOLLOW --- CARD @F@@@@C KJ )@@G@@ ERR (12) = CONTROL CARD NUMBER DOESNOT MATCH@C@@@@C KK )@@G@@ THAT ON LAST --- CARD @G@@@@C ERKL )@@G@@R (13) = CARD TYPE MAY BE USED ONLY IF --- CARD @B@@@@C KM )@@G@@ IS PREVIOUSLY USED. @G@@@@C ERR (14) = CARD TYPEKN )@@G@@ MAY BE USED ONLY IF --- CARD @C@@@@C IS NOT PREVIOUKO )@@G@@SLY USED. @E@@@@C ERRA ERROR COUNTER FOR INCREMENTING NCCEKP )@@G@@RR. @F@@@@C FW FIRST WORD OF TAG BEING CREATED OR RETRIEKQ )@@G@@VED. @B@@@@C I TEMPORARY VARIABLE. @G@@@@C INFOKR )@@G@@R FORMAL PARAMETER, CONTAINS ADDITIONAL INFORMATION FOR@F@@@@C KS )@@G@@ INPUT CARD PROCESSOR, CONSISTING OF ADDITIONAL @E@@@@C KT )@@G@@ CONTROL WORDS TO ALLOW ON THE INPUT CARD.@G@@@@C ITP KU )@@G@@ TYPE OF FIELD AS RETURNED BY S1GTFD. =1 MEANS NUMBER @ @@@@C KV )@@G@@ WAS FOUND. @D@@@@C ITYPE TYPE OF CARD FOUND BY SKW )@@G@@1READ =0 @ @@@@C = 0 @ @@@@C KX )@@G@@ = 1'S @B@@@@C = 2 IS RUN CARD @C@@@@C KY )@@G@@ = 3 IS BEGINDATA CARD @D@@@@C = KZ )@@G@@ANYTHING ELSE IS ILLEGAL. @B@@@@C J TEMPORARY VARIABLLA )@@G@@E. @B@@@@C KEMP TEMPORARY VARIABLE. @B@@@@C KEMPLB )@@G@@2 TEMPORARY VARIABLE. @E@@@@C LASTCC FIRST WORD OF NAMLC )@@G@@E OF LAST CONTROL CARD. @G@@@@C LASTID DIMENSIONED (2), EQUIV.LD )@@G@@ CCSPEC(1), NAME OF CONTROL @^@@@@C CARD.@G@@@@C LE )@@G@@ LASTN LAST SEQUENCE NUMBER, = 0 MEANS ANYTHING ALLOWED, @G@@@@LF )@@G@@C =-2 IS LAST WAS INVALID, =-1 IS INCORRECT. =POSITIVE LG )@@G@@@A@@@@C IS ACTUAL NUMBER.@G@@@@C LB POINTLH )@@G@@ER TO PLACE TO PUT NEXT CARD IMAGE'S TEST TO @B@@@@C LI )@@G@@ PASS TO PROCESSOR. @[@@@@C @G@@@@C LCCN NUMBER OF TLJ )@@G@@HIS CARD WHEN IT HAS A ID NUMBER, ZERO IF @E@@@@C NO IDLK )@@G@@ NUMBER, -1 IF ID NUMBER INVALID. @G@@@@C LCH POINTER TO LL )@@G@@LECATION TO PUT NEXT INFORMATION FIELD @B@@@@C INTO,LM )@@G@@ IN CHARACTERS. @D@@@@C LINENO NUMBER OF LINES FROM TOP OF PAGE ON ENTLN )@@G@@RY. @F@@@@C LLIM LENGTH OF TAG 'TEMP' WHICH IS USED FOR SCLO )@@G@@RATCH @F@@@@C SPACE AND WHICH IS ALWAYS THE FIRST TAG. LP )@@G@@IT IS @F@@@@C CREATED BY S1GTST IN CONSTANTS AT COMPILELQ )@@G@@ TIME.@E@@@@C LLL CHARACTER POINTER, TEMPORARY VARIABLE. LR )@@G@@@E@@@@C LLOW POINTER TO FIRST WORD OF TAG 'TEMP'. @G@@@@LS )@@G@@C LORDER ORDER NUMBER OF LAST CARD OR ZERO IF NO LAST CARD. LT )@@G@@@F@@@@C LPLUS LOGICAL, TRUE IF LAST CARD HAS A + FOR SEQUENCELU )@@G@@@ @@@@C NUMBER. @B@@@@C LSTRUN RUNID FROM LV )@@G@@LAST CARD. @F@@@@C MASTCN NUMBER IN TABLE OF LAST MASTER CONTLW )@@G@@ROL CARD. @G@@@@C MASTER EQUIV. CCSPEC (5), NUMBER IN TABLE LX )@@G@@OF THIS CARD'S @ @@@@C MASTER. @F@@@@C MASTLY )@@G@@IN NUMBER IN TABLE OF MASTER CURRENTLY IN USE @F@@@@C NASTLZ )@@G@@LS NUMBER IN TABLE OF LAST SECONDARY CARD FOR THIS@ @@@@C MA )@@G@@ MASTER @G@@@@C ME DIMENSIONED (14), SET TO 1-14MB )@@G@@ BY A DATA STATEMENT, @G@@@@C PASSED TO S1MSG1 AS ERRMC )@@G@@OR MESSAGE NUMBERS PAIRED @ @@@@C WITH ERR. @G@@@@MD )@@G@@C MULTC LOGICAL, EQUIV CCSPEC (4), TRUE IF MULTIPLE COPIES ME )@@G@@@G@@@@C OF THE CARD ARE LEGAL AND THE CARD HAS ID NUMBEMF )@@G@@RS. @B@@@@C M1 = 15, PASSED TO S1MSG1.@B@@@@C M2 MG )@@G@@ = 16, PASSED TO S1MSG1.@B@@@@C M3 = 17, PASSED TO SMH )@@G@@1MSG1.@B@@@@C M4 = 18, PASSED TO S1MSG1.@B@@@@C M5 MI )@@G@@ = 19, PASSED TO S1MSG1.@B@@@@C M6 = 20, PASSED TO SMJ )@@G@@1MSG1.@B@@@@C M7 = 21, PASSED TO S1MSG1.@B@@@@C M8 MK )@@G@@ = 22, PASSED TO S1MSG1.@D@@@@C NCARD NUMBER OF CARDS OML )@@G@@F THIS TYPE FOUND.@F@@@@C NCCERR IN COMMON BLOCK S1CCI, NUMBERMM )@@G@@ OF CONTROL CARD @ @@@@C ERRORS. @E@@@@C NEWIMN )@@G@@D DIMENSIONED (2), NAME FROM CURRENT CARD. @E@@@@C NOPROC MO )@@G@@ LOGICAL, IF TRUE DON'T PROCESS THIS CARD.@G@@@@C NTYPE FORMAMP )@@G@@L PARAMETER, NUMBER O DIFFERENT CARD TYPES IN @ @@@@C MQ )@@G@@ TABLE. @C@@@@C NUNID NUMBER OF UNIDENTIFIED CARDS.@G@@@@MR )@@G@@C OCCUR DIMENSIONED (25), ONE ELEMENT FOR EACH CARD TYPE, MS )@@G@@@G@@@@C = 0 UNLESS CARD TYPE HAS OCCURRED ALREADY, THENMT )@@G@@ = 1. @F@@@@C ORDER EQUIV. CCSPEC (3), NUMBER TO PLACE THIS CMU )@@G@@ARD IN@G@@@@C ORDER, NO HIGHER NUMBERD CARDS MAY PRECEEMV )@@G@@D THIS CARD.@E@@@@C PAGLEN NUMBER OF LINES PER PAGE INCLUDING TOP MARGINMW )@@G@@. @C@@@@C PAPERS =1 IF SUPER PAPER SAVING MODE IS ON. @E@@@@C MX )@@G@@ PLUS LOGICAL, TRUE IF PLUS SIGN ON THIS CARD. @G@@@@C PLUSMY )@@G@@CL COLUMN NUMBER IN WHICH WE FOUND PLUS ON CARD, TO @A@@@@C MZ )@@G@@ REINSERT IT. @F@@@@C PREDIC EQUIV. CCSPEC (7)NA )@@G@@, POINTER TO CARD TYPE THIS IS@D@@@@C SEPENDENT ON AS SNB )@@G@@PECIFIED BY USE. @G@@@@C PRINT EQUIV CCSPEC (8), IF IT IS = NC )@@G@@1 SKIP AN EXTRA LINE. @G@@@@C IF IT = 2 AND OCCURRED ND )@@G@@BEFORE, SKIP AN EXTRA LINE. @D@@@@C RECLST =1 IF RECORD SUMMARIES ARE NE )@@G@@TO BE LISTED. @F@@@@C RUNA FIRST CHARACTER OF RUNID OR BNF )@@G@@LANK IF WAS ZERO. @C@@@@C RUNAF FIRST CHARACTER OF RUNID NG )@@G@@@C@@@@C RUNB SECOND CHARACTER OF RUNID @G@@@@C SPCCNH )@@G@@P FORMAL PARAMETER, PASSED TO S1CCPD AND S1CCPT TO @G@@@@C NI )@@G@@ BE CALLED FOR PROCESSOR 10 FOR DEBUGGING BUT S1CCPD @C@@@@NJ )@@G@@C AND S1CCPT DON'T CALL THEM. @ @@@@C STJBAN TRUE IF SNK )@@G@@TJBANK INPUT@B@@@@C STOR BLANK COMMON ARRAY. @F@@@@C NL )@@G@@ S1BACK ROUTINE IN S1SCAN THAT RESETS POINTER TO THE @E@@@@C NM )@@G@@ CHARACTER STRING TO A SPECIFIED COLUMN. @C@@@@C S1BANK COMNN )@@G@@MON BLOCK FOR STJBANK PARAMETERS. @G@@@@C S1BUF ROUTINE IN NO )@@G@@S1SCAN THAT INITIALIZES WITH A NEW IMAGE @A@@@@C TO BENP )@@G@@ SCANNED. @G@@@@C S1CADD ROUTINE IN S1STCH THAT APPENDS A CHNQ )@@G@@ARACTER TO THE @B@@@@C STRING BEING BUILT. @G@@@@NR )@@G@@C S1CBUF - ROUTINE IN S1STCH TO PASS THE BUFFER TO BE FILLED ANDNS )@@G@@@E@@@@C TO INITIALIZE THE ACCUMULATION OF SYMBOL.@G@@@@NT )@@G@@C S1CCPD ROUTINE THAT CALLS ALL THE NORMAL CARD HANDLERS. NU )@@G@@@G@@@@C S1CCPT ROUTINE THAT CALLS THE TERMINAL CARD PROCESSORSNV )@@G@@. @D@@@@C S1CHPT RETURNS POINTER TO S1STCH BUFFER @G@@@@NW )@@G@@C S1CLIM ROUTINE THAT SETS A LIMIT ON THE SIZE OF FIELD THAT NX )@@G@@@D@@@@C S1GTFD MAY ACCUMULATE. IN S1GTFD. @F@@@@C NY )@@G@@ S1CNTL COMMON BLOCKHOLDING SYSTEM CONTROL INFORMATION.@G@@@@C NZ )@@G@@ S1GTAG ROUTINE THAT RETRIEVES POINTERS TO A TAG'S STORAGE. @D@@@@OA )@@G@@C S1GTFD ROUTINE THAT ACCUMULATES A FIELD. @D@@@@C S1MSOB )@@G@@G1 ROUTINE WHICH PRINTS ERROR MESSAGES@F@@@@C S1OFST ROUTIOC )@@G@@NE IN S1SCAN TO SKIP CHARACTERS AT THE @C@@@@C BEGINOD )@@G@@NING OF THE BUFFER. @G@@@@C S1PRFT ROUTINE IN S1PRIM TO FEOE )@@G@@TCH ONE CHARACTER FROM AN @ @@@@C ARRAY. @F@@@@OF )@@G@@C S1PRNT ROUTINE IN S1READ TO PRINT THE LAST CARD READ. @D@@@@OG )@@G@@C S1PRSK ROUTINE IN S1READ TO SKIP ONE LINE.@G@@@@C S1PROH )@@G@@ST ROUTINE IN S1PRIM TO STORE ONE CHARACTER INTO AN @ @@@@C OI )@@G@@ ARRAY. @D@@@@C S1READ ROUTINE TO READ ONE CONOJ )@@G@@TROL CARD. @F@@@@C S1SCAN ROUTINE TO RETURN NEXT CHARACTER INOK )@@G@@ THE STREAM.@F@@@@C S1SERR ROUTINE TO PRINT STATJOB SYSTEM ERROL )@@G@@OR IN ------@A@@@@C ROUTINE MESSAGE. @E@@@@C S1SPOM )@@G@@CT FUNCTION TO ASCERTAIN TYPE OF CHARACTER. @C@@@@C S1STFT ON )@@G@@ ROUTINE TO CREATE A TAG. @D@@@@C S1VLU FIND NUMERIC VALUOO )@@G@@E OF A STRING. @G@@@@C TABLE FORMAL PARAMETER, DIMENSIONEDOP )@@G@@ (13,NTYPE), CONTAINS @F@@@@C THE SPECIFICATIONS FOR OQ )@@G@@LEGAL CONTROL CARDS. SEE@D@@@@C CCSPEC FOR DETAIL DESCROR )@@G@@IPTIONS. @E@@@@C TRANS1 IF PROGRAM IS TRANS1, = 1, OTHERWISOS )@@G@@E = 0.@F@@@@C USE EQUIV. CCSPEC (6), THE LEGAL USE SPECIFICOT )@@G@@ATION.@B@@@@C SEE CCSPEC FOR DETAILS.@[@@@@C @^@@@@OU )@@G@@C****************** @[@@@@C @B@@@@C S1CCFS TAGGED STOROV )@@G@@AGE SUMMARY @[@@@@C @^@@@@C****************** @[@@@@C @G@@@@OW )@@G@@C 'TEMP' IS RETRIEVED TO GET 5000 WORDS OF SCRATCH ARRAY. OX )@@G@@@E@@@@C 'TEMP' IS CREATED BY CONSTANTS IN S1GTST.@F@@@@OY )@@G@@C 'PROGNM' IS RETRIEVED TO ASCERTAIN WHETHER THIS PROGRAM @ @@@@OZ )@@G@@C IS TRANS1. @G@@@@C 'RUNID' IS CREATED WITH TPA )@@G@@HE TWO-CHARACTER RUNID ON THESE @ @@@@C CARDS. PB )@@G@@@G@@@@C 'DSL' IS CREATED WITH COLUMNS 17-80 OF THE BEGINDATA PC )@@G@@CARD. @[@@@@C @^@@@@C****************** @[@@@@C @ @@@@C PD )@@G@@ INITIALIZATION @[@@@@C @^@@@@ DO 105 J=1,NTYPE @#@@@@PE )@@G@@ 105 OCCUR(J)=0 @^@@@@ STJBAN=.FALSE. @#@@@@ NCARD=0 PF )@@G@@@]@@@@ LCH=1 @]@@@@ ERRA=0@#@@@@ LSTRUN=0 @#@@@@ PG )@@G@@LASTN=0 @#@@@@ LORDER=0 @^@@@@ LASTID(1)=0 @^@@@@PH )@@G@@ LASTID(2)=0 @#@@@@ MASTIN=0 @#@@@@ LASTCC=0 PI )@@G@@@^@@@@ PLUS = .FALSE. @C@@@@C GET BUFPJ )@@G@@FER STORAGE @C@@@@ CALL S1GTAG(4HTEMP,LLOW,1,LLIM,$9999) @[@@@@PK )@@G@@C @ @@@@C READ NEXT CARD @[@@@@C @#@@@@ 200 NUNID=PL )@@G@@0 @^@@@@ DO 205 J=1,15 @^@@@@ 205 ERR(J)=.FALSE. @#@@@@PM )@@G@@ LPLUS = PLUS@^@@@@ PLUS = .FALSE. @[@@@@C @A@@@@ 210 PN )@@G@@CALL S1READ(CARD,ITYPE,CERR) @A@@@@ IF(ITYPE .EQ. 1) CERR=.FALSE. PO )@@G@@@A@@@@ IF(ITYPE .EQ. 2) GO TO 300 @A@@@@ IF(ITYPE .NE. 0) GPP )@@G@@O TO 900 @A@@@@ IF(NUNID .EQ. 0) CALL S1PRSK @#@@@@ CALL SPQ )@@G@@1PRNT @[@@@@C @B@@@@C THIS CARD CANNOT BE IDENTIFIED. @[@@@@PR )@@G@@C @ @@@@ CALL S1MSG1(M1,0,0,0,0) @#@@@@ ERRA=ERRA+1 @ @@@@PS )@@G@@ IF(CERR) ERRA=ERRA+1 @^@@@@ NUNID=NUNID+1 @A@@@@ PT )@@G@@IF(NUNID .LT. 10) GO TO 210 @[@@@@C @C@@@@C TEN CONSECUTIVE PU )@@G@@UNIDENTIFIED CARDS ... @[@@@@C @ @@@@ CALL S1MSG1(M2,0,0,0,0) PV )@@G@@@#@@@@ GO TO 900 @[@@@@C @F@@@@C DECODE FIRST 16 PW )@@G@@COLUMNS - MAKE PRELIMINARY CHECKS @[@@@@C @E@@@@C-FIRST REPLACE ANPX )@@G@@Y PLUS CONTINUATION NUMBERS WITH A ZERO @[@@@@C @ @@@@300 DO 302PY )@@G@@ J = 15,1,-1 @A@@@@ CALL S1PRFT( CARD, J, CHAR) @A@@@@ PZ )@@G@@IF( CHAR .EQ. 1H ) GO TO 302 @A@@@@ IF( CHAR .NE. 1H+) GO TO 304 QA )@@G@@@A@@@@ CALL S1PRST( CARD, J, 1H ) @^@@@@ PLUS = .TRUE. QB )@@G@@@#@@@@ PLUSCL=J @#@@@@ GO TO 304 @#@@@@302 CONTINUE QC )@@G@@@ @@@@304 CALL S1BUF( CARD, 15, 0)@ @@@@ CALL S1OFST(3,$9999) QD )@@G@@@B@@@@C CHECK RUNID @ @@@@ CALL S1SCAN(QE )@@G@@RUNA,$9999) @#@@@@ RUNAF = RUNA@ @@@@ CALL S1SCAN(RUNB,$9999) QF )@@G@@@ @@@@ CALL S1CBUF(KEMP,6) @D@@@@ IF (RUNA.EQ.1H0.AND.S1SPQG )@@G@@CT(RUNB).EQ.2) RUNA=1H @ @@@@ CALL S1CADD(RUNA,$9999) @ @@@@ QH )@@G@@CALL S1CADD(RUNB,$9999) @A@@@@ IF(LSTRUN .EQ. 0) GO TO 310 @B@@@@QI )@@G@@ IF(LSTRUN .NE. KEMP) ERR(2)=.TRUE. @#@@@@ GO TO 312 @B@@@@QJ )@@G@@310 CALL S1STFT(5HRUNID,FW,1,1,$9999) @A@@@@ CALL S1CBUF( STOR(QK )@@G@@FW), 6) @A@@@@ CALL S1CADD( RUNAF, $9999) @A@@@@ CALL SQL )@@G@@1CADD( RUNB, $9999) @#@@@@312 LSTRUN=KEMP @D@@@@C QM )@@G@@ CHECK * IN COLUMN 16 @]@@@@ CHAR=0@A@@@@ CALL SQN )@@G@@1PRFT(CARD,16,CHAR) @C@@@@ IF(S1SPCT(CHAR) .NE. 8) ERR(1)=.TRUEQO )@@G@@. @B@@@@C GET CARD TYPE@ @@@@ CALL SQP )@@G@@1CBUF(NEWID,8) @^@@@@ DO 320 J=6,15 @ @@@@ CALL S1SCAN(QQ )@@G@@CHAR,$9999) @^@@@@ KEMP=S1SPCT(CHAR) @A@@@@ IF(KEMP .EQ. 3) GOQR )@@G@@ TO 320 @D@@@@ IF(KEMP .NE. 1 .AND. KEMP .NE. 9) GO TO 330 QS )@@G@@@ @@@@ CALL S1CADD(CHAR,$325) @#@@@@ 320 CONTINUE @^@@@@ QT )@@G@@CALL S1CHPT(KEMP) @A@@@@ IF(KEMP .NE. 0) GO TO 335 @^@@@@ 325 QU )@@G@@ERR(3)=.TRUE. @#@@@@ GO TO 800 @^@@@@ 330 CALL S1CHPT(KEMP2)QV )@@G@@@A@@@@ IF(KEMP2 .EQ. 0) GO TO 325 @A@@@@ IF(KEMP .EQ. 2) GOQW )@@G@@ TO 350 @^@@@@ ERR(3)=.TRUE. @#@@@@ GO TO 335 @^@@@@QX )@@G@@ 332 ERR(7)=.TRUE. @]@@@@ 335 CCNA=0@^@@@@ 340 COMMA=.FALSE. QY )@@G@@@#@@@@ GO TO 400 @E@@@@C GET CONTINUATQZ )@@G@@ION NUMBER, ETC @^@@@@ 350 CALL S1WHR(KEMP) @A@@@@ CALL S1BACK(RA )@@G@@KEMP-1,$9999) @D@@@@ CALL S1GTFD(3HNUM,KEMP,0,ITP,CHAR,KEMP2,$9RB )@@G@@999) @A@@@@ CALL S1VLU(KEMP,KEMP2,CCNA) @A@@@@ IF(CHAR .EQ.RC )@@G@@ 0) GO TO 340 @A@@@@ IF(CHAR .NE. 1H,) GO TO 332 @^@@@@ RD )@@G@@COMMA= .TRUE. @D@@@@ CALL S1GTFD(3HNUM,KEMP,0,ITP,CHAR,KEMP2,$3RE )@@G@@60) @D@@@@ IF(ITP .EQ. 1 .AND. CHAR .EQ. 0) GO TO 370 @#@@@@RF )@@G@@ CCNB=-1 @#@@@@ GO TO 400 @]@@@@ 360 CCNB=0@#@@@@ RG )@@G@@GO TO 400 @A@@@@ 370 CALL S1VLU(KEMP,KEMP2,CCNB) @[@@@@C @ @@@@RH )@@G@@C CHECK CARD TYPE @[@@@@C @F@@@@ 400 IF(NEWID(1) .NE. 'RI )@@G@@VLABEL' .AND. NEWID(1) .NE. 'VARLAB') @#@@@@ - GO TO 410@^@@@@RJ )@@G@@ NEWID(1)='VLABEL' @^@@@@ NEWID(2)=' ' @C@@@@ 410 IF(NEWRK )@@G@@ID(1) .NE. LASTID(1)) GO TO 420 @C@@@@ IF(NEWID(2) .NE. LASTID(RL )@@G@@2)) GO TO 420 @A@@@@ IF( .NOT. MULTC) GO TO 700 @ @@@@ RM )@@G@@IF(ERR(7)) GO TO 700 @A@@@@ IF(CCNA .EQ. LCCN) GO TO 700 @#@@@@RN )@@G@@ GO TO 500 @^@@@@420 DO 430 I=1,NTYPE @C@@@@ IF(NEWID(1RO )@@G@@).NE.TABLE(1,I))GO TO 430 @C@@@@ IF(NEWID(2) .EQ. TABLE(2,I)) RP )@@G@@GO TO 500 @#@@@@ 430 CONTINUE @G@@@@ IF(NEWID(1).EQ.'COMMENRQ )@@G@@' .AND. (NEWID(2).EQ.'TS' .OR. NEWID(2) @ @@@@ 1 .EQ. 'T'))GO TO RR )@@G@@800 @^@@@@ ERR(4)= .TRUE. @#@@@@ GO TO 800 @[@@@@C RS )@@G@@@A@@@@C PROCESS CARD IN BUFFER@[@@@@C @C@@@@C RT )@@G@@ SEE ALSO STATEMENTS 750, ETC. @C@@@@ 500 IF(NCARD .EQ. 0 .OR. NRU )@@G@@OPROC) GO TO 550 @^@@@@ LLL=6*(LB-LLOW) @^@@@@ DO 505 J=LCHRV )@@G@@,LLL @A@@@@505 CALL S1PRST(STOR(LLOW),J,1H ) @G@@@@ CALL S1CCPD(RW )@@G@@STOR(LLOW),NCARD,CCSPEC,LCCN,INFOR,SPCCP,STOR(LB), @^@@@@ *LLOW+LRX )@@G@@LIM-LB) @]@@@@ LCH=1 @^@@@@ CALL S1CLIM(12) @[@@@@C RY )@@G@@@#@@@@ 550 NCARD=0 @#@@@@ LASTN=0 @^@@@@ LPLUS = .FALRZ )@@G@@SE. @#@@@@ LB=LLOW @^@@@@ NOPROC=.FALSE. @[@@@@C SA )@@G@@@B@@@@C CHECK USAGE OF NEW CARD TYPE@[@@@@C @^@@@@ SB )@@G@@DO 605 J=1,13 @ @@@@ 605 CCSPEC(J)=TABLE(J,I) @D@@@@C SC )@@G@@ CHECK ALREADY PROCESSED @C@@@@ IF(OCCUR(I) .EQ. 0SD )@@G@@ .OR. MULTC) GO TO 610@^@@@@ ERR(5)= .TRUE. @#@@@@ GO TO SE )@@G@@699 @C@@@@C CHECK OUT OF ORDER @B@@@@ 610 SF )@@G@@IF(LORDER .LE. ORDER) GO TO 615 @^@@@@ ERR(6)=.TRUE. @#@@@@SG )@@G@@ 615 LORDER=ORDER@ @@@@ OCCUR(I)=OCCUR(I)+1 @D@@@@C SH )@@G@@ GET CONTROL CARD NUMBER @A@@@@ IF( .NOT. MULTC) GSI )@@G@@O TO 620 @#@@@@ CCNUM=CCNA @ @@@@ IF(ERR(7)) CCNUM=-1 SJ )@@G@@@A@@@@ 620 IF(MASTER .GE. 0) GO TO 640 @C@@@@C SK )@@G@@ SECONDARY CARD @#@@@@ EPA=-MASTER @A@@@@ IF(EPA .EQ. SL )@@G@@MASTIN) GO TO 625 @^@@@@ ERR(11)= .TRUE. @^@@@@ NOPROC=.TRUESM )@@G@@. @#@@@@ GO TO 640 @A@@@@ 625 IF(OCCUR(I) .EQ. 1) GO TO 630 SN )@@G@@@^@@@@ ERR(10)= .TRUE. @#@@@@ GO TO 699 @B@@@@ 630 IF(CCNSO )@@G@@UM .EQ. MASTCN) GO TO 700 @^@@@@ ERR(12)= .TRUE. @#@@@@ SP )@@G@@GO TO 700 @F@@@@C CHECK USAGE OF PRIOR MASTSQ )@@G@@ER CARD @A@@@@ 640 IF(MASTIN .EQ. 0) GO TO 650 @^@@@@ KEMP=MSR )@@G@@ASTIN+1 @ @@@@ DO 645 J=KEMP,MASTLS @E@@@@ IF(OCCUR(J) SS )@@G@@.NE. 0 .OR. TABLE(6,J) .EQ. 0) GO TO 645@^@@@@ ERR(15)= .TRUE. ST )@@G@@@#@@@@ EPB=MASTIN @#@@@@ 645 CONTINUE @ @@@@ 650 IF(MASTER)70SU )@@G@@0,670,660 @D@@@@C MASTER CARD - SET FLAGS SV )@@G@@@#@@@@ 660 MASTIN=I @^@@@@ MASTLS=MASTER @#@@@@ MASTCNSW )@@G@@=CCNUM@#@@@@ KEMP=I+1 @ @@@@ DO 665 J=KEMP,MASTER @#@@@@SX )@@G@@ 665 OCCUR(J)=0 @#@@@@ GO TO 700 @E@@@@C SY )@@G@@ NOT MASTER OR SECONDARY CARD @#@@@@ 670 MASTIN=0 @ @@@@ SZ )@@G@@IF(USE .LE. 0) GO TO 700@#@@@@ EPC=PREDIC @ @@@@ KEMP= OCCUR(TA )@@G@@PREDIC) @B@@@@ GO TO (675,680,700,700,680), USE @A@@@@ 675 TB )@@G@@IF(KEMP .NE. 0) GO TO 700 @^@@@@ ERR(13)= .TRUE. @#@@@@ TC )@@G@@GO TO 699 @A@@@@ 680 IF(KEMP .EQ. 0) GO TO 700 @^@@@@ ERR(14TD )@@G@@)=.TRUE. @[@@@@C @^@@@@ 699 NOPROC= .TRUE. @[@@@@C @D@@@@TE )@@G@@C FINISH CHECKING CARD - SAVE INFO FIELD @[@@@@C @ @@@@TF )@@G@@ 700 IF(MULTC) GO TO 705 @]@@@@ LCCN=0@ @@@@ IF(COMMA) ERTG )@@G@@R(7)=.TRUE. @#@@@@ GO TO 720 @D@@@@C CTH )@@G@@HECK CONTROL CARD NUMBER@ @@@@ 705 IF(ERR(7)) GO TO 710 @#@@@@ TI )@@G@@LCCN=CCNA @C@@@@ IF(LCCN.NE.0.OR.NCARD.NE.0) GO TO 707 @^@@@@TJ )@@G@@ CALL S1PCHD(1) @A@@@@ PRINT 706,NEWID(1),NEWID(2) @G@@@@TK )@@G@@706 FORMAT(' ***** WARNING: MISSING ',A6,A2,' NUMBER. ZERO ASSUMED.'TL )@@G@@@]@@@@ 1 ) @#@@@@707 CONTINUE @#@@@@ CCNA=CCNB @ @@@@TM )@@G@@ IF( .NOT. COMMA) CCNA=0 @C@@@@ IF(COMMA .AND. CCNB .EQ. -1) ETN )@@G@@RR(7)=.TRUE.@#@@@@ GO TO 720 @#@@@@ 710 LCCN =-1 @^@@@@ TO )@@G@@ERR(7)=.FALSE. @^@@@@ ERR(8)=.TRUE. @#@@@@ GO TO 725 TP )@@G@@@D@@@@C CHECK CONTINUATION NUMBER@A@@@@ 720 TQ )@@G@@IF( .NOT. ERR(7)) GO TO 730 @#@@@@ 725 LASTN =-2 @#@@@@ GO TO TR )@@G@@750 @A@@@@ 730 IF(LASTN .EQ. -2) GO TO 745 @A@@@@ IF(LASTN .EQTS )@@G@@. -1) GO TO 740 @ @@@@ IF( PLUS) GO TO 750 @A@@@@ IF(LASTT )@@G@@TN .GT. 0) GO TO 735 @A@@@@ IF(CCNA .EQ. 0) GO TO 745 @G@@@@TU )@@G@@735 IF( CCNA .EQ. LASTN+1 .OR. (LPLUS .AND. CCNA .GT. LASTN))GOTO745TV )@@G@@@^@@@@ 740 ERR(9)=.TRUE. @#@@@@ 745 LASTN=CCNA @A@@@@ IF(LASTW )@@G@@TN .EQ. 0) LASTN=-1 @D@@@@C SAVE INFORMATTX )@@G@@ION FIELD @^@@@@ 750 NCARD=NCARD+1 @ @@@@ IF(NOPROC) GO TO 8TY )@@G@@00 @A@@[@ IF(LCH+63.GT.LLIM*6)GO TO 9999@C@@@@ CALL S1TCHTZ )@@G@@S(CARD(3),5,STOR(LLOW),LCH,64)@#@@@@ LCH=LCH+64 @#@@@@ LB=LB+UA )@@G@@12 @G@@@@C NOTE - IT SEEMS THAT LB SHOULD BE INCREMENTED UB )@@G@@BY 11, NOT @G@@@@C 12. NO MATTER, SINCE EXTRA WORDS UC )@@G@@ARE BLANKED OUT @D@@@@C ANYWAY. SEE STMTS 500, ETCUD )@@G@@. @G@@@@C THUS A CCP CAN TAKE EACH CARD IMAGE TO UE )@@G@@BE 11 OR 12 @F@@@@C WORDS LONG AND IS SAFE. MAYBE THUF )@@G@@AT'S WHY... @[@@@@C @^@@@@C PRINT CARD@[@@@@C @C@@@@UG )@@G@@C CHECK LINE SKIP @B@@@@800 IF(NEWID(1UH )@@G@@).NE.6HCOMMEN)GO TO 810 @B@@@@ IF(LASTCC .EQ. 6HCOMMEN) GO TO 820 UI )@@G@@@#@@@@ GO TO 805 @#@@@@ 805 CALL S1PRSK @#@@@@ GO TO 820 UJ )@@G@@@B@@@@ 810 IF(LASTCC .EQ. 6HCOMMEN) GO TO 805 @A@@@@ IF(NCARD .NEUK )@@G@@. 1) GO TO 820 @#@@@@ CALL S1PRSK @A@@@@ IF(PRINT .EQ. 1) CUL )@@G@@ALL S1PRSK @E@@@@ IF(PRINT .EQ. 2 .AND. OCCUR(I) .EQ. 1) CALL S1UM )@@G@@PRSK @D@@@@C CHECK SUPPRESS FIRST 16 @ @@@@UN )@@G@@ 820 IF(CERR)ERRA=ERRA+1 @^@@@@ DO 825 J=1,15 @A@@@@ UO )@@G@@IF( .NOT. ERR(J)) GO TO 825 @#@@@@ CERR=.TRUE. @#@@@@ ERRA=EUP )@@G@@RRA+1 @#@@@@ 825 CONTINUE @A@@@@ IF( .NOT. PLUS) GO TO 850 UQ )@@G@@@A@@@@ CALL S1PRST(CARD,PLUSCL,1H+)@#@@@@850 CONTINUE @A@@@@UR )@@G@@ IF(CCLIST.EQ.1) CALL S1PRNT @D@@@@C SUS )@@G@@UMMARIZE CARD ERRORS @^@@@@ DO 860 J=1,14 @A@@@@ IF( .NUT )@@G@@OT. ERR(J)) GO TO 860 @ @@@@ IF(J .GT. 9) GO TO 855 @A@@@@ UU )@@G@@CALL S1MSG1(ME(J),0,0,0,0) @#@@@@ GO TO 860 @#@@@@ 855 KEMP=EUV )@@G@@PA @ @@@@ IF(J .GT. 12) KEMP=EPC @E@@@@ CALL S1MSG1(ME(J),UW )@@G@@TABLE(1,KEMP),TABLE(2,KEMP),0,0) @#@@@@ 860 CONTINUE @A@@@@ UX )@@G@@IF(.NOT. ERR(15)) GO TO 890 @#@@@@ ERRA=ERRA-1 @#@@@@ KEMP=EUY )@@G@@PB+1 @^@@@@ KEMP2=TABLE(5,EPB)@ @@@@ DO 870 J=KEMP,KEMP2 UZ )@@G@@@E@@@@ IF(OCCUR(J) .NE. 0 .OR. TABLE(6,J) .EQ. 0) GO TO 870@#@@@@VA )@@G@@ ERRA=ERRA+1 @[@@@@C @F@@@@C REQUIRED -- CARD WAS NOT FOUVB )@@G@@ND FOLLOWING LAST -- CARD. @[@@@@C @G@@@@ CALL S1MSG1(M3,TABVC )@@G@@LE(1,J),TABLE(2,J),TABLE(1,EPB),TABLE(2,EPB)) @#@@@@ 870 CONTINUE VD )@@G@@@C@@@@C READY FOR NEXT CARD@^@@@@890 LASTVE )@@G@@CC=NEWID(1) @#@@@@ GO TO 200 @[@@@@C @D@@@@C TERMVF )@@G@@INATION - CONTROL CARDS ALL READ @[@@@@C @C@@@@ 900 IF(NCARD .EQVG )@@G@@. 0 .OR. NOPROC) GO TO 910 @^@@@@ LLL=6*(LB-LLOW) @^@@@@ VH )@@G@@DO 905 J=LCH,LLL @@@@@@@A@@@@905 CALL S1PRST(STOR(LLOW),J,1H ) @G@@@@VI )@@G@@ CALL S1CCPD(STOR(LLOW),NCARD,CCSPEC,LCCN,INFOR,SPCCP,STOR(LB),LLIMVJ )@@G@@@#@@@@ *+LLOW-LB) @]@@@@ LCH=1 @^@@@@ CALL S1CLIM(12) VK )@@G@@@[@@@@C @C@@@@C PRINT TERMINATOR @A@@@@VL )@@G@@910 IF (ITYPE.EQ.0) GO TO 920 @A@@@@ IF (ITYPE.EQ.3) GO TO 91VM )@@G@@5 @#@@@@ CALL S1PRSK @#@@@@ CALL S1PRNT @ @@@@ IF(CERVN )@@G@@R) ERRA=ERRA+1 @[@@@@C @D@@@@C BEGINDATA CARD MISSING OR OUVO )@@G@@T OF SEQUENCE. @[@@@@C @ @@@@ CALL S1MSG1(M4,0,0,0,0) @#@@@@VP )@@G@@ ERRA=ERRA+1 @#@@@@ GO TO 920 @B@@@@915 CALL S1STFT('DSL',VQ )@@G@@FW,1,11,$9999) @^@@@@ DO 916 I=0,10 @^@@@@ STOR(FW+I)VR )@@G@@=1H @#@@@@916 CONTINUE @C@@@@ CALL S1STFT('BEGDAT',FW,1,11VS )@@G@@,$9999) @A@@@@C PUT TEXT FROM BEGINDATA THEERE. @^@@@@ DO 91VT )@@G@@7 J=1,64 @A@@@@ CALL S1PRFT(CARD,J+16,CH) @A@@@@917 CALL SVU )@@G@@1PRST(STOR(FW),J,CH) @A@@@@ CALL S1PRST(STOR(FW),65,1H ) @A@@@@VV )@@G@@ CALL S1PRST(STOR(FW),66,1H ) @^@@@@ 920 CALL S1PCHD(4) @#@@@@VW )@@G@@ PRINT 925 @D@@@@ 925 FORMAT(//31H0CONTROL CARD LISTING COMPLETEVX )@@G@@ ) @[@@@@C @D@@@@C CHECK MISSING SECONVY )@@G@@DARY @A@@@@ IF(MASTIN .EQ. 0) GO TO 940 @^@@@@ KEMP=MASTIN+VZ )@@G@@1 @ @@@@ DO 930 J=KEMP,MASTLS @E@@@@ IF(OCCUR(J) .NE. 0WA )@@G@@ .OR. TABLE(6,J) .EQ. 0) GO TO 930@G@@@@ CALL S1MSG1(M3,TABLE(1,JWB )@@G@@),TABLE(2,J),TABLE(1,MASTIN),TABLE(2,MASTI@]@@@@ * N))@#@@@@ WC )@@G@@ERRA=ERRA+1 @#@@@@ 930 CONTINUE @D@@@@C CWD )@@G@@HECK FOR MISSING CARDS @^@@@@940 DO 960 J=1,NTYPE @^@@@@ USE=TAWE )@@G@@BLE(6,J) @A@@@@ IF(TABLE(5,J))960,950,950 @D@@@@ 945 IF(USEWF )@@G@@ .EQ. 0 .OR. OCCUR(J) .GT. 0) GO TO 960 @[@@@@C @E@@@@ IF(TWG )@@G@@ABLE(1,J).EQ.6HI/FORM.AND.STJBAN) GO TO 960 @C@@@@C REQUIRED -WH )@@G@@- CARD HAS NOT BEEN FOUND. @C@@@@ CALL S1MSG1(M5,TABLE(1,J),TABLWI )@@G@@E(2,J),0,0) @#@@@@ GO TO 959 @ @@@@950 IF( USE) 945,951,955 WJ )@@G@@@C@@@@951 IF( TABLE(1,J) .NE. 6HI/FORM) GO TO 960 @C@@@@C WK )@@G@@ OTHERWISE CHECK COP VS OCCUR(J) @B@@@@ CALL S1GTAG('PROGNM',FW,WL )@@G@@I,I,$9999) @F@@@@ IF(OCCUR(J).GT.0 .OR. COP.NE.0 .OR. STOR(FW)WM )@@G@@.EQ.'ROTATE'@^@@@@ 1 .OR.STJBAN) @B@@@@ * WN )@@G@@ GO TO 960 @C@@@@C REQUIRED -- CARD HAS NOT BEEN FOUND. WO )@@G@@@D@@@@ CALL S1MSG1(M5,TABLE(1,J),TABLE(2,J),0,0) @#@@@@ WP )@@G@@GO TO 959 @^@@@@ 955 PREDIC=TABLE(7,J) @^@@@@ KEMP=OCCUR(PREDIC)WQ )@@G@@@B@@@@ GO TO (960,960,9553,9554,9555),USE @E@@@@ 9553 IF(KEMP .EQWR )@@G@@. 0 .OR. OCCUR(J) .GT. 0) GO TO 960 @E@@@@C THE -- CARD MUSTWS )@@G@@ BE USED IF THE -- CARD IS USED. @G@@@@ CALL S1MSG1(M6,TABLE(1,JWT )@@G@@),TABLE(2,J),TABLE(1,PREDIC),TABLE(2,PREDI@]@@@@ * C))@#@@@@ WU )@@G@@GO TO 959 @D@@@@ 9554 IF(KEMP .GT. 0 .OR. OCCUR(J) .GT.0) GO TO 960 WV )@@G@@@E@@@@C THE -- CARD MUST BE USED IF THE -- CARD IS NOT USED.@G@@@@WW )@@G@@ CALL S1MSG1(M7,TABLE(1,J),TABLE(2,J),TABLE(1,PREDIC),TABLE(2,PREDIWX )@@G@@@]@@@@ * C))@#@@@@ GO TO 959 @E@@@@ 9555 IF(KEMP .GT. 0 .AWY )@@G@@ND. OCCUR(J) .EQ. 0) GO TO 960 @E@@@@ IF(KEMP .EQ. 0 .AND. OWZ )@@G@@CCUR(J) .GT. 0) GO TO 960 @G@@@@C EITHER THE -- CARD OR THE --XA )@@G@@ CARD MUST BE USED BUT NOT BOTH @G@@@@ CALL S1MSG1(M8,TABLE(1,JXB )@@G@@),TABLE(2,J),TABLE(1,PREDIC),TABLE(2,PREDI@]@@@@ * C))@#@@@@ 959 XC )@@G@@ERRA=ERRA+1 @#@@@@ 960 CONTINUE @^@@@@ NCCERR=NCCERR+ERRA@D@@@@XD )@@G@@C CALL TERMINAL PROCESSORS @G@@@@C-THE INDENTXE )@@G@@ED CODING HERE IS FOR THE SPECIAL CASE OF THE TRANS1 OUTPUT @B@@@@CCARD XF )@@G@@TERMINAL PROCESSOR HAVING TO BE LAST@^@@@@ TRANS1 = 0 @C@@@@XG )@@G@@ CALL S1GTAG('PROGNM', FW, I, I, $9999) @C@@@@ IF( STOR(XH )@@G@@FW) .EQ. 'TRANS1') TRANS1 = 1 @ @@@@ DO 980 J=NTYPE,1,-1 @B@@@@XI )@@G@@ IF( TRANS1 .EQ. 0) GO TO 969 @C@@@@ IF( TABLE(1,J) XJ )@@G@@.NE. 'OUTPUT') GO TO 969@#@@@@ I = J @#@@@@ GO TO 980XK )@@G@@@#@@@@969 CONTINUE @E@@@@ IF(TABLE(1,J).EQ.6HI/FORM .AND. STXL )@@G@@JBAN) GO TO 975 @A@@@@ IF(TABLE(13,J))970,980,975 @A@@@@ 970 XM )@@G@@IF(OCCUR(J) .EQ. 0) GO TO 980 @F@@@@975 CALL S1CCPT( TABLE(1,J),INFOR,XN )@@G@@SPCCP,STOR(LLOW),LLIM,ERRA) @^@@@@ NCCERR=NCCERR+ERRA@#@@@@ 980 XO )@@G@@CONTINUE @A@@@@ IF( TRANS1 .EQ. 0) RETURN @F@@@@ CALXP )@@G@@L S1CCPT( TABLE(1,I),INFOR,SPCCP,STOR(LLOW),LLIM,ERRA)@A@@@@ NCCXQ )@@G@@ERR = NCCERR + ERRA @]@@@@ RETURN@[@@@@C @ @@@@9999 CALLXR )@@G@@ S1SERR('S1CCFS.')@#@@@@ RETURN @]@@@@ END ___ 960 XS )@@G@@@C@@@@C REQUIRED -- CARD HAS NOT BEEN FOUND. @C@@@@ CALL SXT )@@G@@1MSG1(M5,TABLE(1,J),TABLE(2,J),0,0) @#@@@@ *[S@@@*SDFF*@E@@@@ XU )@@G@@SUBROUTINE S1CCOF( IFLD, NW, NV, SCR, LSCR, NERR) @[@@@@C @G@@@@XV )@@G@@C *****************************************************************XW )@@G@@@G@@@@C ************** O/FORMAT CONTROL CARD PROCESSOR*************XX )@@G@@******@G@@@@C ******************************************************XY )@@G@@************@F@@@@C RJVOYXZ )@@G@@TECKI NOV69@ @@@@ IMPLICIT INTEGER (A - Z)@#@@@@ COMMON X(1)YA )@@G@@@G@@@@ DIMENSION CDS(13)/1HD,1HE,1HF,1HG,1HI,1HA,1HR,1HO,1HL,1HB,YB )@@G@@3*1H./@C@@@@ DIMENSION IFLD(1), SCR(1), TVTYP(2), TI(2)@^@@@@ YC )@@G@@LOGICAL IEDOUT @]@@@@C...... @]@@@@C....... @C@@@@ CALLYD )@@G@@ S1STFT('TEMPOF',FWGV,1,1,$999) @#@@@@ X(FWGV)=0 @C@@@@ YE )@@G@@ CALL S1GVAL('ODROUT',OTYPE,$998,$998) @A@@@@ IF(OTYPE.NE.4) GYF )@@G@@O TO 10 @C@@@@ CALL S1GTAG('TEMPPV',FW,NEL,NEL,$8) @#@@@@YG )@@G@@ GO TO 10 @#@@@@8 CONTINUE @^@@@@ CALL S1PCHD(1) YH )@@G@@@#@@@@ PRINT 9 @G@@@@9 FORMAT(' ***** THE O/FORMAT CARD IYI )@@G@@S NOT ALLOWED WITH STJBANK ' @^@@@@ 1 ,'OUTPUT.') @^@@@@ YJ )@@G@@ NERR=NERR+1 @#@@@@ RETURN @#@@@@10 CONTINUE @]@@@@YK )@@G@@C...... @D@@@@C.... CALL S1GLST AFTER GETTING 'OCHARS' AND 'ONCR' YL )@@G@@@]@@@@C...... @C@@@@ CALL S1GVAL('OCHARS', OCHARS, $998,$998) YM )@@G@@@D@@@@ CALL S1GTAG( 'ONCR', FWONC, NWE, NEL, $998) @#@@[@ YN )@@G@@ONCR=100 @^]@@@ KSTOR=ONCR+2*NV @A@@@@ IF(LSCR.LT.KSTOR) YO )@@G@@GO TO 997 @^@@@@ DO 11 I=1,KSTOR @#@@@@11 SCR(I)=0 @#@@@@YP )@@G@@ ONCRU = ONCR@^@@@@ FWL = ONCR + 1 @F@@@@ CALL S1GLST(YQ )@@G@@ IFLD, NW*6, NV, SCR(FWL), SCR, ONCRU, $1002) @E@@@@C SET A FLAGYR )@@G@@ THAT THE FORMAT IS BEING WRITTEN OUT. @#@@@@ X(FWGV)=1 @B@@@@YS )@@G@@ CALL S1IODR(3,'REW',NEL,NEL,NEL) @D@@@@ CALL S1IODR( 3, 'WYT )@@G@@RITE', NV*2, SCR(FWL), NEL) @C@@@@ CALL S1IODR( 3, 'END', NEL, NEYU )@@G@@L, NEL) @C@@@@ CALL S1IODR( 3, 'REW', NEL, NEL, NEL) @B@@@@YV )@@G@@ CALL S1STFT('ONCRU', FW, 1, 1, $999)@^@@@@ X(FW) = ONCRU YW )@@G@@@H@@@@C CHECK TO SEE IF NCR SPECIFIED CORRECTLY. DO THE CHECK IF NOT DEFYX )@@G@@AULTED. @C@@@@C IF FORMAT DEFAULTED S1OFMT SETS NCR CORRECTLY @C@@@@YY )@@G@@ CALL S1GTAG('TEMPPV',FW,NWE,NEL,$13) @A@@@@ IF(X(FWONCYZ )@@G@@).EQ.-1)GO TO 15 @#@@@@C DEFAULT IS -1 @ @@@@13 EFNCR=IABS(X(FWOZA )@@G@@NC)) @A@@[@ IF(EFNCR.EQ.ONCRU)GO TO 14 @^[@@@ CALL S1PCHZB )@@G@@D(1) @#@@[@ PRINT 130 @G@@[@130 FORMAT(' ***** ERROR. FORMAT AZC )@@G@@ND NLR ON OUTPUT CARD ARE INCONSISTE@]@@[@ *NT.') @^#@@@ NERRZD )@@G@@=NERR+1 @A@@[@ IF (EFNCR.LT.ONCRU) GO TO 14 @^@@[@ CALL SZE )@@G@@1PCHD(2) @#@@[@ PRINT 131 @G@@[@131 FORMAT(7X,'PROGRAM FORMEZF )@@G@@RLY ALLOWED NLR TO BE LARGER THAN NECESSAR@A@@[@ *Y, AND ADDED BLANKZG )@@G@@ RECORDS.'/ @F@@[@ *7X,'IF YOU NEED THIS CAPABILITY, SEE A STATJOB CZH )@@G@@ONSULTANT.')@^@@@@14 ONCRU=EFNCR @^@@@@15 X(FWONC)=ONCRU ZI )@@G@@@]@@@@C...... @E@@@@C.... FOR EACH VARIABLE CHECK VARIABLE TYPE IN ZJ )@@G@@FORMAT LIST @E@@@@C...... AGAINST 'TVTYPE' LISZK )@@G@@T @ @@@@ IF(NV.EQ.0) GO TO 281 @#@@@@ FWTVT = 0 @^@@@@ZL )@@G@@ TI(1) = 6HTRANSF @^@@@@ TI(2) = 6HORMED @D@@@@ CALL SZM )@@G@@1GTAG('TVTYPE', FWTVT, NWE, NEL, $200) @#@@@@ GO TO 205 @D@@@@ZN )@@G@@200 CALL S1GTAG('FMTLST', FWIFMT, NWE, NEL, $998) @#@@@@ TI(1) ZO )@@G@@= 6H @^@@@@ TI(2) = TI(1) @#@@@@205 J=FWL-2 @#@@@@ ZP )@@G@@JJ=FWIFMT-2 @^@@@@ IEDOUT = .FALSE. @^@@@@ DO 28 TVN = 1, NVZQ )@@G@@@]@@@@ J=J+2 @#@@@@ JJ=JJ+2 @ @@@@ TYPE=FLD(18,6,SCR(ZR )@@G@@J+1)) @C@@@@ IF(TYPE.LT.1.OR.TYPE.GT.13)GO TO 21 @E@@@@ ZS )@@G@@ GO TO ( 21,23,23,23,22,24,21,21,21,23,21,21,21),TYPE@E@@@@C ZT )@@G@@ D E F G I A R O L B UN UN UNUSED @[@@@@C @ @@@@21 ZU )@@G@@PHYREC=FLD(0,18,SCR(J)) @ @@@@ FCOL=FLD(18,18,SCR(J)) @ @@@@ ZV )@@G@@LCOL=FLD(0,18,SCR(J+1)) @^@@@@ CALL S1PCHD(1) @B@@@@ PRINT ZW )@@G@@2100, TVN, PHYREC, FCOL, LCOL @G@@@@2100 FORMAT(' ***** FORMAT ERROR. ZX )@@G@@ILLEGAL EDITING CODE SPECIFIED FOR T@G@@@@ 2RANSFORMED VARIABLE', I5ZY )@@G@@, ' IN LOGICAL RECORD',I3,', COLUMNS', I4@^@@@@ 3, ' THRU',I4) ZZ )@@G@@@^@@@@ NERR = NERR + 1 @#@@@@ GO TO 28 @^@@@@22 IEDOUTAA )@@G@@ = .TRUE. @#@@@@23 NA36 = 3 @#@@@@ GO TO 25 @#@@@@24 AB )@@G@@NA36 = 6 @A@@@@25 IF( FWTVT .NE. 0) GO TO 258 @ @@@@ TN=FLDAC )@@G@@(18,6,X(JJ+1)) @B@@@@ IF(TN.LT.1.OR.TN.GT.13) GO TO 28 @F@@@@AD )@@G@@ GO TO (28,251,251,251,251,252,28,28,28,252,28,28,28),TN @]@@@@AE )@@G@@251 TN = 3@#@@@@ GO TO 259 @]@@@@252 TN = 6@#@@@@ GO TO AF )@@G@@259 @ @@@@258 TN = X(FWTVT+TVN-1) @D@@@@259 IF( TN .EQ. NA36 AG )@@G@@.OR. TN .EQ. 0) GO TO 28 @^@@@@ CODE = CDS(TYPE) @ @@@@ AH )@@G@@IF( TN .EQ. 6) GO TO 26 @ @@@@ TVTYP(1) = 6H NUME @^@@@@ AI )@@G@@TVTYP(2) = 6HRIC @#@@@@ GO TO 27 @ @@@@26 TVTYP(1) = 6H ALPHAJ )@@G@@A @^@@@@ TVTYP(2) = 6HBETIC@^@@@@27 CALL S1PCHD(1) @B@@@@AK )@@G@@ PRINT 2700, TI, TVN, TVTYP, CODE @E@@@@2700 FORMAT(' ***** FORAL )@@G@@MAT ERROR.' ,2A6, 'VARIABLE', @G@@@@ 2 I4, ' HAS BEEN DEFINED AM )@@G@@AS', 2A6, 'AND THUS CANNOT BE OUTPUT WITH @ @@@@ 3AN ', A1, ' FIELD'AN )@@G@@) @^@@@@ NERR = NERR + 1 @#@@@@28 CONTINUE @#@@@@281 AO )@@G@@ CONTINUE @E@@@@ IF( IEDOUT) CALL S1STFT('OINTEG', FW, 1, 1, $99AP )@@G@@9) @[@@@@C @G@@@@C NOW CHECK OCHARS AGAINST RECORD AQ )@@G@@WIDTHS AND STORE THESE @[@@@@C @C@@@@ CALL S1GVAL('ODROUT',OAR )@@G@@TYPE,$998,$998) @#@@@@ SEQ=0 @C@@@@ CALL S1GTAG('SEQAS )@@G@@',SEQ,NWE,NEL,$312) @#@@@@312 CONTINUE @#@@@@ NOSEQ=0 AT )@@G@@@C@@@@ CALL S1GTAG('NOSEQ',NOSEQ,NWE,NEL,$313) @#@@@@313 CONTAU )@@G@@INUE @E@@@@ IF(SEQ.EQ.0.AND.NOSEQ.EQ.0.AND.OTYPE .EQ.1)SEQ=1 AV )@@G@@@C@@@@ CALL S1STFT('ORCWTH', FW, 1, ONCR, $999) @^@@@@ DO 31 AW )@@G@@ I = 1, ONCR@B@@@@ IF( SCR(I) .LE. OCHARS) GO TO 311 @^@@@@ AX )@@G@@CALL S1PCHD(1) @ @@@@ PRINT 3000, I, OCHARS @G@@@@3000 FORMATAY )@@G@@(' ***** FORMAT ERROR. LOGICAL RECORD', I3, ' IS SPECIFIED@B@@@@ 2AZ )@@G@@ AS LONGER THAN', I4, ' CHARACTERS')@^@@@@ NERR = NERR + 1 @#@@@@BA )@@G@@311 CONTINUE @ @@@@ IF(SEQ.EQ.0) GO TO 314@B@@@@ IF(SBB )@@G@@CR(I).LE.OCHARS-8) GO TO 314 @^@@@@ CALL S1PCHD(1) @^@@@@ BC )@@G@@ PRINT 3001,I @G@@@@3001 FORMAT(' ***** FORMAT ERROR. LOGICAL REBD )@@G@@CORD',I3,' SPECIFIES ' @D@@@@ 1 ,'FORMATTING IN THE SEQUENCE NUMBEBE )@@G@@RING AREA.')@^@@@@ NERR=NERR+1 @#@@@@314 CONTINUE @^@@@@BF )@@G@@31 X(FW+I-1) = SCR(I)@[@@@@C @D@@@@C FINALLY STORE FORBG )@@G@@MAT UNDER TAG 'O/FORM' @[@@@@C @C@@@@ CALL S1GTAG('O/FORM', FWBH )@@G@@, NWE, NEL, $39) @]@@@@ RETURN@C@@@@39 CALL S1STFT('O/FORM', IBBI )@@G@@, 1, NW , $999) @^@@@@ DO 40 I = 1, NW @^@@@@ X(IB) = IFLDBJ )@@G@@(I) @#@@@@40 IB = IB + 1 @]@@@@ RETURN@[@@@@C @[@@@@C BK )@@G@@@C@@@@997 CALL S1SERR('S1CCOF. LSCR TOO SMALL.') @#@@@@ GO TO BL )@@G@@1000 @F@@@@998 CALL S1SERR('S1CCOF. S1GTAG OR S1GVAL ERROR RETURN.'BM )@@G@@) @#@@@@ GO TO 1000@D@@@@999 CALL S1SERR('S1CCOF. S1STFT BN )@@G@@ERROR RETURN.') @^@@@@1000 NERR=NERR+1 @]@@@@ RETURN@#@@@@BO )@@G@@1002 CONTINUE @#@@@@ NERR = 1 @]@@@@ RETURN@]@@@@ BP )@@G@@END ___28),TN @]@@@@251 TN = 3@#@@@@ GO TO 259 @]@@@@252 BQ )@@G@@*[S@@@*SDFF*@G@@@@ SUBROUTINE S1CCPD(IFLD,NCARD,CCSPEC,CCN,INFOR,SPBR )@@G@@CCP,SCR,LSCR) @ @@@@ IMPLICIT INTEGER(A-Z) @#@@@@ COMMONBS )@@G@@ X(1)@G@@@@ COMMON/S1CCI/IHD(8),PROGNM(2),DATE(2),CCINP(2),NCCERR,BT )@@G@@NIOERR, @B@@@@ 1TESTFG,MAPFG,NVARS,NTVARS,NCR,COP @F@@@@ BU )@@G@@DIMENSION CCSPEC(13),IFLD(1),INFOR(1),SCR(1),INITLV(12) @B@@@@ BV )@@G@@DATA (INITLV(I),I=1,12)/0,11*1H / @^@@@@C****************** @F@@@@BW )@@G@@C S1CCPD CALLS THE CONTROL CARD HALDLERS FOR S1CCFS. @[@@@@BX )@@G@@C @^@@@@C****************** @[@@@@C @F@@@@C S1CCPD BY )@@G@@ SYMBOL USAGE SUMMARY ALL VARIABLES ARE INTEGERS@^@@@@C*****************BZ )@@G@@* @[@@@@C @G@@@@C CCINP DIMENSIONED (2), IN COMMON BLCA )@@G@@OCK S1CCI, NOT USED @^@@@@C HERE.@F@@@@C CCN CB )@@G@@ FORMAL PARAMETER, =LCCN IN S1CCFS, LAST CONTROL@A@@@@C CC )@@G@@ CARD'S NUMBER. @G@@@@C CCSPEC FORMAL PARAMETER, TABLECD )@@G@@ ENTRY FOR THIS CARD HANDLER. @C@@@@C FOR A DESCRIPTIONCE )@@G@@ SEE S1CCFS.@G@@@@C COP IN COMMON BLOCK S1CCI, =1 IF COP INCF )@@G@@PUT =0 IF NOT. @G@@@@C DATE IN COMMON BLOCK S1CCI, DIMENSCG )@@G@@IONED (2), NOT USED @^@@@@C HERE.@E@@@@C FW CH )@@G@@ POINTER TO THE FIRST WORD OF THE TAG. @F@@@@C IFLD CI )@@G@@ FORMAL PARAMETER, THE CARD IMAGE TO BE HANDLED.@G@@@@C IHD CJ )@@G@@ IN COMMON BLOCK S1CCI, DIMENSIONED (8), NOT USED @^@@@@C CK )@@G@@ HERE.@G@@@@C INFOR FORMAL PARAMETER, THE TABLE INPUT TCL )@@G@@O S1CCFS WITH @G@@@@C OPTIONAL CONTROL WORDS. FOR ICM )@@G@@NPUT CARD OR GENERAL @A@@@@C ENLIST PROCESSOR.@G@@@@CN )@@G@@C INITLV 12-WORD ARRAY CONTAINING INITIALIZATION CONTENTS FOR CO )@@G@@@F@@@@C VLABEL CONTROL CARD STORAGE FILE (VLABEL$.) CP )@@G@@@B@@@@C KK TEMPORARY VARIABLE. @B@@@@C KKA CQ )@@G@@ TEMPORARY VARIABLE. @F@@@@C LSCR FORMAL PARAMETER, LENGTCR )@@G@@H, IN WORDS, OF THE @A@@@@C SCRATCH ARRAY. @E@@@@CS )@@G@@C MAPFG IN COMMON BLOCK S1CCI, NOT USED HERE. @B@@@@C CT )@@G@@ N TEMPORARY VARIABLE. @F@@@@C NCARD FORMAL PARACU )@@G@@METER, NUMBER OF CARD IMAGES FOR THE@ @@@@C HANDLER. CV )@@G@@@G@@@@C NCCERR IN COMMON BLOCK S1CCI, NUMBER OF CONTROL CARD ECW )@@G@@RRORS.@G@@@@C NCR IN COMMON BLOCK S1CCI, NUMBER OF LOGICAL CX )@@G@@RECORDS PER @A@@@@C INPUT RECORD. @E@@@@C NERRCY )@@G@@ NUMBER OF ERRORS DETECTED IN PROCESSOR. @E@@@@C NIOERR CZ )@@G@@ IN COMMON BLOCK S1CCI, NOT USED HERE. @E@@@@C NOB NUMBEDA )@@G@@R OF OBSERVATIONS PER INPUT RECORD. @F@@@@C NTVARS IN COMMON BDB )@@G@@LOCK S1CCI, NUMBER OF TRANSFORMED @ @@@@C VARIABLES. DC )@@G@@@C@@@@C NV NUMBER OF INPUT VARIABLES @B@@@@C NVARDD )@@G@@S NUMBER OF VARIABLES. @E@@@@C PROGNM IN COMMON BLOCK SDE )@@G@@1CCI, NOT USED HERE. @G@@@@C SCR FORMAL PARAMETER, DIMENDF )@@G@@SIONED (1), SCRATCH ARRAY. @D@@@@C SPCCP FORMAL PARAMETER,DG )@@G@@ NOT USED HERE. @E@@@@C SW CARD HANDLER NUMBER FOR COMPUDH )@@G@@TED GO TO. @G@@@@C S1CCEN GENERALIZED ENLIST PROCESSOR, PROCEDI )@@G@@SSOR NUMBER 7. @A@@@@C S1CCI COMMON BLOCK @F@@@@C DJ )@@G@@ S1CCIC IN CHECKS CARD HANDLER, PROCESSOR NUMBER 3. @F@@@@C DK )@@G@@ S1CCIF I/FORMAT CARD HANDLER, PROCESSOR NUMBER 2. @E@@@@C DL )@@G@@ S1CCIN INPUT CARD HANDLER FOR ALL BUT ONEWAY1 @D@@@@C DM )@@G@@ AND COLFREQ1, PROCESSOR NUMBER 1. @G@@@@C S1CCMD MODELDN )@@G@@ CARD HANDLER FOR STEPREG1, PROCESSOR NUMBER 8 @E@@@@C S1CCNM DO )@@G@@ VNAMES CARD HANDLER, PROCESSOR NUMBER 4 @F@@@@C S1CCOD TRANSDP )@@G@@1 OUTPUT CARD HANDLER, PROCESSOR NUMBER 9.@F@@@@C S1CCOF O/FORDQ )@@G@@MAT CARD HANDLER, PROCESSOR NUMBER 24. @G@@@@C S1CCOT REGANDR )@@G@@/STEPREG/FACTOR OUTPUT CARD PROCESSOR, NO. 34. @E@@@@C S1CCTI DS )@@G@@ TITLE CARD HANDLER, PROCESSOR NUMBER 6. @E@@@@C S1CCWT WEIGHDT )@@G@@T CARD HANDLER, PROCESSOR NUMBER 30.@F@@@@C S1CTAG ROUTINE IN DU )@@G@@S1GTST TO CHANGE THE NAME OF A TAG. @G@@@@C S1GTAG ROUTINE IN DV )@@G@@S1FTST TO RETRIEVE THE POINTERS TO A TAG @G@@@@C S1GVAL ROUTIDW )@@G@@NE IN S1FTST TO RETRIEVE THE VALUE OF A TAG. @F@@@@C S1STFT DX )@@G@@ ROUTINE IN S1GTST TO CREATE A TAG AND ALLOCATE @A@@@@C DY )@@G@@ STORAGE FOR IT. @F@@@@C S1STRS ROUTINE IN S1GTST TO CREATE ADZ )@@G@@ TAG AND RESERVE @E@@@@C STORAGE FOR IT IN THE ANALYSIEA )@@G@@S PHASE. @F@@@@C S1ZTRC TRANSFRM CARD HANDLER, PROCESSOR NUEB )@@G@@MBER 5. @G@@@@C S11CCV PICT1 VARLABEL CARD HANDLER, PROCESEC )@@G@@SOR NUMBER 21. @G@@@@C S11GXY PICT1 GRAPH, HEAD, XLABEL, YLED )@@G@@ABEL CARD PROCESSOR, @B@@@@C PROCESSOR NUMBER 22. EE )@@G@@@G@@@@C S15CCI COLFREQ1 INPUT CARD PROCESSOR, PROCESSOR NUMBEREF )@@G@@ 25. @G@@@@C S15CCO COLFREQ1 OUTPUT CARD HANDLER, PROCESSOR NEG )@@G@@UMBER 26. @G@@@@C S17CCO UNISTAT1 OUTPUT CARD HANDLER, PROCEEH )@@G@@SSOR NUMBER 29. @G@@@@C S2CCO DSTAT2 OUTPUT/SUBSET CARD HANEI )@@G@@DLER, PROCESSOR NO. 27. @G@@@@C S22CLD CROSTAB2 CONTROL CARDS EJ )@@G@@PROCESSOR, PROCESSOR NUMBER @^@@@@C 32. @G@@@@C EK )@@G@@ S3CCMD REGAN2 MODEL CARD PROCESSOR, PROCESSOR NUMBER 15. @G@@@@EL )@@G@@C S31MOD DISCRIM1 MODEL CARD HANDLER, PROCESSOR NUMBER 32. EM )@@G@@@G@@@@C S6CCMD FACTOR1 MODEL CARD HANDLER, PROCESSOR NUMBER 14EN )@@G@@. @G@@@@C S61CCR ROTATE1 ROTATE CARD PROCESSOR, PROCESSOR EO )@@G@@NUMBER 33. @G@@@@C S63MOD FACTOR3 MODEL CARD PROCESSOR, PROCEEP )@@G@@SSOR NUMBER 35. @G@@@@C S8CCIN ONEWAY1 INPUT CARD HANDLER, PEQ )@@G@@ROCESSOR NUMBER 13. @G@@@@C S9ANPF NWAY1 ANALYSIS CARD HANER )@@G@@DLER, PROCESSOR NUMBER 16. @F@@@@C S9CODP NWAY1 CODE CARD HES )@@G@@ANDLER, PROCESSOR NUMBER 18. @F@@@@C S9DNPF NWAY1 DESIGN CARDET )@@G@@ HANDLER, PROCESSOR NUMBER 19.@F@@@@C S9OUTP NWAY1 OUTPUT CARDEU )@@G@@ HANDLER, PROCESSOR NUMBER 23.@G@@@@C TESTFG IN COMMON BLOCK SEV )@@G@@1CCI, TEST FLAG, NOT USED HERE. @B@@@@C X BLANK COMMOEW )@@G@@N ARRAY. @[@@@@C @^@@@@C****************** @[@@@@C @C@@@@EX )@@G@@C S1CCPD TAGGED STORAGE USAGE SUMMARY @[@@@@C @^@@@@C*****EY )@@G@@************* @[@@@@C @G@@@@C 'TVTYPE' IS RETRIEVED TO AEZ )@@G@@SCERTAIN THAT TRANSFORMATIONS WERE @ @@@@C SUCCESSFUL.FA )@@G@@@G@@@@C 'IVARS' IS CREATED TO HOLD THE NUMBER OF INPUT VARIABLEFB )@@G@@S @G@@@@C 'NVARS' IS RETRIEVED TO CHANGE ITTO NUMBER OF TRAFC )@@G@@NSFORMED @ @@@@C VARIABLES @B@@@@C 'VNAMES' FD )@@G@@ IS CHANGED TO 'INAMES' @C@@@@C 'INAMES' IS CREATED FROM 'VNAMESFE )@@G@@' @B@@@@C 'TVNAME' IS CHANGED TO 'VNAMES'.@G@@@@C 'LDAFF )@@G@@TA' IS RESERVED TO HOLD TRANSFORMED DATA IN ANALYSIS. @F@@@@C FG )@@G@@ 'NOBPIR' IS RETRIEVED FOR NUMBER OF OBSERVATIONS PER @A@@@@C FH )@@G@@ INPUT RECORD. @[@@@@C @^@@@@C****************** FI )@@G@@@#@@@@ SW=CCSPEC(9)@#@@@@ NERR = 0 @G@@@@ GO TO(250,30FJ )@@G@@0,350,400,450,500,550,600,650,999,750,800,850,900, @F@@@@ * 950,1FK )@@G@@000,999,1100,1150,1200,1250,1300,1350,1400,1450,1500 @F@@@@ * ,155FL )@@G@@0,1600,1650,1700,1750,1800,1850,1900,1950,2000,2050, @^@@@@ *2100,2FM )@@G@@150),SW @[@@@@C @A@@@@C CALL INPUT CARD PROCESSOR @]@@@@FN )@@G@@C #1 @[@@@@C @^@@@@250 KK=CCSPEC(12) @]@@@@ KKA=0 FO )@@G@@@A@@@@ IF (KK.NE.0) KKA=INFOR(KK) @G@@@@ CALL S1CCIN(IFLD,NFP )@@G@@CARD,SCR,LSCR,CCSPEC(10),CCSPEC(11),KKA,INFOR(KK@C@@@@ 1+1),INFOR(KKFQ )@@G@@+2),NVARS,NCR,COP,NERR,$999) @[@@@@C @G@@@@C INITIALIZE NVAFR )@@G@@RS SECTORS OF FILE 'VLABEL$' ASSIGNED IN SZEROS @[@@@@C @^@@@@ FS )@@G@@DO 255 I=1,NVARS @C@@[@255 CALL S1DRUM($999,'VLAB$$ ',3,INITLV,I,12) FT )@@G@@@#[@@@ GO TO 405 @[@@@@C @B@@@@C CALL I/FORMAT CARD PFU )@@G@@ROCESSOR @]@@@@C #2 @[@@@@C @B@@@@300 CALL S1GVAL('NOBPIFV )@@G@@R',NOB,$999,$999) @F@@@@ CALL S1CCIF(IFLD,NCARD,NVARS,NOB,NCR,COP,SFW )@@G@@CR,LSCR,NERR) @#@@@@ GO TO 405 @[@@@@C @B@@@@C CAFX )@@G@@LL INCHECKS CARD PROCESSOR @]@@@@C #3 @[@@@@C @F@@@@350 FY )@@G@@CALL S1CCIC( IFLD, NCARD, CCSPEC, NCR, SCR, LSCR, NERR) @#@@@@ FZ )@@G@@GO TO 405 @[@@@@C @A@@@@C CALL VNAMES CARD PROCESSOR@]@@@@GA )@@G@@C #4 @[@@@@C @#@@@@400 NV=NVARS @B@@@@ IF(PROGNM(1)GB )@@G@@.NE.'ROTATE')GO TO 401 @A@@@@ CALL S1GVAL('NV',NV,$999,$999)@B@@@@GC )@@G@@401 CALL S1CCNM(IFLD,NCARD,NV,NERR) @^@@@@405 NCCERR=NCCERR+NERRGD )@@G@@@]@@@@ RETURN@[@@@@C @B@@@@C CALL TRANSFRM CARD PROCESSOGE )@@G@@R @]@@@@C #5 @[@@@@C @C@@@@450 CALL S1GTAG('REPMEA',DUMGF )@@G@@,DUM,DUM,$460) @^@@@@ CALL S1PCHD(4) @#@@@@ PRINT 455 GG )@@G@@@G@@@@455 FORMAT('0***** WARNING. ALTHOUGH REPMEANS IS ON THE INPUT CAGH )@@G@@RD, MI@G@@@@ *SSING DATA IS NOT ACTUALLY REPLACED IN THE DATA.'/7X,'GI )@@G@@DO NOT ASSUM@G@@@@ *E MEANS HAVE BEEN REPLACED WHEN USING TRANSFORMAGJ )@@G@@TIONS.'/7X,'BLANK @G@@@@ *INPUT VALUES ARE TREATED AS ZERO IN ARITHMGK )@@G@@ETIC TRANSFORMATIONS.') @D@@@@460 CALL S1ZTRC(IFLD,NCARD*12,SCR,LSCR,NGL )@@G@@ERR,NVARS) @C@@@@ CALL S1GTAG('TVTYPE', FW, N, NTVARS, $405)@C@@@@GM )@@G@@ CALL S1STFT( 'IVARS', FW, 1, 1, $999) @#@@@@ NV=NVARS GN )@@G@@@^@@@@ X(FW) = NVARS @B@@@@ CALL S1GTAG('NVARS', FW, N, N,GO )@@G@@ $999)@^@@@@ X(FW) = NTVARS @^@@@@ NVARS = NTVARS @B@@@@GP )@@G@@ CALL S1CTAG('VNAMES', 'INAMES') @B@@@@ CALL S1CTAG('TVNAMGQ )@@G@@E', 'VNAMES') @B@@@@ CALL S1STRS('LDATA', 1, NV+2, $999) @[@@@@GR )@@G@@C @H@@@@C IF TRANSFORMS ADDED ANY VARIABLES, INITIALIZE ADDIGS )@@G@@TIONAL SECTORS @[@@@@C @ @@@@ IF(NVARS.LE.NV)GOTO 405 @^@@@@GT )@@G@@ DO 465 I=NV,NVARS @C@@[@465 CALL S1DRUM($999,'VLAB$$ ',3,INITLV,GU )@@G@@I,12) @#[@@@ GO TO 405 @[@@@@C @A@@@@C CALL TITLE CARGV )@@G@@D PROCESSOR @]@@@@C #6 @[@@@@C @C@@@@500 CALL S1CCTI(IFLD,NGW )@@G@@CARD,CCSPEC(10),NERR) @#@@@@ GO TO 405 @[@@@@C @C@@@@C GX )@@G@@ CALL GENERAL ENLIST CARD PROCESSOR @]@@@@C #7 @[@@@@C GY )@@G@@@^@@@@550 KK=CCSPEC(10) @G@@@@ CALL S1CCEN(CCSPEC,IFLD,NCARD,GZ )@@G@@INFOR(KK),CCSPEC(11),CCSPEC(12), @ @@@@ 1SCR,LSCR,NERR,$999) HA )@@G@@@#@@@@ GO TO 405 @[@@@@C @C@@@@C CALL STEPREG1 MODEL HB )@@G@@CARD PROCESSOR @]@@@@C #8 @[@@@@C @E@@@@600 CALL S1CCMD(HC )@@G@@CCN,IFLD,NCARD,SCR,LSCR,NERR,NVARS,$999) @#@@@@ GO TO 405 @[@@@@HD )@@G@@C @B@@@@C CALL OUTDATA CARD PROCESSOR @]@@@@C #9 HE )@@G@@@[@@@@C @C@@@@650 CALL S1CCOD( IFLD, NCARD, SCR, LSCR, NERR)@#@@@@HF )@@G@@ GO TO 405 @[@@@@C @A@@@@C CALL TAB CARD PROCESSOR HG )@@G@@@]@@@@C #11 @[@@@@C @B@@@@750 CALL S1SERR('STMT 750, S1CCPD'HH )@@G@@) @]@@@@ RETURN@[@@@@C @D@@@@C CALL ROW, COL, LEVELHI )@@G@@, HEAD CARD PROCESSOR @]@@@@C #12 @[@@@@C @B@@@@800 CALL SHJ )@@G@@1SERR('STMT 800, S1CCPD') @]@@@@ RETURN@[@@@@C @B@@@@C HK )@@G@@ CALL ONEWAY1 INPUT CARD PROCESSOR@]@@@@C #13 @[@@@@C @C@@@@HL )@@G@@850 CALL S8CCIN(IFLD,NCARD,SCR,LSCR,NERR) @#@@@@ GO TO 405 HM )@@G@@@[@@@@C @^@@@@C U N U S E D @]@@@@C #14 @[@@@@C HN )@@G@@@#@@@@900 GO TO 999 @[@@@@C @B@@@@C CALL REGAN2 MODEL CAHO )@@G@@RD PROCESSOR@]@@@@C #15 @[@@@@C @E@@@@950 CALL S3CCMD(CCN,IFHP )@@G@@LD,NCARD,SCR,LSCR,NERR,NVARS,$999) @#@@@@ GO TO 405 @[@@@@C HQ )@@G@@@ @@@@999 CALL S1SERR('S1CCPD') @]@@@@ RETURN@[@@@@C @E@@@@HR )@@G@@C CALL NWAY1 FACTORID ANALYSIS CARD PROCESSOR @]@@@@C HS )@@G@@ #16 @[@@@@C @#@@@@1000 CONTINUE @C@@@@ CALL S9ANPF(IFLD,NHT )@@G@@CARD,SCR,LSCR,NERR) @#@@@@ GO TO 405 @[@@@@C @C@@@@C HU )@@G@@ CALL NWAY1 CODE WORD CARD PROCESSOR @]@@@@C #18 @[@@@@C HV )@@G@@@#@@@@1100 CONTINUE @C@@@@ CALL S9CODP(IFLD,NCARD,SCR,LSCR,NERRHW )@@G@@) @#@@@@ GO TO 405 @[@@@@C @D@@@@C CALL NWAY1 FHX )@@G@@ACTORID DESIGN CARD PROCESSOR @]@@@@C #19 @[@@@@C @#@@@@1150 HY )@@G@@CONTINUE @C@@@@ CALL S9DNPF(IFLD,NCARD,SCR,LSCR,NERR) @#@@@@HZ )@@G@@ GO TO 405 @[@@@@C @C@@@@C CALL GENERAL VLABEL CARD PIA )@@G@@ROCESSOR @]@@@@C #20 @[@@@@C @B@@@@1200 CALL S1CCV(CCN,IFLIB )@@G@@D,NCARD,NERR) @#@@@@ GOTO 405 @[@@@@C @C@@@@C CAIC )@@G@@LL PICT1 VARLABEL CARD PROCESSOR @]@@@@C #21 @[@@@@C @#@@@@ID )@@G@@1250 CONTINUE @B@@@@ CALL S11CCV(CCN,IFLD,NCARD,NERR) @#@@@@IE )@@G@@ GO TO 405 @[@@@@C @E@@@@C CALL PICT1 GRAPH,HEAD,XLABIF )@@G@@EL,YLABEL CARD PROCESSOR@]@@@@C #22 @[@@@@C @#@@@@1300 CONTINIG )@@G@@UE @F@@@@ CALL S11GXY(CCSPEC(1),IFLD,NCARD,CCN,SCR,LSCR,NERR,$99IH )@@G@@9) @#@@@@ GO TO 405 @[@@@@C @C@@@@C CALL S9OUTP OUII )@@G@@TPUT CARD PROCESSOR @]@@@@C #23 @[@@@@C @#@@@@1350 CONTINIJ )@@G@@UE @C@@@@ CALL S9OUTP(IFLD,NCARD,SCR,LSCR,NERR) @#@@@@ IK )@@G@@GO TO 405 @[@@@@C @B@@@@C CALL O/FORMAT CARD PROCESSOR IL )@@G@@@]@@@@C #24 @[@@@@C @E@@@@1400 CALL S1CCOF( IFLD, NCARD*12, NIM )@@G@@VARS, SCR, LSCR, NERR) @#@@@@ GO TO 405 @[@@@@C @C@@@@C IN )@@G@@ CALL COLFREQ1 INPUT CARD PROCESSOR @]@@@@C #25 @[@@@@C IO )@@G@@@^@@@@1450 KK=CCSPEC(12) @]@@@@ KKA=0 @A@@@@ IF(KK.NE.0) IP )@@G@@KKA=INFOR(KK) @G@@@@ CALL S15CCI(IFLD,NCARD,SCR,LSCR,CCSPEC(10)IQ )@@G@@,CCSPEC(11),KKA,INFOR(KK@C@@@@ *+1),INFOR(KK+2),NVARS,NCR,COP,NERR,$IR )@@G@@999) @#@@@@ GO TO 405 @[@@@@C @C@@@@C CALL COLFREQ1 IS )@@G@@OUTPUT CARD PROCESSOR @]@@@@C #26 @[@@@@C @C@@@@1500 CALL SIT )@@G@@15CCO(NCARD,IFLD,SCR,LSCR,NERR,$999)@#@@@@ GO TO 405 @[@@@@C IU )@@G@@@E@@@@C CALL DSTAT2 OUTPUT AND SUBSET CARD PROCESSOR. @]@@@@IV )@@G@@C #27 @[@@@@C @F@@@@ 1550 CALL S2CCO(CCSPEC(1),CCN,IFLD,NCARD,IW )@@G@@SCR,LSCR,NERR,$999) @#@@@@ GO TO 405 @[@@@@C @B@@@@C IX )@@G@@ CALL UNISTAT1 HIST CARD PROCESSOR@]@@@@C #28 @[@@@@C @D@@@@IY )@@G@@1600 CALL S17HST(NCARD,IFLD,SCR,SCR,LSCR,NERR,$999) @#@@@@ GO TO IZ )@@G@@405 @[@@@@C @C@@@@C CALL UNISTAT1 OUTPUT CARD PROCESSOR JA )@@G@@@]@@@@C #29 @[@@@@C @C@@@@1650 CALL S17CCO(NCARD,IFLD,SCR,LSCJB )@@G@@R,NERR,$999)@#@@@@ GO TO 405 @[@@@@C @A@@@@C CALL WEIGJC )@@G@@HT CARD PROCESSOR @]@@@@C #30 @[@@@@C @C@@@@ 1700 CALL S1CCWT(JD )@@G@@IFLD,NCARD,SCR,LSCR,NERR,$999)@#@@@@ GO TO 405 @[@@@@C @C@@@@JE )@@G@@C CALL CROSTAB2 CONTROL CARDS PROCESSOR @]@@@@C #31 @[@@@@JF )@@G@@C @F@@@@ 1750 CALL S22CLD(CCSPEC(1),CCN,IFLD,NCARD,SCR,LSCR,NERR,$99JG )@@G@@9) @#@@@@ GO TO 405 @[@@@@C @C@@@@C CALL DISCRIM1 JH )@@G@@MODEL CARD PROCESSOR @]@@@@C #32 @[@@@@C @D@@@@1800 CALL SJI )@@G@@31MOD(CCN,IFLD,NCARD,SCR,LSCR,NERR,$999) @#@@@@ GO TO 405 @C@@@@JJ )@@G@@C CALL ROTATE1 ROTATE CARD PROCESSOR @]@@@@C #33 @[@@@@JK )@@G@@C @D@@@@ 1850 CALL S61CCR(CCN,IFLD,NCARD,SCR,LSCR,NERR,$999) @#@@@@JL )@@G@@ GO TO 405 @[@@@@C @E@@@@C CALL REGAN/STEPREG/FACTOR3 JM )@@G@@OUTPUT CARD PROCESSOR @]@@@@C #34 @[@@@@C @C@@@@ 1900 CALL SJN )@@G@@1CCOT(IFLD,NCARD,SCR,LSCR,NERR,$999)@#@@@@ GO TO 405 @[@@@@C JO )@@G@@@B@@@@C CALL FACTOR3 MODEL CARD PROCESSOR@]@@@@C #35 @[@@@@JP )@@G@@C @D@@@@ 1950 CALL S63MOD(CCN,IFLD,NCARD,SCR,LSCR,NERR,$999) @#@@@@JQ )@@G@@ GO TO 405 @[@@@@C @C@@@@C CALL CLASSIFY1 MODEL CARD JR )@@G@@PROCESSOR @]@@@@C #36 @[@@@@C @D@@@@ 2000 CALL S32MDL(CCN,IFJS )@@G@@LD,NCARD,SCR,LSCR,NERR,$999) @#@@@@ GO TO 405 @[@@@@C @D@@@@JT )@@G@@C CALL PROCESSOR FOR ONEWAY2 CONTROL CARDS @]@@@@C #37 JU )@@G@@@[@@@@C @F@@@@ 2050 CALL S82CLD(CCSPEC(1),CCN,IFLD,NCARD,SCR,LSCR,NEJV )@@G@@RR,$999) @#@@@@ GO TO 405 @[@@@@C @C@@@@C CALL UNIJW )@@G@@STAT2 OUTPUT CARD PROCESSOR @]@@@@C #38 @[@@@@C @D@@@@2100 JX )@@G@@CALL S18CCO(CCN,IFLD,NCARD,SCR,LSCR,NERR,$999) @#@@@@ GO TO 405 JY )@@G@@@[@@@@C @B@@@@C CALL PICT1 SCAT CARD PROCESSOR @]@@@@C JZ )@@G@@ #39 @[@@@@C @D@@@@ 2150 CALL S11BVP(CCN,IFLD,NCARD,SCR,LSCR,NERR,$KA )@@G@@999) @#@@@@ GO TO 405 @]@@@@ END ___ CALL S15CCI(IFLD,NKB )@@G@@CARD,SCR,LSCR,CCSPEC(10)*[@@@@*SDFF*@C@@@@ SUBROUTINE S1CCV(NUMVAR,KC )@@G@@IFLD,NCARD,NERR) @A@@@@ DIMENSION IFLD(11),IFLDS(12) @#@@@@ KD )@@G@@COMMON X(1) @ @@@@ IMPLICIT INTEGER(A-Z) @^@@@@ DATA NOVARL/KE )@@G@@0/ @[@@@@C @F@@@@C THIS SUBROUTINE PROCESSES THE VLABEL CARD KF )@@G@@EXECPT FOR PICT1 @[@@@@C @ @@@@ IF(NOVARL.NE.0) GO TO 2@B@@@@KG )@@G@@ CALL S1STFT('NOVARL',LVARL,1,1,$999)@A@@@@ 2 IF(NCARD.EQ.1) GKH )@@G@@O TO 10 @#@@@@ NERR=NERR+1 @^@@@@ CALL S1PCHD(1) @#@@@@KI )@@G@@ PRINT 5 @G@@@@ 5 FORMAT( ' ***** ERROR. CONTINUATION KJ )@@G@@CARDS ARE NOT ALLOWED FO@ @@@@ -R THE VLABEL CARD') @#@@@@10 KK )@@G@@CONTINUE @ @@@@ IF(NUMVAR .EQ. 0) RETURN@ @@@@ CALL S1CKVI(KL )@@G@@NUMVAR,$800)@^@@@@ IFLDS(1)=NUMVAR @#@@@@ DO 15 I=1,11@^@@@@KM )@@G@@ 15 IFLDS(I+1)=IFLD(I)@D@@[@ CALL S1DRUM($997,'VLAB$$ ',3,IFLDS,NKN )@@G@@UMVAR,12) @^[@@@ NOVARL=NOVARL+1 @^@@@@ X(LVARL)=NOVARL KO )@@G@@@]@@@@ RETURN@#@@@@ 800 NERR=NERR+1 @^@@@@ CALL S1PCHD(1) KP )@@G@@@^@@@@ PRINT 810,NUMVAR @F@@@@ 810 FORMAT(' ***** ERROR. THERE KQ )@@G@@IS NO VARIABLE NUMBER',I8) @]@@@@ RETURN@#@@@@997 PRINT 996 KR )@@G@@@F@@@@996 FORMAT('***** ERROR IN WRITING INTO VLABEL STORAGE FILE') KS )@@G@@@ @@@@999 CALL S1SERR ('S1CCV.') @]@@@@ RETURN@]@@@@ END KT )@@G@@___@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KU )@@G@@*[S@@@*SDFF*@D@@@@ SUBROUTINE S1CKBN(CW,NAME,NADD,IV,BUFSIZ,NERR) KV )@@G@@@ @@@@ IMPLICIT INTEGER (A-Z) @ @@@@ DIMENSION CW(2),NAME(2) KW )@@G@@@^@@@@ DIMENSION IV(2) @[@@@@C @F@@@@C SUBROUTINE KX )@@G@@TO CHECK ERROR CONDITIONS FOR VARIABLES TO@B@@@@C BE ADDED TO THEKY )@@G@@ INPUT STJBANK. @F@@@@C CW - CONTROL WORD USED TO SPECIFY KZ )@@G@@ADDING VARIABLES. @D@@@@C NAME - NAME OF VARIABLE(S) TO BE ALA )@@G@@DDED. @F@@@@C NADD - MAXIMUM NUMBER OF VARIABLES TO BE ADDEDLB )@@G@@. IF @F@@@@C NADD .GT. 1 THEN DIGITS 1,2,... WILLLC )@@G@@ LATER@E@@@@C BE APPENDED TO THE VARIABLE NAME. LD )@@G@@@G@@@@C IV - RETURNED WITH SLOT NUMBERS IN WHICH VARIABLES ALE )@@G@@RE @G@@@@C TO BE ADDED. IF IV(1) = 'VARIES' WHLF )@@G@@EN S1CKBN @G@@@@C IS CALLED, THEN ZERO IS RETURNLG )@@G@@ED FOR UNIDENTI- @F@@@@C FIED VARIABLES TO DENOTELH )@@G@@ NEXT UNUSED SLOT.@F@@@@C BUFSIZ - RETURNED WITH BUFFER SIZELI )@@G@@ NEEDED FOR ADDING@B@@@@C NADD VARIABLES. @G@@@@LJ )@@G@@C NERR - RETURNED WITH THE NUMBER OF ERROR MESSAGES PRINTED.LK )@@G@@@[@@@@C @[@@@@C @#@@@@ COMMON X(2) @^@@@@ DIMENSION NMLL )@@G@@(2) @[@@@@C @C@@[@C ABORT RUN IF CC ERRORS&VARS ADDED TO STJBANK LM )@@G@@@[@@@@C @B@@[@ CALL S1STFT('ERRADD',LEA,1,1,$999) @#@@@@ LN )@@G@@VARIES=IV(1)@B@@@@ CALL S1GVAL('NVARS',NVARS,$999,$999)@B@@@@ LO )@@G@@CALL S1GVAL('IVARS',NVARS,$999,$10) @#@@@@ 10 CONTINUE @#@@@@ LP )@@G@@BUFSIZ=0 @]@@@@ NERR=0@B@@@@ CALL S1GTAG('STJBIN',FW,NWE,NELQ )@@G@@L,$20)@#@@@@ GO TO 30 @B@@@@ 20 IF(VARIES .EQ. 'SKPERR') RETURLR )@@G@@N @#@@@@ CALL ERROR @#@@@@ PRINT 25,CW @G@@@@ 25 FORMATLS )@@G@@(' ***** CONTROL WORD ',2A6,' IS NOT ALLOWED UNLESS STJBANK @ @@@@ -LT )@@G@@IS ON THE INPUT CARD') @]@@@@ RETURN@#@@@@ 30 MAXNOB=X(FW)@^@@@@LU )@@G@@ NORIG=X(FW+1) @^@@@@ NEMPTY=X(FW+2) @^@@@@ NUSED=LV )@@G@@X(FW+3) @#@@@@ LUSED=FW+3 @#@@@@ MAXK=X(FW+4)@^@@@@ LW )@@G@@MULUSE=X(FW+5) @^@@@@ BANKER=X(FW+6) @^@@@@ XUSED=X(FW+7LX )@@G@@) @B@@@@ IF(VARIES .EQ. 'SKPERR') GO TO 100 @B@@@@ CALL SLY )@@G@@1GTAG('NOBS',FW,NWE,NEL,$35) @ @@@@ IF(NWE .EQ. 2) GO TO 33 @A@@@@LZ )@@G@@ IF(X(FW) .LT. MAXNOB) GO TO 40@#@@@@ GO TO 35 @E@@@@ 33 MA )@@G@@IF(X(FW) .GT. 1 .OR. X(FW+1) .LT. MAXNOB) GO TO 40 @B@@@@ 35 CALL SMB )@@G@@1GTAG('SKIPIF',FW,NWE,NEL,$50)@#@@@@ 40 CALL ERROR @#@@@@ PRINT MC )@@G@@45 @G@@@@ 45 FORMAT(' ***** VARIABLES CANNOT BE ADDED TO AN STJBANKMD )@@G@@ IF OBSERVAT@G@@@@ -IONS ARE SKIPPED BY TRANSFORMATIONS OR BY NOBS OME )@@G@@N THE INPUT CARD')@A@@@@ 50 IF(MULUSE .EQ. 0) GO TO 57 @#@@@@ MF )@@G@@CALL ERROR @#@@@@ PRINT 55 @G@@@@ 55 FORMAT(' ***** VARIABLESMG )@@G@@ CANNOT BE ADDED TO INPUT STJBANK IF ANY S@D@@@@ -TJBANK IS INPUT MOMH )@@G@@RE THAN ONCE IN THE RUN') @A@@@@ 57 IF(XUSED .EQ. 0) GO TO 60 MI )@@G@@@#@@@@ CALL ERROR @^@@@@ CALL S1PCHD(1) @#@@@@ PRINT MJ )@@G@@58 @G@@@@ 58 FORMAT(' ***** VARIABLES CANNOT BE ADDED TO AN STJBANKMK )@@G@@ UNLESS ITS @F@@@@ -FILE IS ASSIGNED WITH EXCLUSIVE USE (X-OPTION ONML )@@G@@ @ASG)', @A@@@@ -/' ***** AND WRITEABLE.') @#@@@@ X(FW+7MM )@@G@@)=0 @#@@@@ 60 DO 62 K=1,9 @ @@@@ CALL S1PRFT(NAME,K,CH) @ @@@@MN )@@G@@ IF(CH .NE. ' ') GO TO 62@#@@@@ NAMCHR=K-1 @#@@@@ GO TO MO )@@G@@100 @#@@@@ 62 CONTINUE @#@@@@ 63 CALL ERROR @#@@@@ PRINT MP )@@G@@65,CW @G@@@@ 65 FORMAT(' ***** VARIABLE NAME SPECIFIED WITH CONTROL WOMQ )@@G@@RD ',2A6, @A@@@@ -' HAS TOO MANY CHARACTERS') @^@@@@ 70 NUSED=MR )@@G@@NUSED+NADD @A@@@@ IF(NUSED .LE. NEMPTY) GO TO 80@#@@@@72 CONTMS )@@G@@INUE @A@@@@ IF(BANKER.NE.0) GO TO 80 @#@@@@ CALL ERRORMT )@@G@@@#@@@@ PRINT 75,CW @G@@@@ 75 FORMAT(' ***** INPUT STJBANK DOES NOMU )@@G@@T CONTAIN ADEQUATE RESERVED SP@C@@@@ -ACE TO ADD VARIABLE(S) SPECIFIMV )@@G@@ED BY ',2A6)@^@@@@ 80 X(LUSED)=NUSED @]@@@@ RETURN@[@@@@C MW )@@G@@@[@@@@C @C@@@@ 100 CALL S1GTAG('INAMES',FW,NWE,NEL,$1001) @#@@@@MX )@@G@@ GO TO 101 @B@@@@ 1001 CALL S1GTAG('VNAMES',FW,NWE,NEL,$70)@#@@@@MY )@@G@@ 101 CONTINUE @^@@@@ NM(1)=NAME(1) @^@@@@ NM(2)=NAME(2MZ )@@G@@) @^@@@@ DO 150 J=1,NADD @A@@@@ IF(NADD .EQ. 1) GO TO 11NA )@@G@@0 @^@@@@ ENCODE(TEMP,102) J@#@@@@ 102 FORMAT(I3) @#@@@@ NB )@@G@@KS=NAMCHR @#@@@@ DO 105 K=1,3@ @@@@ CALL S1PRFT(TEMP,K,CH) NC )@@G@@@A@@@@ IF(CH .EQ. ' ') GO TO 105 @#@@@@ KS=KS+1 @ @@@@ND )@@G@@ CALL S1PRST(NM,KS,CH) @#@@@@ 105 CONTINUE @ @@@@ IF(KS NE )@@G@@.GT. 8) GO TO 63 @]@@@@ 110 L=FW @^@@@@ DO 120 I=1,NORIG @A@@@@NF )@@G@@ IF(NM(1) .NE. X(L)) GO TO 120 @B@@@@ IF(NM(2) .NE. X(L+1)) GONG )@@G@@ TO 120 @#@@@@ CALL ERROR @^@@@@ PRINT 115,NM,I @G@@@@NH )@@G@@ 115 FORMAT(' ***** NAME ',A6,A2,' OF VARIABLE TO BE ADDED IS THE SAME NI )@@G@@@E@@@@ -AS THE NAME OF VARIABLE',I4,' OF THE INPUT STJBANK') @#@@@@NJ )@@G@@ GO TO 142 @]@@@@ 120 L=L+2 @#@@@@ LOW=NORIG+1 @^@@@@ NK )@@G@@LUP=NVARS+NUSED @^@@@@ MAX=NVARS+NEMPTY @ @@@@ IF(LUP .GT. NL )@@G@@MAX) LUP=MAX@A@@@@ IF(LUP .LT. LOW) GO TO 142 @^@@@@ DO 140NM )@@G@@ I=LOW,LUP @#@@@@ NAMA=X(L) @#@@@@ NAMB=X(L+1) @]@@@@ NN )@@G@@L=L+2 @ @@@@ CALL S1PRFT(NAMB,6,CHAR)@ @@@@ CALL S1PRST(NAMB,6NO )@@G@@,' ') @A@@@@ IF(NM(1) .NE. NAMA) GO TO 140 @A@@@@ IF(NM(2) .NENP )@@G@@. NAMB) GO TO 140 @A@@@@ IF(CHAR .NE. ' ') GO TO 130 @#@@@@ NQ )@@G@@IV(J)=I @A@@@@ CALL S1PRST(X(L-1),6,'X') @#@@@@ GO TO NR )@@G@@150 @#@@@@ 130 CALL ERROR @#@@@@ PRINT 135,NM@G@@@@ 135 FORMATNS )@@G@@(' ***** VARIABLE ',A6,A2,' ALREADY SPECIFIED TO BE ADDED IN@#@@@@ -NT )@@G@@ THIS RUN') @#@@@@ GO TO 175 @#@@@@ 140 CONTINUE @^@@@@ 142 NU )@@G@@NUSED=NUSED+1 @B@@@@ IF(NUSED .LE. NEMPTY) GO TO 146 @#@@@@NV )@@G@@ CALL ERROR @#@@@@ PRINT 144,NM@G@@@@ 144 FORMAT(' ***** INPNW )@@G@@UT STJBANK DOES NOT CONTAIN ADEQUATE SPACE TO AD@ @@@@ -D VARIABLE 'NX )@@G@@,A6,A2) @#@@@@ GO TO 80 @ @@@@ 146 CALL S1PRST(NM,12,'X') NY )@@G@@@#@@@@ LV=FW+2*LUP @#@@@@ X(LV)=NM(1) @^@@@@ X(LV+1)=NM(2NZ )@@G@@) @^@@@@ IV(J)=NVARS+NUSED @B@@@@ IF(VARIES .EQ. 'VARIES')OA )@@G@@ IV(J)=0 @#@@@@ 150 CONTINUE @^@@@@ 170 BUFSIZ=MAXK*NADD @#@@@@OB )@@G@@ GO TO 80 @]@@@@ 175 RETURN@[@@@@C @ @@@@ 999 CALL S1SERR(OC )@@G@@'S1CKBN.') @]@@@@ RETURN@[@@@@C @[@@@@C @C@@@@C LOOD )@@G@@CAL SUBROUTINE FOR ERROR COUNTING @[@@@@C @^@@@@ SUBROUTINE EOE )@@G@@RROR @#@@@@ NERR=NERR+1 @^@@@@ CALL S1PCHD(1) @]@@@@ OF )@@G@@RETURN@]@@@@ END ___ONTAIN ADEQUATE RESERVED SP@C@@@@ -ACE TOOG )@@G@@ ADD VARIABLE(S) SPECIFIED BY ',2A6)@^@@@@ 80 X(LUSED)=NUSED @]@@@@OH )@@G@@*[S@@@*SDFF*@D@@@@ SUBROUTINE S1SJBD(SCR,LSCR,NERR,CWSP,NEWCW) OI )@@G@@@ @@@@ IMPLICIT INTEGER (A-Z)@D@@@@ DIMENSION TEXT(14),HEAOJ )@@G@@DER(28),SCR(1),CWSP(1) @^@@@@ DIMENSION FMT(4)@^@@@@ COMMOK )@@G@@ON X(1) @F@@@@ LOGICAL ORIGER,NVARER,VNAMER,NSLOTR,TYPEER,MDAOL )@@G@@TAR ,FILECL,@#@@@@ * CONTNU @[@@@@C @F@@@@C ROUTINE TOOM )@@G@@ READ FORWARD IN THE DECK AND GET THE BEGINDATA @G@@@@C CARDS TO RON )@@G@@ETRIEVE THE FILE NAMES AND ELEMENT NAMES OF STJBANK @F@@@@C INPUOO )@@G@@T. CREATES A TAG CALLED 'STJFIL' CONTAINING THE NAMES@E@@@@C ON AOP )@@G@@LL THE CARDS IN THE SAME FORMAT USED BY S1ENST. @G@@@@C IT ALSO CROQ )@@G@@EATES A TAG 'STJBIN' WHICH IS 8 WORDS LONG AND HAS: @A@@@@C 1 - OR )@@G@@NUMBER OF OBSERVATIONS @B@@@@C 2 - NUMBER OF ORIGINAL VARIABLES OS )@@G@@@C@@@@C 3 - NUMBER OF EMPTY (RESERVED) SLOTS. @G@@@@C 4 - OT )@@G@@ZERO, NUMBER OF EMPTY SLOTS USED BY ADDING. SET BY OTHERS @F@@@@C OU )@@G@@ 5 - NUMBER OF OBSERVATIONS PER INPUT BLOCK IN THE BANKS. @E@@@@C OV )@@G@@6 - NON-ZERO IF AN STJBANK IS USED MORE THAN ONCE @E@@@@C 8 - NOOW )@@G@@N-ZERO IF SOME STJBANK IS NOT ASSIGNED WITH X @G@@@@C IT ALSO CROX )@@G@@EATES THE TAG 'FMTLST' WITH THE CRACKED FORMAT, LOOKIN@G@@@@C LIKEOY )@@G@@ ALL VARIABLES START IN COLUMN ONE OF THE FIRST RECORD. @G@@@@C OZ )@@G@@ AND TAG 'VNAMES' WITH THE VARIABLE NAMES, AND SETS TAG 'NVARS' @C@@@@PA )@@G@@C TO THE NUMBER OF VARIABLES IN THE BANKS.@D@@@@C ALL SPECIFPB )@@G@@IED INPUT STJBANKS MUST MATCH ON: @#@@@@C 1 - NVARS @B@@@@C PC )@@G@@ 2 - ORIGINAL NUMBER OF VARIABLES. @A@@@@C 3 - NUMBER OF EMPTY SLPD )@@G@@OTS. @ @@@@C 4 TYPES AND WIDTHS. @C@@@@C 5 - NUMBER OF AVPE )@@G@@AILABLE RESERVED SLOTS. @[@@@@C @G@@@@C DIAGNOSTICS ARE PRODUCPF )@@G@@ED AND PRINTED IMMIDIATELY AFTER INPUT CAR@[@@@@C @[@@@@C @G@@@@PG )@@G@@ ORIGER=.FALSE. @ NO ERRRORS YET IN ORIGINAL NUMBER OF VARIABLES.PH )@@G@@@G@@@@ NVARER=.FALSE. @ NO ERRORS YET IN NUMBER OF INPUT VARIABLEPI )@@G@@S. @C@@@@ VNAMER=.FALSE. @ NO ERRORS YET IN VNAMES@C@@@@ PJ )@@G@@ NSLOTR=.FALSE. @ NOR IN RESERVED SLOTS. @B@@@@ TYPEER=.FALSE. @PK )@@G@@ NOR IN TYPES. @B@@@@ MDATAR=.FALSE. @ NOR IN MDATA @C@@@@PL )@@G@@ CALL S1STFT('STJBIN',FWST,8,1,$999) @^@@@@ X(FWST+5)=PM )@@G@@0 @^@@@@ X(FWST+7)=0 @[@@@@C @C@@@@ SCR(1)=0 @PN )@@G@@ NUMBER OF BEGINDATA CARDS=0 @E@@@@ SCR(2)=0 @ NUMBER OF BANKS OPO )@@G@@N FIRST BEGINDATA CARD=0@F@@@@ FRONT=2 @PP )@@G@@ POINTER TO NFLD AREA. @G@@@@ PTR=3 @ PQ )@@G@@FIRST BANK NAME STARTS IN SCR(@E@@@@ NDATAS=0 PR )@@G@@ @ NO BEGINDATAS YET.@^@@@@ SCR(LSCR)=0 @#@@@@ CN=LPS )@@G@@SCR @E@@@@100 CONTINUE @ START OF LOOP THROUGH BEGINDATA CARDS. PT )@@G@@@C@@@@ CONTNU=.FALSE. @NO CONTINUATION YET @G@@@@ CALLPU )@@G@@ S1LOOK(TEXT,$180) @ ASK S1CCFS FOR NEXT BEGINFATA CARD. @[@@@@C PV )@@G@@@^@@@@ NDATAS=NDATAS+1 @G@@@@ NFLD=0 PW )@@G@@ @ NO FIELDS YET ON BEGINDATA CAR@C@@@@101 CALL S1BUF(TEXT,80,0) PX )@@G@@@ SET UP S1SCAN. @C@@@@ CALL S1OFST(16,$999) @ SKIP 16 COLUMNS. PY )@@G@@@ @@@@ CALL S1SCAN(CHAR,$999)@#@@@@105 CONTINUE @D@@@@ PZ )@@G@@ TYPE=S1SPCT(CHAR) @ GET TYPE OF CHARACTER. @F@@@@ IF(TYPE.EQQA )@@G@@.1.OR.TYPE.EQ.2.OR.TYPE.EQ.7.OR.TYPE.EQ.12) @D@@@@ 1 QB )@@G@@ GO TO 110 @B@@@@ IF(TYPE.EQ.3.AND.CONTNQC )@@G@@U)GO TO 172 @B@@@@ IF(TYPE.NE.4) GO TO 991 @ ILLEGAL @^@@@@C FOUNQD )@@G@@D A PERIOD FIRST. @C@@@@ IF(NFLD.NE.0) GO TO 108 @ FIRST FIELD? QE )@@G@@@]@@@@C YES.@^@@@@ SCR(PTR)='TPF$' @ @@@@ SCR(PTR+1)QF )@@G@@=' ' @C@@@@ GO TO 120 @ READY FOR ELEMENT NAME. @#@@@@QG )@@G@@108 CONTINUE @D@@@@C GOT PERIOD WITH NO FILE, GET LAST FILE NQH )@@G@@AME. @ @@@@ SCR(PTR)=SCR(PTR-4) @ @@@@ SCR(PTR+1)=SCR(PQI )@@G@@TR-3) @C@@@@ GO TO 120 @ READY FOR ELEMENT NAME. @#@@@@110 QJ )@@G@@ CONTINUE @C@@@@C GOT THE FIRST CHARACTER OF A FILE NAME. @G@@@@QK )@@G@@ CALL S1CBUF(SCR(PTR),12)@ SET UP ACCUMULATOR INTO FILENAME AREA.QL )@@G@@@C@@@@111 CONTINUE @ FILE NAME ACCUMULATION LOOP @D@@@@ CALLQM )@@G@@ S1CADD(CHAR,$992) @ ACCUMULATE CHARACTER.@D@@@@ CALL S1SCAN(CHARQN )@@G@@,$140) @ GET NEXT CHARACTER. @F@@@@ TYPE=S1SPCT(CHAR) @ CHAR IS QO )@@G@@TO BE CLASSIFIED AS TO TYPE. @A@@@@C IS IT LEGAL IN FILENAME? QP )@@G@@@F@@@@ IF(TYPE.EQ.1.OR.TYPE.EQ.2.OR.TYPE.EQ.7.OR.TYPE.EQ.12) QQ )@@G@@@D@@@@ 1 GO TO 111 @A@@@@C QR )@@G@@ NO, IS IT LEGAL TERMINATION?@ @@@@ IF(TYPE.EQ.15.OR. @G@@@@QS )@@G@@ 1 TYPE.EQ.3.OR.TYPE.EQ.5) GO TO 150 @ IF SO, IT IS ELEMENT NA QT )@@G@@@F@@@@ IF(TYPE.NE.4) GO TO 991 @ IF NOT PERIOD, YOU LOSE. QU )@@G@@@#@@@@120 CONTINUE @D@@@@C GOT THE FILE, LET'S GET THE ELEMENQV )@@G@@T NAME. @A@@@@ CALL S1CBUF(SCR(PTR+2),12) @D@@@@ CALLQW )@@G@@ S1SCAN(CHAR,$991) @ GET NEXT CHARACTER. @ @@@@ TYPE= S1SPCT(CHAQX )@@G@@R) @F@@@@ IF(TYPE.EQ.1.OR.TYPE.EQ.2.OR.TYPE.EQ.7.OR.TYPE.EQ.12QY )@@G@@) @D@@@@ 1 GO TO 121 @G@@@@QZ )@@G@@ GO TO 991 @ IF IT AIN'T LEGAL IN ELEMENT NAME, IT AIN'T LEGAL HERA )@@G@@@#@@@@121 CONTINUE @C@@@@C ANOTHER CHARACTER OF THE ELEMNT NARB )@@G@@ME. @F@@@@ CALL S1CADD(CHAR,$992) @ ADD T1E CHAR OT ELEMENT NAMRC )@@G@@E. @E@@@@ CALL S1SCAN(CHAR,$160) @ AND GET THE NEXT CHARACTER RD )@@G@@@ @@@@ TYPE=S1SPCT(CHAR) @F@@@@ IF(TYPE.EQ.1.OR.TYPE.ERE )@@G@@Q.2.OR.TYPE.EQ.7.OR.TYPE.EQ.12) @D@@@@ 1 RF )@@G@@ GO TO 121 @#@@@@122 CONTINUE @E@@@@ IF(TYPE.EQRG )@@G@@.3) GO TO 170 @ END OF STRING - BLANK. @A@@@@ IF(TYPE.NE.15)GORH )@@G@@ TO 130 @#@@@@ PTR=PTR+4 @^@@@@ NFLD=NFLD+1 @^@@@@RI )@@G@@ SCR(FRONT)=NFLD @G@@@@ CALL S1LOOK(TEXT,$123) @CONTINUED RJ )@@G@@ON NEXT BEG DAT CARD..GET IT @ @@@@ SCR(CN)=SCR(CN)+1 @E@@@@RK )@@G@@ CONTNU=.TRUE. @WE ARE NOW ON A CONTINUATION CARD @F@@@@ RL )@@G@@ GO TO 101 @ CONTINUE PROCESSING FROM NEXT BEGDAT CARD @D@@@@123 RM )@@G@@ CALL S1PCHD(2) @ NO NEXT BEGDAT CARD-IGNORE IT@#@@@@ PRINT 9123RN )@@G@@@G@@@@9123 FORMAT(' ***** COLON USED AND IGNORED SINCE NO NEXT BEGINDRO )@@G@@ATA ',@^@@@@ 1 'CARD FOUND.') @#@@@@ CN=CN-1 @#@@@@ RP )@@G@@ SCR(CN)=0 @#@@@@ GO TO 180 @E@@@@130 IF(TYPE.NE.5) GO TO 99RQ )@@G@@1 @ IF NOT COMMA YOU LOSE. @G@@@@ PTR=PTR+4 RR )@@G@@ @ READY FOR NEXT ELEEMNT NAME. @D@@@@ NFLD=NFLD+1 RS )@@G@@ @ NEW FIELD. @^@@@@ SCR(FRONT)=NFLD @C@@@@ CALLRT )@@G@@ S1SKIP(CHAR,$991)@GOT NEXT CHAR. @B@@@@ GO TO 105 @ TRY IT AS RU )@@G@@FILE NAME. @[@@@@C @#@@@@140 CONTINUE @D@@@@C END OF CARRV )@@G@@D IN FIRST NAME (ELT SPEC ONLY) @#@@@@ TYPE=3 @#@@@@150 RW )@@G@@ CONTINUE @D@@@@C COMMA,COLON OR BLANK AFTER ELEMENT NAME ONLY. RX )@@G@@@E@@@@ SCR(PTR+2)=SCR(PTR) @ FILENAME IS TPF$ @G@@@@RY )@@G@@ SCR(PTR+3)=SCR(PTR+1) @ AND ELEMENT NAME IS FILENAME. RZ )@@G@@@^@@@@ SCR(PTR)='TPF$' @^@@@@ SCR(PTR+1)=' '@A@@@@ SA )@@G@@ GO TO 122 @ END OF FILED. @#@@@@160 CONTINUE @B@@@@C END SB )@@G@@OF CARD AFTER ELEMENT NAME. @ @@@@ TYPE=3 @ ASSUME BLANK.@#@@@@SC )@@G@@170 CONTINUE @A@@@@C BLANK AFTER ELEMENT NAME. @#@@@@ SD )@@G@@ PTR=PTR+4 @^@@@@ NFLD=NFLD+1 @^@@@@ SCR(FRONT)=NFLD SE )@@G@@@#@@@@172 FRONT=PTR @F@@@@ PTR=PTR+1 @SF )@@G@@ SPACE FOR NFLD AREA @E@@@@ SCR(FRONT)=0 @ SG )@@G@@NO FIELDS YET. @#@@@@ CN=CN-1 @#@@@@ SCR(CN)=0 @G@@@@SH )@@G@@ GO TO 100 @ GET NEXT BEGINDATA CARD. SI )@@G@@@#@@@@180 CONTINUE @D@@@@C DONE WITH THE TEXT OF THE BEGINDATSJ )@@G@@A CARDS. @A@@@@ IF(NDATAS.EQ.0) GO TO 993 @B@@@@ IF(PSK )@@G@@TR.EQ.3) RETURN @ NO NAMES. @#@@@@ PTR=PTR-1 @#@@@@ CN=CSL )@@G@@N+1 @ @@@@ IF(CN.LT.PTR)GO TO 999@^@@@@ M=LSCR-CN+1 SM )@@G@@@C@@@@ CALL S1STFT('BGCN',FWCN,1,M+1,$999) @#@@@@ X(FWSN )@@G@@CN)=1 @^@@@@ DO 189 I=1,M @A@@@@ X(FWCN+I)=SCR(LSCR-I+1SO )@@G@@) @#@@@@ 189 CONTINUE @^@@@@ SCR(1)=NDATAS @G@@@@ SP )@@G@@ CALL S1STFT('STJFIL',FWFN,1,PTR,$999) @ PLACE TO STORE THESE. @C@@@@SQ )@@G@@C MOVE FILE NAMES INTO TAGGED STORAGE. @^@@@@ DO 190 I=1SR )@@G@@,PTR @ @@@@ X(FWFN+I-1)=SCR(I) @#@@@@190 CONTINUE @^@@@@SS )@@G@@ NDATAS=X(FWFN) @#@@@@ PTR=FWFN+1@ @@@@ DO 230 NI=ST )@@G@@1,NDATAS @^@@@@ NFLD=X(PTR) @#@@@@ PTR=PTR+1 @#@@@@SU )@@G@@ NOBTOT=0 @^@@@@ DO 220 NJ=1,NFLD@[@@@@C @G@@@@C SV )@@G@@ LOOP THROUGH ALL STJBANKS, CREATINF TAGS AND CHECKING MATCHES. @[@@@@SW )@@G@@C @^@@@@ FILECL=.FALSE. @D@@@@ CALL S1CKBA(X(PTR),$249,SX )@@G@@'IN',X(FWFN),XUSED) @E@@@@ IF(X(FWST+7) .EQ. 0 .AND. XUSED .NSY )@@G@@E. 0) X(FWST+7)=1 @E@@@@ CALL S1SJIT(X(PTR),X(PTR+2),FILECD,HEADESZ )@@G@@R,$249) @^@@@@ FILECL=.TRUE. @^@@@@C FILE IS OPEN TA )@@G@@@B@@@@ IF(NJ.NE.NI.OR.NI.NE.1) GO TO 210 @A@@@@C FIRST ONLYTB )@@G@@ INITIALIZATION. @^@@@@C SET UP STJBIN @A@@@@ X(FWST)=HETC )@@G@@ADER(3) @ OBS @^@@@@ NOBTOT=HEADER(3) @E@@@@ X(FWST+1)=TD )@@G@@HEADER(5) @ NUMBER OF ORIGINAL VARIABLES. @D@@@@ X(FWST+2)=HEADERTE )@@G@@(4) @ NUMBER OF EMPTY SLOTS @D@@@@ X(FWST+3)=0 @ EMPTY SLOTS USTF )@@G@@ED. SET BY OTHERS.@F@@@@ X(FWST+4)=HEADER(23) @ K - NUMBER OF OBSTG )@@G@@ PER INPUT BLOCK. @[@@@@C @ @@@@C SET UP FIRST DATA SET LABEL @C@@@@TH )@@G@@C THE DATA SET LABELS DO NOT NEED TO MATCH. @B@@@@ CALL S1STFTI )@@G@@T('FSTDSL',FW,1,11,$999)@^@@@@ DO 181 I=1,11 @A@@@@ X(FWTJ )@@G@@+I-1) = HEADER(7+I) @#@@@@181 CONTINUE @C@@@@ CALL S1GTATK )@@G@@G('NVARS',FWNV,NEL,NEL,$999) @#@@@@ MDATA=0 @B@@@@ IF(HTL )@@G@@EADER(25).EQ.0) GO TO 184 @#@@@@ MDATA=1 @C@@@@ CALLTM )@@G@@ S1GTAG('MDATA',FWM,DUM,DUM,$182) @#@@@@ GO TO 184 @#@@@@182 TN )@@G@@ CONTINUE @C@@@@ CALL S1GVAL('CCPFG',CCPFG,$999,$999) @F@@[@TO )@@G@@ IF(CCPFG.EQ.9.OR.CCPFG.EQ.20.OR.CCPFG.EQ.10)GO TO 184 @A@@[@TP )@@G@@ IF(CCPFG.EQ.21)GO TO 184 @B[@@@ CALL S1STFT('MDATA',FWTQ )@@G@@M,1,1,$999) @A@@@@ X(FWM)=1 @ MISSING DATA @A@@@@ IF(NTR )@@G@@EWCW.EQ.0) GO TO 185 @#@@@@ MPTR=1 @#@@@@183 CONTINUE TS )@@G@@@C@@@@ IF(CWSP(MPTR).EQ.'MDATA') GO TO 184 @^@@@@ MPTRTT )@@G@@=MPTR+6 @B@@@@ IF(CWSP(MPTR-1).NE.0) MPTR=MPTR+4 @^@@@@ TU )@@G@@ NEWCW=NEWCW-1 @A@@@@ IF(NEWCW.GT.0) GO TO 183 @#@@@@185 TV )@@G@@ CONTINUE @ @@@@ CALL S1SJER(X(FWFN)) @^@@@@ CALL S1PCHTW )@@G@@D(2) @#@@@@ PRINT 1851@G@@@@1851 FORMAT(' ***** WARNING: THE TX )@@G@@INPUT STJBANK WAS CREATED WITH ' @G@@@@ 1 ,'MISSING DATA. THIS PTY )@@G@@ROGRAM DOES NOT HANDLE MISSING DATA.'/ @E@@@@ 2 ' ***** MISSING TZ )@@G@@VALUES WILL BE TREATED AS ZERO.') @#@@@@184 CONTINUE @A@@@@ UA )@@G@@ X(FWNV)=HEADER(2) @ NVARS @^@@@@ NVARS=X(FWNV) @@@@@@@D@@@@UB )@@G@@ P=NVARS+X(FWST+2) @ TOTAL NUMBER OF SLOTS @F@@@@ CALLUC )@@G@@ S1STFT('VNAMES',FWVN,2,P,$999) @ CREATE VNAMES ARRAY @F@@@@ CALLUD )@@G@@ S1STFT('FMTLST',FWFM,2,P,$999) @ AND FORMAT AREA. @^@@@@ J=(NUE )@@G@@VARS*2)-1 @ @@@@ K=(P-NVARS*2)+J-1 @^@@@@ DO 1841 I=UF )@@G@@J,K @^@@@@ X(FWVN+I)=0 @#@@@@1841 CONTINUE @]@@@@ UG )@@G@@ K=1 @#@@@@ J=NVARS @A@@@@ IF(J*14.LT.LSCR) GO TO 186 UH )@@G@@@#@@@@ D=LSCR/14 @#@@@@ J=K+D-1 @#@@@@186 CONTINUE UI )@@G@@@B@@@@ CALL S1SJLD(FILECD,K,J,SCR,$250) @^@@@@ DO 200 I=KUJ )@@G@@,J @^@@@@ IPTR=(I-K)*14 @^@@@@ FPTR=(I-1)*2 @C@@@@UK )@@G@@ X(FWVN+FPTR)=SCR(1+IPTR+1) @ VNAME1 @C@@@@ X(FWVN+FPTUL )@@G@@R+1)=SCR(1+IPTR+2)@VNAME2 @A@@@@ FLD(0,18,X(FWFM+FPTR))=1 UM )@@G@@@A@@@@ FLD(18,18,X(FWFM+FPTR ))=1 @A@@@@ FLD(24,12,X(FWFMUN )@@G@@+FPTR+1))=0 @D@@@@ IF(SCR(1+IPTR).NE.0) GO TO 195 @ ALPHANUMERIC?UO )@@G@@@#@@@@C NUMERIC @A@@@@ FLD(0,18,X(FWFM+FPTR+1))=8 @A@@@@UP )@@G@@ FLD(18,6,X(FWFM+FPTR+1))=3 @#@@@@ GO TO 199 @[@@@@C UQ )@@G@@@#@@@@195 CONTINUE @^@@@@C ALPHANUMERIC @C@@@@ FLD(UR )@@G@@0,18,X(FWFM+FPTR+1))=SCR(1+IPTR) @A@@@@ FLD(18,6,X(FWFM+FPTR+1US )@@G@@))=6 @[@@@@C @#@@@@199 CONTINUE @#@@@@200 CONTINUE @A@@@@UT )@@G@@ IF(J.EQ.NVARS) GO TO 187 @#@@@@ K=J+1 @ @@@@ UU )@@G@@ J=MIN(NVARS,K+D-1) @#@@@@ GO TO 186 @#@@@@187 CONTINUE UV )@@G@@@#@@@@ GO TO 219 @ @@@@C NOT THE FIRST PASS @#@@@@210 UW )@@G@@ CONTINUE @ @@@@ NOBTOT=NOBTOT+HEADER(3) @C@@@@ IF(X(FWST+UX )@@G@@1).EQ.HEADER(5)) GO TO 211 @D@@@@C NUMBER OF ORIGINAL VARIABLESUY )@@G@@ DOES NOT MATCH. @ @@@@ IF(ORIGER) GO TO 211 @B@@@@C ONLYUZ )@@G@@ PRINT EACH MESSAGE ONCE. @ @@@@ CALL S1SJER(X(FWFN)) @^@@@@VA )@@G@@ CALL S1PCHD(1) @#@@@@ PRINT 2100@G@@@@2100 FORMAT(' *VB )@@G@@**** NUMBER OF ORIGINAL VARIABLES IN STJBANK IS NOT' @C@@@@ 1,' IDEVC )@@G@@NTICAL FOR ALL INPUT STJBANKS') @^@@@@ NERR=NERR+1 @^@@@@VD )@@G@@ ORIGER=.TRUE. @#@@@@211 CONTINUE @C@@@@ IF(X(FWST+VE )@@G@@2).EQ.HEADER(4)) GO TO 212 @C@@@@C NUMBER OF RESERVED SLOTS DO VF )@@G@@NOT MATCH. @ @@@@ IF(NSLOTR) GO TO 212 @ @@@@ CALL S1SJEVG )@@G@@R(X(FWFN)) @^@@@@ CALL S1PCHD(1) @#@@@@ PRINT 2110@G@@@@VH )@@G@@2110 FORMAT(' ***** NUMBER OF AVAILABLE SLOTS IN STJBANK IS NOT ', VI )@@G@@@B@@@@ 1 'IDENTICAL IN ALL INPUT STJBANKS') @^@@@@ NERR=NERR+VJ )@@G@@1 @^@@@@ NSLOTR=.TRUE. @#@@@@212 CONTINUE @B@@@@ VK )@@G@@ IF(X(FWNV).EQ.HEADER(2)) GO TO 213@ @@@@C NVARS NOT MATCHED. VL )@@G@@@G@@@@ X(FWNV)=MAX(X(FWNV),HEADER(2)) @ SET TO LARGEST VALUE FOR VM )@@G@@CC CHE@ @@@@ IF(NVARER) GO TO 213 @ @@@@ CALL S1SJER(X(FWVN )@@G@@FN)) @^@@@@ CALL S1PCHD(1) @#@@@@ PRINT 2120@G@@@@2120 VO )@@G@@ FORMAT(' ***** NUMBER OF VARIABLES IN STJBANK IS NOT IDENTICAL I@ @@@@VP )@@G@@ 1N ALL INPUT STJBANKS.') @^@@@@ NERR=NERR+1 @^@@@@ VQ )@@G@@ NVARER=.TRUE. @#@@@@213 CONTINUE @]@@@@ K=1 @#@@@@ VR )@@G@@ J=NVARS @A@@@@ IF(J*14.LT.LSCR) GO TO 2131 @#@@@@ D=LSVS )@@G@@CR/14 @#@@@@ J=K+D-1 @#@@@@2131 CONTINUE @C@@@@ CALLVT )@@G@@ S1SJLD(FILECD,K,J ,SCR,$250) @^@@@@ DO 216 I=K,J @^@@@@VU )@@G@@ IPTR=(I-K)*14 @^@@@@ FPTR=(I-1)*2 @F@@@@ IF(XVV )@@G@@(FWVN+FPTR).EQ.SCR(1+IPTR+1).AND.X(FWVN+FPTR+1).EQ. @A@@@@ 1 SCVW )@@G@@R(1+IPTR+2)) GO TO 214 @ @@@@ IF(VNAMER) GO TO 214 @ @@@@ VX )@@G@@ CALL S1SJER(X(FWFN)) @^@@@@ CALL S1PCHD(1) @#@@@@ PRINVY )@@G@@T 2130@G@@@@2130 FORMAT(' ***** VARIABLE NAMES FOR ALL VARIABLES DO NVZ )@@G@@OT MATCH ', @A@@@@ 1 'FOR ALL INPUT STJBANKS.') @^@@@@ NERRWA )@@G@@=NERR+1 @^@@@@ VNAMER=.TRUE. @#@@@@214 CONTINUE @G@@@@WB )@@G@@ IF(SCR(1+IPTR).EQ.0.AND.FLD(18,6,X(FWFM+FPTR+1)).EQ.3) GO TO 215WC )@@G@@@G@@@@ IF(SCR(1+IPTR).NE.0.AND.FLD(0,18,X(FWFM+FPTR+1)).EQ. SCR(1WD )@@G@@+IPTR)@ @@@@ 1 )GO TO 215 @G@@@@ IF(SCR(1+IPTR).NWE )@@G@@E.0.AND.FLD(18,6,X(FWFM+FPTR+1)).EQ.6)GO TO 215 @ @@@@ IF(TYPEER)WF )@@G@@ GO TO 215 @ @@@@ CALL S1SJER(X(FWFN)) @^@@@@ CALL S1PCHWG )@@G@@D(1) @#@@@@ PRINT 2140@G@@@@2140 FORMAT(' ***** TYPES OF ALL WH )@@G@@VARIABLES DO NOT MATCH FOR ALL INPUT@#@@@@ 1 STJBANKS.')@^@@@@ WI )@@G@@ NERR=NERR+1 @^@@@@ TYPEER=.TRUE. @#@@@@215 CONTINUE WJ )@@G@@@#@@@@216 CONTINUE @A@@@@ IF(J.EQ.NVARS) GO TO 217 @#@@@@WK )@@G@@ K=J+1 @ @@@@ J=MIN(NVARS,K+D-1) @#@@@@ GO TWL )@@G@@O 2131@#@@@@217 CONTINUE @B@@@@ IF(MDATA.EQ.HEADER(25)) GO TWM )@@G@@O 218 @^@@@@C MDATA DOES NOT MATCH @ @@@@ IF(MDATAR) GO TO 218 WN )@@G@@@ @@@@ CALL S1SJER(X(FWFN)) @^@@@@ CALL S1PCHD(1) @#@@@@WO )@@G@@ PRINT 2170@G@@@@2170 FORMAT(' ***** SOME BUT NOT ALL INPUT STWP )@@G@@JBANKS HAVE MISSING ', @^@@@@ 1 'DATA.') @^@@@@ NERRWQ )@@G@@=NERR+1 @^@@@@ MDATAR=.TRUE. @#@@@@218 CONTINUE @[@@@@WR )@@G@@C @#@@@@ GO TO 219 @#@@@@249 CONTINUE @^@@@@ NERRWS )@@G@@=NERR+1 @#@@@@250 CONTINUE @[@@@@C @#@@@@219 CONTINUE WT )@@G@@@ @@@@C DONE WITH AN STJBANK. @E@@@@ IF(FILECL)CALL S1SJIC(WU )@@G@@FILECD,$999) @ CLOSE THE FILE @#@@@@ PTR=PTR+4 @#@@@@220 CONTWV )@@G@@INUE @A@@@@ X(FWST)=MAX(X(FWST),NOBTOT) @B@@@@C DONE WITH WW )@@G@@ONE BEGINDATA CARD. @#@@@@230 CONTINUE @ @@@@C DONE WITH WX )@@G@@ALL STJBANKS@E@@@@ IF(ORIGER.OR.NSLOTR.OR.NVARER.OR.TYPEER)X(FWSTWY )@@G@@+6)=1 @^@@@@ K=HEADER(23) @D@@@@ CALL S1STRS('BUFFER',10,WZ )@@G@@(K*NVARS+9)/10,$999) @[@@@@C @A@@@@C CHECK FOR DUPLICATE BAXA )@@G@@NKS @[@@@@C @^@@@@ NDATAS=X(FWFN) @#@@@@ PTR=FWFN+1XB )@@G@@@ @@@@ DO 330 NI=1,NDATAS @^@@@@ NFLD=X(PTR) @#@@@@XC )@@G@@ PTR=PTR+1 @^@@@@ DO 320 NJ=1,NFLD@[@@@@C @[@@@@C XD )@@G@@@#@@@@ KPTR=PTR+4@A@@@@ IF(NJ.EQ.NFLD) GO TO 310 @#@@@@XE )@@G@@ K=NJ+1 @^@@@@ DO 307 J=K,NFLD @^@@@@ DO 305 II=XF )@@G@@0,3 @C@@@@ IF(X(PTR+II).NE.X(KPTR+II)) GO TO 306 @#@@@@305 XG )@@G@@ CONTINUE @A@@@@ X(FWST+5)=1 @ DUP FOUND @#@@@@306 CONTXH )@@G@@INUE @^@@@@ KPTR=KPTR+4 @#@@@@307 CONTINUE @#@@@@310 XI )@@G@@ CONTINUE @A@@@@ IF(NI.EQ.NDATAS) GO TO 319 @#@@@@ IJ=NXJ )@@G@@I+1 @ @@@@ DO 315 J=IJ,NDATAS @^@@@@ KFLD=X(KPTR) XK )@@G@@@^@@@@ KPTR=KPTR+1 @^@@@@ DO 314 I=1,KFLD @^@@@@ XL )@@G@@ DO 312 II=0,3 @C@@@@ IF(X(PTR+II).NE.X(KPTR+II))GO TO 313 XM )@@G@@@#@@@@312 CONTINUE @A@@@@ X(FWST+5)=1 @ DUP FOUND @#@@@@XN )@@G@@313 CONTINUE @^@@@@ KPTR=KPTR+4 @#@@@@314 CONTINUE XO )@@G@@@#@@@@315 CONTINUE @#@@@@319 CONTINUE @#@@@@ PTR=PTR+4 XP )@@G@@@#@@@@320 CONTINUE @#@@@@330 CONTINUE @#@@@@ RETURN XQ )@@G@@@[@@@@C @[@@@@C @#@@@@991 CONTINUE @^@@@@ CALL S1PCHXR )@@G@@D(3) @A@@@@ PRINT 9910,(TEXT(I),I=1,14) @F@@@@9910 FORMAT(' *XS )@@G@@**** ILLEGAL SPECIAL CHARACTER USAGE ON THIS', @D@@@@ 1 ' BEGINDXT )@@G@@ATA CARD:'/' *****',1X,13A6,A2) @#@@@@9911 CONTINUE @^@@@@ XU )@@G@@ CALL S1WHR(COL) @#@@@@ COL=COL+7 @ @@@@ ENCODE(FMT,9912)XV )@@G@@COL @B@@@@9912 FORMAT('(6H *****,T',I3,',1H*)') @#@@@@ PRINXW )@@G@@T FMT @^@@@@ NERR=NERR+1 @#@@@@ GOTO 170 @#@@@@992 XX )@@G@@ CONTINUE @^@@@@ CALL S1PCHD(3) @A@@@@ PRINT 9920,(TEXTXY )@@G@@(I),I=1,14) @G@@@@9920 FORMAT(' ***** TOO MANY CHARACTERS IN FILE OR XZ )@@G@@ELEMENT NAME ' @D@@@@ 1 ,'ON THIS BEGINDATA CARD:'/' ***** ',13A6YA )@@G@@,A2) @#@@@@ GO TO 9911@#@@@@993 CONTINUE @^@@@@ CALLYB )@@G@@ S1PCHD(1) @#@@@@ PRINT 9930@G@@@@9930 FORMAT(' ***** NO BEGIYC )@@G@@NDATA CARD FOUND. NUMBER AND TYPES OF ', @ @@@@ 1 'VARIABLES UNKNYD )@@G@@OWN.')@^@@@@ NERR=NERR+1 @#@@@@ RETURN @#@@@@999 YE )@@G@@ CONTINUE @ @@@@ CALL S1SERR('S1SJBD') @]@@@@ END ___ YF )@@G@@ IF(FILECL)CALL S1SJIC(FILECD,$999) @ CLOSE THE FILE @#@@@@ PTR=YG )@@G@@*[@@@@*SDFF*@ @@@@ SUBROUTINE S1ZFMT(MODE) @ @@@@ IMPLICIT INTYH )@@G@@EGER (A-Z) @ @@@@ COMMON/S1ZZZZ/CB(500) @ @@@@ COMMON/S1ZYI )@@G@@XXZ/LINO @F@@@@ COMMON /S1CNTL / DEMAND,PAPERS,LINENO,PAGENO,CYJ )@@G@@CLIST,RECLST@C@@[@ EQUIVALENCE(STMTLC,CB(77)),(ERRSW,CB(76)) @^[@@@YK )@@G@@ DATA STMTLC/1/ @#@@@@ INTEGER CHAR@#@@@@ FIRST=STMTLCYL )@@G@@@^@@@@ CALL S1WHR(LAST) @#@@@@ STMTLC=0 @A@@@@ IF(MODYM )@@G@@E.EQ.0) STMTLC=LAST @#@@@@ LAST=LAST-1 @ @@[@ IF(MODE.EQ.0YN )@@G@@)ERRSW=0 @ @@@@ IF(FIRST.EQ.0) RETURN @ @@@@ IF(LAST.LE.FYO )@@G@@IRST) RETURN@ @@@@ CALL S1BACK(FIRST,$9) @^@@@@ CALL DUMPST(YP )@@G@@0) @]@@@@ BSW=0 @^@@@@ DO 1 I=FIRST,LAST @ @@@@ CALL SYQ )@@G@@1SCAN(CHAR,$9) @B@@@@ IF(BSW.EQ.0.AND.CHAR.EQ.' ') GOTO 1 @]@@@@YR )@@G@@ BSW=1 @^@@@@ CALL DUMPST(CHAR) @#@@@@1 CONTINUE @^@@@@YS )@@G@@ CALL DUMPST(1) @]@@@@11 RETURN@#@@@@9 CB(4)=25 @]@@@@YT )@@G@@ RETURN@ @@@@ SUBROUTINE DUMPST(CHAR) @[@@@@C @^@@@@C*****YU )@@G@@************* @[@@@@C @ @@@@ IMPLICIT INTEGER(A-Z) @^@@@@YV )@@G@@ DIMENSION LINE(18)@A@@@@ DATA (LINE(I),I=1,18)/18*' '/ @#@@@@YW )@@G@@ DATA LINO/0/@A@@@@91 FORMAT(18X,I3,3H: ,18A6) @#@@@@ YX )@@G@@ INTEGER I @ @@@@ IF(CHAR.EQ.0) GOTO 21 @ @@@@ IF(CHAR.EQ.1YY )@@G@@) GOTO 22 @A@@@@ IF(CPTR.LT.18*6)GO TO 12 @A@@@@ IF(CYZ )@@G@@CLIST.EQ.0) GO TO 13 @^@@@@ CALL S1PCHD(1) @B@@@@ PRINT ZA )@@G@@91, LINO, (LINE(I), I=1,18) @#@@@@ DO 11 I=1,18@#@@@@11 LINE(IZB )@@G@@)=' ' @#@@@@13 CONTINUE @#@@@@ CPTR=0 @#@@@@12 COZC )@@G@@NTINUE@^@@@@ CPTR=CPTR+1 @B@@@@ CALL S1PRST(LINE(1),ZD )@@G@@CPTR,CHAR) @]@@@@ RETURN@#@@@@21 CONTINUE@#@@@@ CPZE )@@G@@TR=0 @#@@@@ LINO=LINO+1 @^@@@@ DO 211 I=1,18 @#@@@@211 ZF )@@G@@LINE(I)=' ' @]@@@@ RETURN@#@@@@22 CONTINUE @ @@@@ CALLZG )@@G@@ S1WHR(ITEMP) @A@@@@ CALL S1SCAN(TCHAR,$23) @ @@@@ ZH )@@G@@ CALL S1BACK(ITEMP,$92)@A@@@@ IF(TCHAR.NE.'$')GO TO 23 @D@@@@ZI )@@G@@C LAST STATEMNT SHOULDNT'T HAVE TRAILING COMMA@B@@@@ CAZJ )@@G@@LL S1PRST(LINE(1),CPTR,' ') @#@@@@23 CONTINUE@ @@@@ IF(CCLZK )@@G@@IST.EQ.0) GO TO 24@^@@@@ CALL S1PCHD(1) @B@@@@ PRINT 91,LZL )@@G@@INO,(LINE(I),I=1,18) @#@@@@24 CONTINUE @]@@@@ RETURN@C@@@@ZM )@@G@@92 CALL S1SERR('S1ZFMT. S1SCAN PROBLEM.') @]@@@@ END ___@@@ZN )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZO )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZP )@@G@@*[@@@@*SDFF*@^@@@@ COMPILER (FLD=T)@C@@@@ INTEGER FUNCTION SZQ )@@G@@1ZST(TT,MAXT,VVV,TTT) @[@@@@C @ @@@@ IMPLICIT INTEGER (A-Z) ZR )@@G@@@G@@@@ COMMON/S1ZZZZ/ VOID1(35), HIGH, LOW, VOID2(57), LOOP(6), QZQZS )@@G@@(400) @^@@@@ COMMON TAG(100) @^@@@@ COMMON/S1ZXXZ/LINO@ @@@@ZT )@@G@@ COMMON/S1ZJDY/NIODR @B@@@@ EQUIVALENCE(TSTFLG,VOID2(28)ZU )@@G@@) @A@@@@ EQUIVALENCE(VNAMES,VOID2(29)) @A@@@@ EQUIVALENCE(ZV )@@G@@TVNAME,VOID2(31)) @A@@@@ EQUIVALENCE (ERRSW,VOID2(39)) @^@@@@ ZW )@@G@@DIMENSION TT(10) @ @@@@ DIMENSION KEY(2) @A@@@@ DEFINEZX )@@G@@ RESULT=S1ZST @ @@@@ DEFINE T(X)=TT(X) @A@@@@ ZY )@@G@@DEFINE MAJOR(X)=FLD(0,12,X)@B@@@@ DEFINE MINOR(X)=FLD(12,12,XZZ )@@G@@) @A@@@@ DEFINE ADDR(X)=FLD(24,12,X)@A@@@@ DEFINE FLAG(AA )@@G@@X)=FLD(0,6,X) @A@@@@ DEFINE XVAL(X)=FLD(6,12,X) @A@@@@ AB )@@G@@DEFINE KIND(X)=FLD(18,3,X) @A@@@@ DEFINE SPACE(X)=FLD(21,3,X) AC )@@G@@@B@@@@ DEFINE LOCATE(X)=S1ZOOM(X,TT,LOW,3) @D@@@@ DEFINE AD )@@G@@ NAME(X)=S1ZMKN(6HSOURCE,T(X),0) @B@@@@ DEFINE SYMBOL(X)=TAE )@@G@@(T(X+2)) @C@@@@ DEFINE SLINKS(X)=T(ADDR(T(X+2))+2) @^@@@@AF )@@G@@ DEFINE SLACK=6 @B@@@@ DEFINE RANK(X)=FLD(33,3,T(X+1)) AG )@@G@@@B@@@@ DEFINE EXPL(X)=FLD(32,1,T(X+1)) @B@@@@ DEFINE IMPAH )@@G@@L(X)=FLD(31,1,T(X+1)) @ @@@@C SYMBOL TABLE FORMAT @[@@@@C AI )@@G@@@G@@@@C THERE ARE TWO AREAS OF THE SYMBOL TABLE, THE LOW AND THEAJ )@@G@@ HIGH.@G@@@@C THE LOW ADDRESSES, FROM 1 TO *LOW*, ARE 3 WORD ENTAK )@@G@@RIES OF DESC@G@@@@C RIPTORS, AND THE HIGH ADDRESSES (FROM *HIGH*AL )@@G@@ TO *TOP*) ARE THE@B@@@@C NAME ENTRIES. (ALSO 3 WORDS) @[@@@@AM )@@G@@C @^@@@@C LOW ENTRIES: @[@@@@C @A@@@@C WORD 1 IAN )@@G@@S A DESCRIPTOR. @G@@@@C BITS 0-5 - FLAG - SIGN OF CAO )@@G@@ONSTANT IN SUBSCRIPT. @C@@@@C 1=AP )@@G@@-, 0=+@G@@@@C BITS 6-17 - XVAL - CONSTANT MAGNITUDE FOAQ )@@G@@R SUBSCRIPT @D@@@@C BITS 18-20 - KIND - TYPE OF VALUE.AR )@@G@@@F@@@@C 0=FLOATING POINT NUMBER. AS )@@G@@@E@@@@C 1=INTEGER NUMBER @B@@@@AT )@@G@@C 2=@E@@@@C AU )@@G@@ 3=ALPHABETIC NUMBER @E@@@@C AV )@@G@@ 7=UNKNOWN TYPE. @G@@@@C BITS 21-23 - SPAAW )@@G@@CE - LOCATION OR TYPE OF VARIABLE. @F@@@@C AX )@@G@@ 0=V - INPUT VARIABLE. @F@@@@C AY )@@G@@ 1=TV - OUTPUT VARIABLE. @D@@@@C AZ )@@G@@ 2=CONSTANT @E@@@@C 3=BA )@@G@@RESULT LOCATIONS @G@@@@C 4=INTERNBB )@@G@@AL TEMPORARY VARIABLE @E@@@@C 5=BC )@@G@@TABLE FOR RECODE. @G@@@@C 6=J ARRABD )@@G@@Y( PARAMETER TO SUBROUTI@[@@@@C @G@@@@C BITS 24-35BE )@@G@@ - ADDR - DISPLACEMENT, PART OF REFERENCE @[@@@@C @A@@@@C WOBF )@@G@@RD 2 IS A FLAG WORD @C@@@@C 0=UNDEFINED, 1=DEFINEDBG )@@G@@. @I@@@@C EXPL , BIT 32 =1, EXPLICITLY NAMES, =0BH )@@G@@, NOT EXPLICITLY NAM @G@@@@C WORD3 IS A POINTER TO THE HIGH EBI )@@G@@NTRY FOR THIS LOW ENTRY, BITS @B@@@@C 18-35. UPPER HALF IS UNUSEBJ )@@G@@D. @[@@@@C @^@@@@C HIGH ENTRY: @[@@@@C @G@@@@C BK )@@G@@ WORDS 1-2 ARE THE TWELVE CHARACTER FIELDATA NAME OF THE VARIAB@G@@@@BL )@@G@@C OR THE VALUE OF THE CONSTANT IN THE FIRST WORD, AND BM )@@G@@@C@@@@C THE SECOND WORD IS ZERO. @G@@@@C WOBN )@@G@@RD 3 IS THE POINTER TO THE LOW ENTRY FOR THIS HIGH ENTRY. @G@@@@C BO )@@G@@ IF BITS 0-11 ARE NON-ZERO THIS IS A OPERATOR ENTRY, @ @@@@BP )@@G@@C SEE BELOW.@[@@@@C @A@@@@C OPERATOR ENTRYBQ )@@G@@ LOW AREA. @#@@@@C WORD 1 :@F@@@@C BITS 0-11 BR )@@G@@- FIRST OPERATOR CATEGORY NUMBER. @F@@@@C BITS 12-23BS )@@G@@ - SECOND OPERATOR CATEGORY NUMBER. @D@@@@C BITS 24-35BT )@@G@@ - PRECEDENCE TABLE 1 @B@@@@C WORD 2 - PRECEDENCE TABLE 2. BU )@@G@@@E@@@@C WORD 3 - POINTER TO HIGH AREA. LOWER 18 BITS. @[@@@@BV )@@G@@C @A@@@@C OPERATOR ENTRY HIGH AREA. @[@@@@C @B@@@@C BW )@@G@@ WORDS 1-2 SYMBOL FOR A OPERATOR.@E@@@@C WORD 3 - BITS 0-1BX )@@G@@1 POINTER TO LOW AREA ENTRY. @B@@@@C BITS 12-35 UNUSEBY )@@G@@D. @[@@@@C @B@@@@C RECODE TABLE NAME ENTRY FORMAT @#@@@@BZ )@@G@@C LOW ENTRY @ @@@@C WORD 1. @B@@@@C CA )@@G@@ BITS 0-17 - UNUSED. @F@@@@C BITS 18-20, P, 0CB )@@G@@=NTON,1=NTOA,2=ATON,3=ATOA. @D@@@@C BITS 21-23, 5, TCC )@@G@@ABLE NAME ENTRY. @G@@@@C BITS 24-35, TABLEX, SEQUENTICD )@@G@@AL NUMBER OF THIS TABLE.@ @@@@C WORD 2. @F@@@@C CE )@@G@@ BITS 0-17 - STATMENT NUMBER THAT TABLE WAS IN.@H@@@@C CF )@@G@@ BITS 18-35, LOC- CHARACTER NUMBER OF STATEMENT START. CG )@@G@@@G@@@@C POINTS AT CHAR AFTER SLASHCH )@@G@@. @C@@@@C WORD3 POINTS AT HIGH ENTRY. @#@@@@C CI )@@G@@ HIGH ENTRY@G@@@@C WORDS 1-2, TABLE NAME OR .TABLEX WCJ )@@G@@HERE X IS NUMBER. @C@@@@C WORD 3, POINTS AT LOW ENTRY CK )@@G@@@#@@@@ VARS=VVV @#@@@@ TVARS=TTT @]@@@@ LOW=-2@#@@@@CL )@@G@@ TOP=MAXT @#@@@@ HIGH=TOP+1 @^@@@@ DO 91 I=1,TOP CM )@@G@@@]@@@@91 T(I)=0@#@@@@ RESULT=0 @]@@@@ RETURN@^@@@@ CN )@@G@@ENTRY S1ZQQQ(QQQ) @[@@@@C @^@@@@C****************** @[@@@@C CO )@@G@@@D@@@@C PASS EXTRA SPACE IN SYMBOL TABLE TO S1ZLOP. @[@@@@C CP )@@G@@@A@@@@ IF(TSTFLG.EQ.2) CALL DUMP @B@@@@ CALL S1ZLOP(TT(LOWCQ )@@G@@+3),TOP-LOW-3) @#@@@@ RESULT=QQQ @]@@@@ RETURN@ @@@@ CR )@@G@@ENTRY S1ZSYM(SW,A,B,C,D)@[@@@@C @^@@@@C****************** @[@@@@CS )@@G@@C @ @@@@ GOTO(11,12,13,14,15),SW @B@@@@C ... LOOKUP A SOURCE NACT )@@G@@ME IN THE TABLE @[@@@@C @#@@@@11 CONTINUE@#@@@@ KECU )@@G@@Y(1)=A@#@@@@ KEY(2)=B@G@@@@ RESULT=S1SRCH(T(HIGH),(TOPCV )@@G@@-HIGH+1)/3,3,2,KEY,$110)+HIGH-1 @^@@@@ GO TO 111 @#@@@@CW )@@G@@110 CONTINUE @#@@@@ RESULT=0 @]@@@@ RETURN@#@@@@111 CX )@@G@@ CONTINUE @E@@@@C IF NAME IS TVNAME MAKE SURE IT POINTS AT TV CY )@@G@@DESC. @F@@@@ K=S1SRCH(TAG(TVNAME),TVARS,2,2,T(RESULT),$112)+TVNCZ )@@G@@AME-1 @^@@@@ GO TO 113 @#@@@@112 CONTINUE @]@@@@ DA )@@G@@RETURN@C@@@@113 ADDR(T(RESULT+2))=3*(VARS+(K-TVNAME)/2)+1 @]@@@@ DB )@@G@@RETURN@D@@@@C ... UNCONDITIONALLY ADD AN OPERAND TO THE TABLE @[@@@@DC )@@G@@C @#@@@@12 HIGH=HIGH-3 @#@@@@ LOW=LOW+3 @B@@@@ IF((HIDD )@@G@@GH-LOW).LT.SLACK) GOTO 121 @#@@@@ T(HIGH)=A @#@@@@ T(HIGHDE )@@G@@+1)=B @^@@@@ T(HIGH+2)=LOW @#@@@@ T(LOW)=C @#@@@@ DF )@@G@@T(LOW+1)=D @^@@@@ T(LOW+2)=HIGH @#@@@@ RESULT=HIGH @]@@@@DG )@@G@@ RETURN@#@@@@121 RESULT=0 @#@@@@ HIGH=HIGH+3 @#@@@@ DH )@@G@@LOW=LOW-3 @#@@@@ CALL DUMP @]@@@@ RETURN@G@@@@C ... ADD A DI )@@G@@DEFINITION BLOCK POINTING TO THE SYMBOL BLOCK REF BY -A- @[@@@@C DJ )@@G@@@#@@@@13 LOW=LOW+3 @B@@@@ IF((HIGH-LOW).LT.SLACK) GOTO 131 DK )@@G@@@#@@@@ T(LOW)=C @#@@@@ T(LOW+1)=D @#@@@@ T(LOW+2)=A DL )@@G@@@#@@@@ RESULT=LOW @]@@@@ RETURN@#@@@@131 RESULT=0 @#@@@@DM )@@G@@ LOW=LOW-3 @#@@@@ CALL DUMP @]@@@@ RETURN@F@@@@C ... DN )@@G@@COMBINATION LOOKUP AND ADDITION ... ADD IT IF ITS NOT THERE @[@@@@C DO )@@G@@@#@@@@14 CONTINUE@#@@@@ KEY(1)=A@#@@@@ KEY(2)=BDP )@@G@@@G@@@@ RESULT=S1SRCH(T(HIGH),(TOP-HIGH+1)/3,3,2,KEY,$140)+HIGH-DQ )@@G@@1 @#@@@@ RETURN @#@@@@140 CONTINUE @#@@@@ GOTO 1DR )@@G@@2 @A@@@@ ENTRY S1ZSIM(A,B,C,D,E,F) @[@@@@C @^@@@@C*****DS )@@G@@************* @[@@@@C @#@@@@ LOW=LOW+3 @#@@@@ HIGH=HDT )@@G@@IGH-3 @B@@@@ IF((HIGH-LOW).LT.SLACK) GOTO 121 @]@@@@ Q=E DU )@@G@@@^@@@@ FLD(0,12,Q)=C @^@@@@ FLD(12,12,Q)=D @#@@@@ DV )@@G@@T(LOW)=Q @#@@@@ T(LOW+1)=F @^@@@@ RANK(LOW)=F @#@@@@DW )@@G@@ T(HIGH)=A @#@@@@ T(HIGH+1)=B @]@@@@ Q=0 @^@@@@ DX )@@G@@FLD(0,12,Q)=LOW @#@@@@ T(HIGH+2)=Q @#@@@@ RESULT=HIGH @]@@@@DY )@@G@@ RETURN@A@@@@C ... EQUATING NAMES IN THE TABLE @B@@@@C TDZ )@@G@@V(N) IS ... (EXPLICIT NAME)@[@@@@C @#@@@@15 CONTINUE@#@@@@EA )@@G@@ KEY(1)=A@#@@@@ KEY(2)=B@[@@@@C @ @@@@C SEB )@@G@@EARCH FOR TV NAME @[@@@@C @F@@@@ I=S1SRCH(T(HIGH),(TOP-HIGHEC )@@G@@+1)/3,3,2,KEY,$150)+HIGH-1 @^@@@@ J=ADDR(T(I+2)) @^@@@@ ED )@@G@@K=SPACE(T(J)) @#@@@@ L=ADDR(T(J))@#@@@@ IF(K.GT.1) @ @@@@EE )@@G@@C IS STATEMENT ERROR @ @@@@ *CALL S1ZTXT(2,$1501,10) @^@@@@EF )@@G@@ TAXX=VNAMES @A@@@@ IF(K.EQ.1)TAXX=TVNAME @^@@@@EG )@@G@@ TAXY= VARS @ @@@@ IF(K.EQ.1)TAXY=TVARS@#@@[@ EH )@@G@@TAXX2=VNAMES@ @@[@ IF(K.NE.1)TAXX2=TVNAME @#@@[@ TAXY2=VARS EI )@@G@@@ @@[@ IF(K.NE.1)TAXY2=TVARS @^@@@@ TAX=TAXX+2*(L-1) @A@@@@EJ )@@G@@ IF(TAG(TAX).EQ.' ') GOTO 151 @ @@@@C PREVIOUSLY NAMES EK )@@G@@@D@@@@ IF(TAG(TAX).EQ.C.AND.TAG(TAX+1).EQ.D) GOTO 151 @B@@@@C EL )@@G@@ IF( NOT EXPLICITLY NAMED) RENAME@A@@@@ IF(EXPL(J).NE.1) GO TOEM )@@G@@ 151 @^@@@@C ... RENAMED ...@C@@@@C ALWAYS WANT THIS MESSAGEN )@@G@@E TO BE PRINTED @#@@@@ ERRSW=0 @F@@@@ CALL S1ZTX5(2,$150EO )@@G@@1,11,SYMBOL(J),TAG(TAX),TAG(TAX+1),C,D) @#@@@@ ERRSW=0 @#@@@@EP )@@G@@ GOTO 151 @#@@@@150 CONTINUE @ @@@@C TV(N) NOT FOUEQ )@@G@@ND @ @@@@C IS STATEMENT ERROR @ @@@@ CALL S1ZTXT(2,$150ER )@@G@@1,10) @#@@@@1501 RESULT=0 @]@@@@ RETURN@#@@@@151 CONTINUEES )@@G@@@#@@@@ KEY(1)=C@#@@@@ KEY(2)=D@F@@@@ K=S1SRCHET )@@G@@(T(HIGH),(TOP-HIGH+1)/3,3,2,KEY,$152) +HIGH-1 @^@@@@ GO TO 15EU )@@G@@4 @#@@@@152 CONTIN*[@@@@*SDFF*@C@@@[. COPYRIGHT 1975 BY UNIVERSIEV )@@G@@TY OF MARYLAND @[@@@[. @D@@@[. QUESTIONS CONCERNING THIS SHOULDEW )@@G@@ BE DIRECTED TO: @[@@@[. @ @@@[. MARVIN V. ZELKOWITZ @B@@@[EX )@@G@@. DEPARTMENT OF COMPUTER SCIENCE @A@@@[. UNIVERSITY OF MEY )@@G@@ARYLAND @B@@@[. COLLEGE PARK, MARYLAND 20742 @[@@@[. EZ )@@G@@@G@@@[. PERMISSION TO USE THESE LISTINGS AND THE COMPUTER PROGRAMFA )@@G@@S THEY@E@@@[. REPRESENT IS GRANTED UNDER THE FOLLOWING CONDITIONS: FB )@@G@@@[@@@[. @G@@@[. 1. UNLIMITED USE MAY BE MADE OF THE PROGRAMS FC )@@G@@REPRESENTED BY @G@@@[. THESE LISTINGS PROVIDED THAT THE NAME PLUM OFD )@@G@@R UNIVERSITY OF MARYLAND@E@@@[. PL/1 COMPILER REMAINS ASSOCIATED WITH FE )@@G@@THESE PROGRAMS. @[@@@[. @F@@@[. 2. MODIFICATIONS MAY BE MADFF )@@G@@E TO THE LISTINGS PROVIDED: @[@@@[. @G@@@[. (A) ANY RESULTIFG )@@G@@NG PROGRAM, OR REPORT, PAPER OR DOCUMENTATION @G@@@[. DESCRIBINFH )@@G@@G SUCH PROGRAM WILL CLEARLY INDICATE THAT THE PROGRAM @E@@@[. IS FI )@@G@@A DIALECT OF PLUM OR IS DERIVED FROM PLUM, AND @[@@@[. @G@@@[. FJ )@@G@@ (B) ALL SUCH MODIFICATIONS, OTHER THAN TRIVIAL CORRECTIONS @F@@@[FK )@@G@@. OF ERRORS IN THE SOURCE PROGRAMS, SHALL BE REPORTED AND @G@@@[FL )@@G@@. A BRIEF DESCRIPTION OF THE FEATURE ADDED SHALL BE SUBMITTED FM )@@G@@@C@@@[. TO THE UNIVERSITY OF MARYLAND, AND @[@@@[. @F@@@[FN )@@G@@. (C) NO PROGRAMS DERIVED FROM THESE LISTINGS SHALL BE SOLD@G@@@[FO )@@G@@. WITHOUT WRITTEN APPROVAL FROM THE UNIVERSITY OF MARYLAND, AND FP )@@G@@@[@@@[. @F@@@[. (D) COPIES OF THESE PROGRAMS MAY BE TRANSMITTFQ )@@G@@ED TO OTHER @G@@@[. LOCATIONS PROVIDED THAT SUCH TRANSMITTALS CLEFR )@@G@@ARLY INDICATE @G@@@[. WHETHER THE PROGRAMS ARE EXACT COPIES OFS )@@G@@F THE UNIVERSITY OF @E@@@[. MARYLAND PLUM COMPILER OR ARE MODFT )@@G@@IFICATIONS TO IT. @[@@@[. @G@@@[. 3. THESE CONDITIONS ONLY APFU )@@G@@PLY TO THE PLUM COMPILER ITSELF, @F@@@[. AND ARE NOT MEANT TO APPLYFV )@@G@@ TO ANY PROGRAM WRITTEN USING PLUM. @E@@@[. THE PURPOSE OF THESE CONDIFW )@@G@@TIONS IS TO ALLOW ANY USER TO @F@@@[. EXPERIMENT WITH THE COMPILER AS FX )@@G@@LONG AS THE RESULTING PRODUCT @G@@@[. IS NOT SOLD AND AS LONG AS IT ISFY )@@G@@ KNOWN THAT THE PRODUCT DEVELOPED @#@@@[. FROM PLUM. @[@@@[. FZ )@@G@@@[@@@[. @[@@@[. @[@@@[. @[@@@[. @[@@@[/. @A@@@@MSG* GA )@@G@@ PROC *1 . NUMBER,WORDS@ @@@@ZM*(MSG(1,1)) EQU 6*($-PART1) @ @@@@GB )@@G@@ZX*(MSG(1,1)) EQU MSG(1,2) @#@@@@ END . @#@@@@PT2* PROGC )@@G@@C . @^@@@@FM FORM 6,12,6,12@G@@@@K DO PT2(1,1) , FM +GD )@@G@@ZX(2*K-2),ZM(2*K-2),ZX(2*K-1),ZM(2*K-1) @#@@@@ END . @#@@@@GE )@@G@@ AXR$ @#@@@@ DCLRG @#@@@@MSGS CSECT 3 @#@@@@GF )@@G@@MSG01* LABEL . @^@@@@ +PART2,PART1 . @#@@@@PART1 LABEL . GG )@@G@@@#@@@@ MSG 0,2@#@@@@ MSG 5,2@#@@@@ MSG 6,2GH )@@G@@@#@@@@ MSG 7,2@#@@@@ 'NOT ASSIGNED ' @#@@@@ MSG 1,3GI )@@G@@@^@@@@ 'INVALID OPTION @C ' @#@@@@ MSG 2,3@^@@@@ 'TOO MANY MGJ )@@G@@ESSAGES ' @#@@@@ MSG 3,2@]@@@@ 'IO ERROR '@#@@@@ MSGGK )@@G@@ 4,3@^@@@@ 'TOO MUCH OUTPUT ' @#@@@@PART2 LABEL . @#@@@@ GL )@@G@@ PT2 4 .@#@@@@ END . ___^Z 9!B@@@[[@^D+R;)@@,A<)^D+9(@^DZGM )@@G@@9(@OFPR;@^D-'=@@@JR;@A AFB@@]R;)@@ (@@^W\*4@^[?*[@@@@*SDFF*+@@@@[@F@@@#GN )@@G@@ 0)^@)CTJE[TELDC9CE))AC9A85^[]FC)E(IDDQC(METDE-T^[JC0)D([ELTD-[D1^@[@@@#GO )@@G@@ 0)^@)@H@@@# 0)^@)EDPC(NE-DD9IES)CTJD1#C(MD1DD1B^[OD[DES)ETCD9PD-^^[]C*)GP )@@G@@C-DEL CTOC(^^[OD8'@[@@@# 0)^@)@B@@@# 0)^@)^@)^@)^[HCDME1DD0)E0,^[UC(GDTJGQ )@@G@@E9DE-U@E@@@# 0)^@)^@)^@)^[^C(KCDME-HC(IE))D9A^[#D9HE[PE- EK)ET#DD D1#C*)GR )@@G@@@C@@@# 0)^@)^@)^@)^[PD1DE1 ELNDDOFC)D9A^[HCDMFDGCDIC))@E@@@# 0)^@)^@)^@)GS )@@G@@^[#D9GD- C9 ^[KCDMDS?^[HCDMFDGCDIC))AK0A84AK)^@)@[@@@# 0)^@)@M@@@# 0)^@)GT )@@G@@^@)^@)^[KC(MD(DETNDDJD0)E-J^[PET ^[OD[ ET ^[GDDNE-DD1BES)CDIC))E-CC*)CTJGU )@@G@@D(KE(OC(M^[KELJC9MCDHES)E-CC(T@I@@@# 0)^@)EL E[MC(NC(IE))DDN^[BEL[D1OC(^GV )@@G@@^[PD1^C(M^[OD[ ^[AD9GD-JE9DD1B^[#D9IC-DE-DD9IES'@[@@@# 0)^@)@L@@@# 0)^@)GW )@@G@@^@)^@)^@1 0)E(ID-DD(DE- C))E(NC*)D([FC)CL ^[HCD^C*)D9A^[OD[ ^[KELJC9MCDHGX )@@G@@ES)EL E[MC(NC(IE- C))CLT@M@@@# 0)^@)E-CC(NC*)D-DETODDIC9N^[KELJE1DC- C))GY )@@G@@E-CCDO^[OD[ ^[ICDHC*)E[GE(H^[JEK)E(IDDQC(METDE-T^[JC0)D([ELTD-[D1^@J@@@#GZ )@@G@@ 0)^@)E[G 81^[#D9HE[DD- EK)EL D([DDIES)CDNETJCTDCDOC(^^[RDDOD@)E-CC(NC*)HA )@@G@@E[MD9BEL[D(N 0)^@)@[@@@# 0)^@)@K@@@# 0)^@)^@)^@)^@2 0)D(JC-DC1DCT[E-DD9IHB )@@G@@ES)D([FC)CL ^[HCD^C*)E-J^[OD[ ^[GDDNE-DD1BES)E[MD9QDD^C(^BK)@[@@@# 0)^@)HC )@@G@@@M@@@# 0)^@)^@)^@)^@*CC(^[[D1T^[MC(NE(GE-DD1B^[KELJC9MCDH ))D9M^[MC(KD9MHD )@@G@@E)?^[KCDKC(M^[JEK)C-JCTPD( D1OCDODDJD0)^@)@M@@@# 0)^@)^@)^@)^[^C(NCTMDD]HE )@@G@@DDIC8)ETPCTC^[KELJC9MCDH^[RDDGD))CTGC([ELGFC)DDIC-DCT[E- ^[OD[[E))E-CC*)HF )@@G@@E[MD9BEL[D*)@J@@@# 0)^@)^@)^@)^[DES)CC)C-DCDGC(#E))D9A^[KD-PD*)D9M^[DES)HG )@@G@@C- ELDE1 C))C1MD9H^[KD-PD*?^[[D1^^@)@[@@@# 0)^@)@L@@@# 0)^@)^@)^@)^@*CK(HH )@@G@@^[[D-G^[NE(#D@)D(JC-DC1DCT[E-DD9IES?^[JE-CC(M^[OD[[D0)E-MDDQDD[D))CTJELMHI )@@G@@C(#E-DD9IES)@K@@@# 0)^@)^@)^@)^[JC0)C(MELJELN^[DD0)E-CC*)ETJE(MCT ^[KELJHJ )@@G@@C9MCDHES?^[ND[[D-G^[]C*)EL E[JELOC(^^[[D1^@L@@@# 0)^@)^@)^@)^[[^[]ELDC(AHK )@@G@@^[^C(NCTMDDKE-DD9I^[JC0)E-CC*)C1 CDOE(MC*)CD^C- C))ETCCDGD))CL ^[NE(]D(DHL )@@G@@E-OC(^@F@@@# 0)^@)^@)^@)^[OD8)E-CC*)E(IDDQC(METDE-T^[JC0)D([ELTD-[D1^ ))HM )@@G@@CDIC))@[@@@# 0)^@)@L@@@# 0)^@)^@)^@)^@*CS(^[ID8)E[MD9BEL[D(N^[^C(MDDQC(^HN )@@G@@^[AELJD*)E-CC(NC*)D-DETODDIC9N^[ND[[D-G^[]C*)ETJD-^^@)@M@@@# 0)^@)^@)^@)HO )@@G@@^[RDDOD[JE(O^[RELDE-OC(I^[[E[KELJE1[D))C1MD9H^[OD[ ^[PD1DE1 ELNDDOFC)D9AHP )@@G@@^[HCDMFDGCDIC)?^[[D1^^@)@[@@@# 0)^@)@L@@@# 0)^@)^@)^@)^@*C)(^[#D9KDD ES)HQ )@@G@@D9A^[OD[ ET ^[KELJC9MCDHES)D([FC)CL ^[OEL[D1ND(DE-OC(^^[OD8)D9OD[ EK)^@)HR )@@G@@@L@@@# 0)^@)^@)^@)^[GD9#CDODDJD1N^[KELJE1DC- C))E-CCDO^[NE(#D@)E-MCDIETHHS )@@G@@DDOE-[D-N^[#D- CDMD-T^[DD1^DD#CDOC*)@L@@@# 0)^@)^@)^@)^[RD[ E-CC(M^[OD[ HT )@@G@@^[KELJC9MCDHES)CDMC*)C(SCD#E))CTJE[DC(N^[JC0)E-CC*)E(IDDQC(METDE-T^[JC0)HU )@@G@@@J@@@# 0)^@)^@)^@)^[HCDMFDGCDIC))E[GE(H^[#D9HE[DD- EK)D9M^[[EL ^[HD9^DDAHV )@@G@@DD#CDODDJD1N^[OD8)DDO 0)@[@@@# 0)^@)@L@@@# 0)^@)^@)^@)^@3 0)E-CC(NC*)CTJHW )@@G@@D1^DDODDJD1N^[JD1GFC)CDKE[GFC)E-J^[OD[ ^[KD-PD*)CTJD(KDDGC(M^[DE-NC(GC0?HX )@@G@@@L@@@# 0)^@)CDIC))CDMC*)D1JE))D( CDIE))E-J^[[E[KD-T^[OD8)CDIFC)E[MD9BEL[HY )@@G@@D*)E9MDDOE- D0)E(NDDIC8)E[GE(H 0)^@)@J@@@# 0)^@)E-CC*)E[PELKD9NC*)D9A^[OHZ )@@G@@D[ ET ^[#D9IC-DE-DD9IES)DDN^[OD8)CDGD-JE8)CDIFC)E(NC(M^[OD8)@L@@@# 0)^@)IA )@@G@@C(SE[ ELDD( D1O^[RDDOD@)E-CC*)CTJD(KDDGC(M^[[ES)D-JD1B^[[ES)E-CC*)EL ETPIB )@@G@@D-ODDIC8)E[MD9^E(#E))^@)@M@@@# 0)^@)DDN^[ID9O^[ND9GC))CDIC))CDN^[GD9IC8)IC )@@G@@CDN^[DE))DDN^[FD1JE9I^[OD[[E))E-CC*)E[MD9^E(#E))C- E1 D-JE[ C))^@)@^@@@#ID )@@G@@ 0)^@)C1MD9H^[KD-PD*,^@)@[@@@# 0)^@)@[@@@# 0)^@)@[@@@# 0)^@)@[@@@# 0)^@)IE )@@G@@@[@@@# 0)^@)@[@@@# 8,^@)@E@@@@D(NC8%^@)^@)^[KELJCS)^@%AC) 0)^@)^@)D1PD(]IF )@@G@@C(M -RD9MC-N^@,^@)@C@@@@FLH K*D(NC8*AC?AC( C)C(LE*)A)% @= (KCDME)1 C) 0)IG )@@G@@@C@@@@FLS K*D(NC8*AC?AC( C)C(LE*)^@)D(NC8*AC?AK(^@,^@)@^@@@@^@)^@)^@)^@)IH )@@G@@^[ D1^^@,^@)@^@@@@E[OAK%^@)^@)^[KELJCS) 0)@B@@@@C1H^@)^@)^@)^[AD9MD*)^@6II )@@G@@ )1AK?A0?AC2^@,^@)@M@@@@DS)^@)^@)^@)^[^D8)^@)^[KE)2 @1 )1 C) ))C1H^@:FLSIJ )@@G@@ @2 LF *2 C?FLH @2 LF *2 C?FLS @2 LF *1 C?FLH @2 LF *1 C) 0)@^@@@@^@)^@)IK )@@G@@^@)^@)^[ D1^^@,^@)@^@@@@^@)^@)^@)^@)^[[F[M^)) 0)@^@@@@^@)^@)^@)^@)^[^CTGIL )@@G@@ELB^@,@ @@@@D(NC9N^@)^@)^[#ET CTO^@3^@,^@)@^@[@@D(NC81AC%^@)^[GCD]C(G^@,IM )@@G@@@^@@@[D(NC82AC%^@)^[GCD]C(G^@,@A@@@@^@)^@)^@)^@)^@:E[[ELOAK?E[[ELOAC) 0)IN )@@G@@@^@@@@E[[ELOAC)^@)D-[CL D)) 0)@ @@@@^@)^@)^@)^@)^[HETB^@)^@0 )3^@,@B@@@@IO )@@G@@^@$ET\IL2JC-^[IH94^[(H(0H->H(>H14G(=^8) 0)@ @@@@^@)^@)^@)^@)^[HETB^@)^@1IP )@@G@@ )3^@,@A@]@@^@$DD,I1-H-(G))H90I-(H9,^[@C0)^8) 0)@ @@@@^@)^@)^@)^@)^[HETBIQ )@@G@@^@)^@6 )2^@,@ @@@@^@)^@)^@)^@)^[HETB^@)^@7 )2^@,@ @@@@^@$D1\I))GD3IT(G9,IR )@@G@@G(=^@$^@,^@)@ @@@@^@)^@)^@)^@)^[HETB^@)^@2 )3^@,@A@@@@^@$E-\H8)H(-H19^[!IS )@@G@@G(3IT-G9>IS)^8) 0)@ @@@@^@)^@)^@)^@)^[HETB^@)^@3 )2^@,@^@@@@^@$DC\D8)G(2IT )@@G@@IL\IK)^8) 0)@ @@@@^@)^@)^@)^@)^[HETB^@)^@4 )3^@,@A@@@@^@$E-\H8)H(5GT*^[\IU )@@G@@I(4I[5I))^8) 0)^@)@ @]@@^@)^@)^@)^@)^[HETB^@)^@5 )3^@,@ @@@]^@)^@)^@)^@)IV )@@G@@^[HETB^@)^@5 )2^@,@B@]@@^@$ET9H(+H9?^[4GD+H->^[\I1>IL&H-\I8)^8) 0)@ @]@@IW )@@G@@^@)^@)^@)^@)^[HETB^@)^@8 )5^@,@ @@@]^@)^@)^@)^@)^[HETB^@)^@8 )2^@,@C@]@@IX )@@G@@^@$A00^[+HD4IS)I(3G(=^[&H92^[,I(!GL>IK)^8) 0)^@)@ @]@@^@)^@)^@)^@)^[HETBIY )@@G@@^@)^@9 )5^@,@ @@@]^@)^@)^@)^@)^[HETB^@)^@9 )2^@,@C@]@@^@$AC7^[=HD$HD4IS)IZ )@@G@@I(3G(=^[&H92^[,I(!GL>IK)^8) 0)@A@]@@^@)^@)^@)^@)^[HETB^@)^@1A@?A)) 0)^@)JA )@@G@@@A@@@]^@)^@)^@)^@)^[HETB^@)^@1A@?AK) 0)^@)@B@]@@^@$D15H(+G(2^[\I(4^[\G0)JB )@@G@@IL-H1$G*)^8) 0)^@)@A@]@@^@)^@)^@)^@)^[HETB^@)^@1AC?AS) 0)^@)@A@@@]^@)^@)JC )@@G@@^@)^@)^[HETB^@)^@1AC?AK) 0)^@)@ @]@@^@$D1-H(>^[4H9\^[?H9,G8)^8) 0)@A@@@@JD )@@G@@^@)^@)^@)^@)^[HETB^@)^@1AK?AK) 0)^@)@ @]@@^@$DD?H->G9-H))IT9H(+H9?^@$^@,JE )@@G@@@A@]@@^@)^@)^@)^@)^[HETB^@)^@1AS?A)) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@1JF )@@G@@AS?AK) 0)^@)@D@]@@^@$CT\H(!G(,I))GD^[+H95H1=GD2JC)^8) 0)^@)JI )@@G@@@A@]@@^@)^@)^@)^@)^[HETB^@)^@1A*?A)) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@1JJ )@@G@@A*?AK) 0)^@)@D@]@@^@$ET4IL(H1$^[-GT2H93IS)H-(H1>^[+H95H1=GD2JC)^8) 0)^@)JK )@@G@@@A@@@@^@)^@)^@)^@)^[HETB^@)^@1A0?AK) 0)^@)@A@]@@^@$D[-IT*I--GL?G*)H96G(2JL )@@G@@G1?H97^@$^@,@A@]@@^@)^@)^@)^@)^[HETB^@)^@1A8?AC) 0)^@)@A@@@]^@)^@)^@)^@)JM )@@G@@^[HETB^@)^@1A8?AK) 0)^@)@A@]@@^@)^@)^@)^@)^[HETB^@)^@2A@?AC) 0)^@)@A@@@]JN )@@G@@^@)^@)^@)^@)^[HETB^@)^@2A@?AK) 0)^@)@A@]@@^@)^@)^@)^@)^[HETB^@)^@2AC?AC)JO )@@G@@ 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@2AC?AK) 0)^@)@#@]@@^@$D15H(+G(2^@$^@,JP )@@G@@@A@]@@^@)^@)^@)^@)^[HETB^@)^@1B@?AC) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@1JQ )@@G@@B@?AK) 0)^@)@A@]@@^@)^@)^@)^@)^[HETB^@)^@1BC?AC) 0)^@)@A@@@]^@)^@)^@)^@)JR )@@G@@^[HETB^@)^@1BC?AK) 0)^@)@^@]@@^@$C(8I[\H1>H14^@$^@,^@)@A@]@@^@)^@)^@)^@)JS )@@G@@^[HETB^@)^@2AS?AS) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@2AS?AK) 0)^@)@ @]@@JT )@@G@@^@$CT\H-5H(,^@1^[5IT>G))^8) 0)@A@@@@^@)^@)^@)^@)^[HETB^@)^@2A)?AK) 0)^@)JU )@@G@@@^@]@@^@$DD?H->G9-H)) K\^@$^@,@A@@@@^@)^@)^@)^@)^[HETB^@)^@2A*?AK) 0)^@)JV )@@G@@@B@]@@^@$DD,GT\H(0H->I->^[>J[0IL>IT3HD\H0)^8) 0)@A@]@@^@)^@)^@)^@)^[HETBJW )@@G@@^@)^@2A0?A)) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@2A0?AK) 0)^@)@C@]@@^@$D((JX )@@G@@IT3HD,G8)GD2G95H(>H14 0)AC)I(3G(=^@$^@,^@)@A@@@@^@)^@)^@)^@)^[HETB^@)^@2JY )@@G@@A8?AK) 0)^@)@ @]@@^@$D((IT3HD,G8)GT\H(!GC)^8) 0)@A@@@@^@)^@)^@)^@)^[HETBJZ )@@G@@^@)^@2B@?AK) 0)^@)@^@]@@^@$C(!I[4JC)H-(IT4^@$^@,@A@]@@^@)^@)^@)^@)^[HETBKA )@@G@@^@)^@2BC?AS) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@2BC?AK) 0)^@)@B@]@@^@$C(8KB )@@G@@I-2GC)H->G14^[0GD2G(,I-*G(3HD3^@$^@,@A@]@@^@)^@)^@)^@)^[HETB^@)^@3A@?AS)KC )@@G@@ 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@3A@?AK) 0)^@)@C@]@@^@$D((IT3HD,G8)IL(KD )@@G@@G9*I))I[-IL>H14H[>IT(IS)^8) 0)@A@@@@^@)^@)^@)^@)^[HETB^@)^@3AC?AK) 0)^@)KE )@@G@@@ @]@@^@$DD!I[2H90G(2^[,H94^@$^@,^@)@A@]@@^@)^@)^@)^@)^[HETB^@)^@3AK?AS)KF )@@G@@ 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@3AK?AK) 0)^@)@A@]@@^@$D1>IT4HD,G8)I-\KG )@@G@@H8)G->G(0^@$^@,^@)@A@]@@^@)^@)^@)^@)^[HETB^@)^@3AS?AS) 0)^@)@A@@@]^@)^@)KH )@@G@@^@)^@)^[HETB^@)^@3AS?AK) 0)^@)@C@]@@^@$D((IT3HD,G8)H->G14^[0GD2G(,I-*G(3KI )@@G@@HD3^@$^@,^@)@A@@@@^@)^@)^@)^@)^[HETB^@)^@3A)?AK) 0)^@)@ @]@@^@$C(8I-2GC)KJ )@@G@@GT\H(!GC)^8) 0)^@)@A@]@@^@)^@)^@)^@)^[HETB^@)^@3A*?AS) 0)^@)@A@@@]^@)^@)KK )@@G@@^@)^@)^[HETB^@)^@3A*?AK) 0)^@)@A@]@@^@$CC)G1\IL!GD4^[-IT3I(!G(=^@$^@,^@)KL )@@G@@@A@@@@^@)^@)^@)^@)^[HETB^@)^@3A0?AK) 0)^@)@ @]@@^@$E[2G(&HD8^[\IL=G(2^@$KM )@@G@@^@,^@)@A@]@@^@)^@)^@)^@)^[HETB^@)^@3A8?AS) 0)^@)@A@@@]^@)^@)^@)^@)^[HETBKN )@@G@@^@)^@3A8?AK) 0)^@)@ @]@@^@$D95I))H9&^[3I[-GT>^@$^@,^@)@A@]@@^@)^@)^@)^@)KO )@@G@@^[HETB^@)^@3B@?AC) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@3B@?AK) 0)^@)@#@]@@KP )@@G@@^@$CT*G(JD7H92G))^8) 0)^@)@A@@@@^@)^@)^@)^@)^[HETB^@)^@4A@?AK) 0)^@)KR )@@G@@@ @]@@^@$D((IT3HD,G8)H--GL>H))^8) 0)@A@@@@^@)^@)^@)^@)^[HETB^@)^@4AC?AK)KS )@@G@@ 0)^@)@A@]@@^@$ET4GD4G(!G(,I))G->H->I->G))^8) 0)@A@]@@^@)^@)^@)^@)^[HETBKT )@@G@@^@)^@4AK?A)) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@4AK?AK) 0)^@)@F@]@@^@$E(,KU )@@G@@IL>GT\G9,HD'GD+H->^[>H->H(>H14^[(H0)IT4GD4G(!G(,I))^8) 0)^@)@A@]@@^@)^@)KV )@@G@@^@)^@)^[HETB^@)^@4AS?AC) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@4AS?AK) 0)^@)KW )@@G@@@ @]@@^@$E(,IL>GDH((GT\H-\H0)^8) 0)^@)@A@@@@^@)^@)^@)^@)^[HETBKY )@@G@@^@)^@4A*?AK) 0)^@)@A@]@@^@$D((IT3HD,G8)G(8I[2G(3IT(H9,^@$^@,@A@@@@^@)^@)KZ )@@G@@^@)^@)^[HETB^@)^@4A0?AK) 0)^@)@ @]@@^@$D((IT3HD,G8)E-CC(I^@$^@,^@)@A@@@@LA )@@G@@^@)^@)^@)^@)^[HETB^@)^@4A8?AK) 0)^@)@A@]@@^@$D((IT3HD,G8)IT>H((GT\H-\H0)LB )@@G@@^8) 0)@A@]@@^@)^@)^@)^@)^[HETB^@)^@4B@?AC) 0)^@)@A@@@]^@)^@)^@)^@)^[HETBLC )@@G@@^@)^@4B@?AK) 0)^@)@#@]@@^@$D--GL>H))^8) 0)@A@]@@^@)^@)^@)^@)^[HETB^@)^@4LD )@@G@@BC?AS) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@4BC?AK) 0)^@)@A@]@@^@)^@)^@)^@)LE )@@G@@^[HETB^@)^@6AS?AS) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@6AS?AK) 0)^@)@ @]@@LF )@@G@@^@$E-CC(I^[\IK)C(GET ^@$^@,^@)@A@]@@^@)^@)^@)^@)^[HETB^@)^@5A@?AC) 0)^@)LG )@@G@@@A@@@]^@)^@)^@)^@)^[HETB^@)^@5A@?AK) 0)^@)@#@]@@^@$D90I-(H9,^@$^@,@A@]@@LH )@@G@@^@)^@)^@)^@)^[HETB^@)^@5AC?AC) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@5AC?AK)LI )@@G@@ 0)^@)@]@]@@^@$E-J^@$^@,@A@]@@^@)^@)^@)^@)^[HETB^@)^@5AK?AC) 0)^@)@A@@@]LJ )@@G@@^@)^@)^@)^@)^[HETB^@)^@5AK?AK) 0)^@)@]@]@@^@$CLT^@$^@,@A@]@@^@)^@)^@)^@)LK )@@G@@^[HETB^@)^@5AS?AC) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@5AS?AK) 0)^@)@#@]@@LL )@@G@@^@$E9CDDGC*)^8) 0)@A@@@@^@)^@)^@)^@)^[HETB^@)^@5A)?AK) 0)^@)@A@]@@^@$C-JLM )@@G@@^[3I[>GT(G1(GT-I-(H9,^@$^@,^@)@A@@@@^@)^@)^@)^@)^[HETB^@)^@5A*?AK) 0)^@)LN )@@G@@@^@]@@^@$D((IT3HD,G8)B*)^8) 0)@A@@@@^@)^@)^@)^@)^[HETB^@)^@5A0?AK) 0)^@)LO )@@G@@@A@]@@^@$D((IT3HD,G8)I1-IL(GD+H->^@$^@,^@)@A@@@@^@)^@)^@)^@)^[HETB^@)^@5LP )@@G@@A8?AK) 0)^@)@^@]@@^@$DC\D8)I[*IL-IT>^@$^@,@A@]@@^@)^@)^@)^@)^[HETB^@)^@5LQ )@@G@@B@?AC) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@5B@?AK) 0)^@)@#@]@@^@$C1JELHCDOLR )@@G@@^@$^@,@A@@@@^@)^@)^@)^@)^[HETB^@)^@5BC?AK) 0)^@)@ @]@@^@$D((IT3HD,G8)C(ILS )@@G@@C))^8) 0)^@)@A@]@@^@)^@)^@)^@)^[HETB^@)^@6A@?A*) 0)^@)@A@@@]^@)^@)^@)^@)LT )@@G@@^[HETB^@)^@6A@?AK) 0)^@)@A@]@@^@)^@)^@)^@)^[HETB^@)^@9A8?A*) 0)^@)@D@]@@LU )@@G@@^@$D1\I))JD>I))HD!I[?G(!G(,I->G))HD,^[KD-PD*)^8) 0)^@)@A@]@@^@)^@)^@)^@)LV )@@G@@^[HETB^@)^@6AC?A)) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@6AC?AK) 0)^@)@B@]@@LW )@@G@@^@$C(,I-2JC)H1\I))HD,^[0IL\GT>G-5IL>^@$^@,@A@@@@^@)^@)^@)^@)^[HETB^@)^@6LX )@@G@@AK?AK) 0)^@)@B@]@@^@$D(5H-4HD0H->^[=G(IL,GD?^[0IL\GT>G-5IL>^@$^@,@A@]@@^@)^@)ME )@@G@@^@)^@)^[HETB^@)^@6B@?AS) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@6B@?AK) 0)^@)MF )@@G@@@B@]@@^@$D((IT3HD,G8)E[MD9#C(NES)GT-IL=^@$^@,^@)@A@]@@^@)^@)^@)^@)^[HETBMG )@@G@@^@)^@6BC?AS) 0)^@)@A@]@@^@$D1\^[!GD(H0)I[2H9I->IK)GD4I-2HD+I(4G*)^8) 0)^@)@A@]@@^@)^@)^@)^@)^[HETBMK )@@G@@^@)^@7AK?AC) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@7AK?AK) 0)^@)@#@]@@^@$C(IML )@@G@@E-MFC)^8) 0)@A@]@@^@)^@)^@)^@)^[HETB^@)^@7AS?A)) 0)^@)@A@@@]^@)^@)^@)^@)MM )@@G@@^[HETB^@)^@7AS?AK) 0)^@)@B@]@@^@$C(8I->IL,GD?^[,GD!G*)I-\H8)H-\H1$^@$^@,MN )@@G@@@A@]@@^@)^@)^@)^@)^[!IT$^@)^@7A)?AS) 0)^@)@A@@@]^@)^@)^@)^@)^[!IT$^@)^@7MO )@@G@@A)?AK) 0)^@)@D@]@@^@$E[2H9$IL-H*)HD,IT5G1&HDH14H-9^[H14G(=^@$MP )@@G@@@A@@@@^@)^@)^@)^@)^[HETB^@)^@7A*?AK) 0)^@)@ @]@@^@$DD!I[2H90G(2^[3GT-H->MQ )@@G@@^@$^@,@A@@@@^@)^@)^@)^@)^[HETB^@)^@7A0?AK) 0)^@)@A@]@@^@$DD!I[2H90G(2^[0MR )@@G@@IL>GT(IT(H9,^@$^@,@A@]@@^@)^@)^@)^@)^[HETB^@)^@7A8?AS) 0)^@)@A@@@]^@)^@)MS )@@G@@^@)^@)^[HETB^@)^@7A8?AK) 0)^@)@B@]@@^@$E-\H8)H(-H19^[(G->H14HD&HD>IL3^@$MT )@@G@@^@,^@)@A@]@@^@)^@)^@)^@)^[HETB^@)^@7B@?AS) 0)^@)@A@@@]^@)^@)^@)^@)^[HETBMU )@@G@@^@)^@7B@?AK) 0)^@)@C@]@@^@$DD!I[2H90G(2^[3I-2I(^[?G(6G(?^@$^@,^@)MV )@@G@@@A@]@@^@)^@)^@)^@)^[HETB^@)^@7BC?AC) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@7MW )@@G@@BC?AK) 0)^@)@^@]@@^@$CD4I-2HD+I(4G*)^8) 0)@A@]@@^@)^@)^@)^@)^[HETB^@)^@8MX )@@G@@A@?AC) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@8A@?AK) 0)^@)@^@]@@^@$C-(H(>H13MY )@@G@@HD\H0)^8) 0)@A@]@@^@)^@)^@)^@)^[HETB^@)^@8AC?AC) 0)^@)@A@@@]^@)^@)^@)^@)MZ )@@G@@^[HETB^@)^@8AC?AK) 0)^@)@^@]@@^@$CT\H16G(2IT(H9,^@$^@,@A@]@@^@)^@)^@)^@)NA )@@G@@^[HETB^@)^@8AK?AC) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@8AK?AK) 0)^@)@#@]@@NB )@@G@@^@$C1-GT4H92^@$^@,@A@]@@^@)^@)^@)^@)^[HETB^@)^@8AS?A)) 0)^@)@A@@@]^@)^@)NC )@@G@@^@)^@)^[HETB^@)^@8AS?AK) 0)^@)@E@]@@^@$DD!I[2H90G(2^[-I-4IL(GL5I->^[(H0)ND )@@G@@IT4IL5GT4I(2G*)^8) 0)^@)@A@@@@^@)^@)^@)^@)^[HETB^@)^@8A)?AK) 0)^@)@^@]@@NE )@@G@@^@$C(8I-2GC) C)^8) 0)^@)@^@@@]^@$D1\I))GD3IT(G9,G(=^@$@A@@@@^@)^@)^@)^@)NF )@@G@@^[HETB^@)^@8A*?AK) 0)^@)@A@@@@^@$DD!I[2H90G(2^[DD1DE-DCDG^8) 0)^@)@A@@@@NG )@@G@@^@)^@)^@)^@)^[HETB^@)^@8A0?A8) 0)^@)@E@@@@^@$F-P^[(IS)GD!GL(G95H95IS,^[JNH )@@G@@H1>^[-I))F1O^[5IT>G))^8) 0)^@)@A@@@@^@)^@)^@)^@)^[HETB^@)^@8A8?A)) 0)^@)NI )@@G@@@A@@@@^@$^(PG-\G(3^[,H94^[2G(3H9?I1>^@$^@,@A@@@@^@)^@)^@)^@)^[HETB^@)^@8NJ )@@G@@B@?AC) 0)^@)@#@@@@^@$E-9I[>^@$^@,^@)@A@@@@^@)^@)^@)^@)^[HETB^@)^@8BC?AC)NK )@@G@@ 0)^@)@^@@@@^@$D90G(2GD,G))^8) 0)^@)@A@@@@^@)^@)^@)^@)^[HETB^@)^@9A@?AS)NL )@@G@@ 0)^@)@C@@@@^@$ET4IL5GT4I(2G(3^[,H94^[(H(0H->H(>H14G(=^@$^@,@A@@@@^@)^@)NM )@@G@@^@)^@)^[HETB^@)^@9AC?AK) 0)^@)@A@@@@^@)^@)^@)^@)^[HETB^@)^@9AS?AK) 0)^@)NN )@@G@@@ @@@@^@$CT\H(0HD?G(2 0)ET D([^@$^@,@A@@@@^@)^@)^@)^@)^[HETB^@)^@9AK?A))NO )@@G@@ 0)^@)@D@@@@^@$D15H(+G(2^[\G0)GD2G95H(>H14IS)HD,GT\IL2G(^[\I1>IL&H-\NQ )@@G@@I8)^8) 0)^@)@A@@@@^@)^@)^@)^@)^[HETB^@)^@9A*?AK) 0)^@)@A@@@@^@$ET5GL3GT2NR )@@G@@HD0I->G))H--GL>H))^8) 0)@A@@@@^@)^@)^@)^@)^[HETB^@)^@9A0?A*) 0)^@)@D@@@@NS )@@G@@^@$F-QI(3G(=^[&H92^[(H16GD?HD=^[>J[0IL>IT3HD\H0)^8) 0)@ @@@]^@)^@)^@)^@)NT )@@G@@^[!IT$^@)^@9A8?A*)@C@@@]^@$D1\I))JD>I))HD!I[?G(!G(,I->G))HD,^[KD-PD*)^8)NU )@@G@@@A@@@@^@)^@)^@)^@)^[HETB^@)^@9B@?A)) 0)^@)@A@@@@^@$F-PI(3G(=^[-IS)GD2IL-NV )@@G@@JC)^8) 0)^@)@A@@@@^@)^@)^@)^@)^[HETB^@)^@9BC?BC) 0)^@)@J@@@@^@$D1\I))I[2NW )@@G@@H90G(2^[,I(!GL>IK)H9&^[-IL$I(!G(,I-3^[\IK)IT5GL3GT2HD0I-3^[&H92^[WE*)^8)NX )@@G@@ 0)^@)@A@@@@^@)^@)^@)^@)^[HETB^@)^@1A@0 )3^@,^@)@C@@@@^@$DD?H->G9-H))GT\NY )@@G@@H(0H->J@)GT\H(0GD2G*)^8) 0)^@)@A@@@@^@)^@)^@)^@)^[HETB^@)^@1A@1 )3^@,^@)NZ )@@G@@@C@@@@^@$CD$G92G($GD4G*)G(8I[2G(3IT(H9,^[>IL2H92^@$^@,@A@@@@^@)^@)^@)^@)OA )@@G@@^[HETB^@)^@1A@2 )7^@,^@)@J@@@@^@$CD2IL-JC)G-(H(>H13HD\H13^[,H94^[J[0IL>IT3HD\H0)^8) 0)^@)@A@@@@^@)^@)^@)^@)^[HETBOC )@@G@@^@)^@1A@3 )6^@,^@)@F@@@@^@$CD3IT(G9,HD,G8)GD2IL-JC)I-\^[-^[3GT-H--IK)I1-OD )@@G@@IL(GD+H->^@$^@,^@)@A@@@@^@)^@)^@)^@)^[HETB^@)^@1A@4 )4^@,^@)@C@@@@^@$DD,OE )@@G@@I1-H-(G))I[-IL-H(>I->IK)G1\IK)F-P^@$^@,^@)@A@@@@^@)^@)^@)^@)^[HETB^@)^@1OF )@@G@@A@5 )2^@,^@)@ @@@@^@$D((IT3HD,G8)G(2IL\IK)^8) 0)@A@@@@^@)^@)^@)^@)^[HETBOG )@@G@@^@)^@1A@6 )2^@,^@)@A@@@@^@$DD,I1-H-(G))IT5GL3GT2HD0I))^8) 0)@A@@@@^@)^@)OH )@@G@@^@)^@)^[HETB^@)^@1A@7 )7^@,^@)@G@@@@^@$CL5HD?I-(H0)G15H1OI )@@G@@G))GD3^[0IT>I(=H8)I1-IL(GD+H->^@$^@,@A@@@@^@)^@)^@)^@)^[HETB^@)^@1A@8 )5OJ )@@G@@^@,^@)@B@@@@^@$F-PHD3^[,H94^[4JD0G*)E[JDDIE- EK)^8) 0)@A@@@@^@)^@)^@)^@)OK )@@G@@^[HETB^@)^@1A@9 )7^@,^@)@E@@@@^@$CT-H1,H94^[?G(-I1>^[-^[]C(BDDI^[\IK)E[MOL )@@G@@D9#^[+H-\GT:^@$^@,@A@@@@^@)^@)^@)^@)^[HETB^@)^@1AC0 )5^@,^@)@C@@@@^@$D--OM )@@G@@GL>H))H1\I))H9,^[(I->IL-I-(I1>^[^D8)^8) 0)@A@@@@^@)^@)^@)^@)^[HETB^@)^@1ON )@@G@@AC1 )3^@,^@)@A@@@@^@$CT[ET ^[0IL>G1(J@)G(2IL\IK)^8) 0)@^@@@@E[[ELOAK)^@)OO )@@G@@^[GCD]C(G^@,@ @@@@^@)^@)^@)^@)^[KE)2^@)^@5A0) 0)@^@@@@^@)^@)^@)^@)^[ D1^OP )@@G@@^@,^@)___ETB^@)^@6A@?A*) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@6A@?AK) 0)^@)OQ )@@G@@@A@]@@^@)^@)^@)^@)^[HETB^@)^@9A8?A*) 0)^@)@D@]@@^@$D1\I))JD>I))HD!I[?G(!OR )@@G@@*[@@@@*SDFF*@C@@@-. COPYRIGHT 1975 BY UNIVERSITY OF MARYLAND @[@@@-OS )@@G@@. @D@@@-. QUESTIONS CONCERNING THIS SHOULD BE DIRECTED TO: @[@@@-OT )@@G@@. @ @@@-. MARVIN V. ZELKOWITZ @B@@@-. DEPARTMENT OF COU )@@G@@OMPUTER SCIENCE @A@@@-. UNIVERSITY OF MARYLAND @B@@@-. OV )@@G@@ COLLEGE PARK, MARYLAND 20742 @[@@@-. @G@@@-. PERMISSIOOW )@@G@@N TO USE THESE LISTINGS AND THE COMPUTER PROGRAMS THEY@E@@@-. REPRESENOX )@@G@@T IS GRANTED UNDER THE FOLLOWING CONDITIONS: @[@@@-. @G@@@-. OY )@@G@@ 1. UNLIMITED USE MAY BE MADE OF THE PROGRAMS REPRESENTED BY @G@@@-OZ )@@G@@. THESE LISTINGS PROVIDED THAT THE NAME PLUM OR UNIVERSITY OF MARYLANDPA )@@G@@@E@@@-. PL/1 COMPILER REMAINS ASSOCIATED WITH THESE PROGRAMS. @[@@@-PB )@@G@@. @F@@@-. 2. MODIFICATIONS MAY BE MADE TO THE LISTINGS PROVIDPC )@@G@@ED: @[@@@-. @G@@@-. (A) ANY RESULTING PROGRAM, OR REPORT, PPD )@@G@@APER OR DOCUMENTATION @G@@@-. DESCRIBING SUCH PROGRAM WILL CLEAPE )@@G@@RLY INDICATE THAT THE PROGRAM @E@@@-. IS A DIALECT OF PLUM OR IS PF )@@G@@DERIVED FROM PLUM, AND @[@@@-. @G@@@-. (B) ALL SUCH MODIFICAPG )@@G@@TIONS, OTHER THAN TRIVIAL CORRECTIONS @F@@@-. OF ERRORS IN THPH )@@G@@E SOURCE PROGRAMS, SHALL BE REPORTED AND @G@@@-. A BRIEF DESCRIPPI )@@G@@TION OF THE FEATURE ADDED SHALL BE SUBMITTED @C@@@-. TO THE UNPJ )@@G@@IVERSITY OF MARYLAND, AND @[@@@-. @F@@@-. (C) NO PROGRAMSPK )@@G@@ DERIVED FROM THESE LISTINGS SHALL BE SOLD@G@@@-. WITHOUT WRITTENPL )@@G@@ APPROVAL FROM THE UNIVERSITY OF MARYLAND, AND @[@@@-. @F@@@-. PM )@@G@@ (D) COPIES OF THESE PROGRAMS MAY BE TRANSMITTED TO OTHER @G@@@-. PN )@@G@@ LOCATIONS PROVIDED THAT SUCH TRANSMITTALS CLEARLY INDICATE @G@@@-PO )@@G@@. WHETHER THE PROGRAMS ARE EXACT COPIES OF THE UNIVERSITY OF PP )@@G@@@E@@@-. MARYLAND PLUM COMPILER OR ARE MODIFICATIONS TO IT. @[@@@-PQ )@@G@@. @G@@@-. 3. THESE CONDITIONS ONLY APPLY TO THE PLUM COMPILERPR )@@G@@ ITSELF, @F@@@-. AND ARE NOT MEANT TO APPLY TO ANY PROGRAM WRITTEN PS )@@G@@USING PLUM. @E@@@-. THE PURPOSE OF THESE CONDITIONS IS TO ALLOW ANY USPT )@@G@@ER TO @F@@@-. EXPERIMENT WITH THE COMPILER AS LONG AS THE RESULTING PRPU )@@G@@ODUCT @G@@@-. IS NOT SOLD AND AS LONG AS IT IS KNOWN THAT THE PRODUCT PV )@@G@@DEVELOPED @#@@@-. FROM PLUM. @[@@@-. @[@@@-. @[@@@-. PW )@@G@@@[@@@-. @[@@@-. @[@@@-/. @[@@@). @]@@@) AXR$ @]@@@)PX )@@G@@ DCLRG@]@@@) REGS @]@@@) ALREG@#@@@) UNLIST . PY )@@G@@@]@@@)@ADD PLTVDS @]@@@)@ADD PLCGST @]@@@)@ADD PLDSAW @]@@@) CEND PZ )@@G@@@#@@@) LIST . @#@@@)/ PLWORD @]@@@) PLCGD@]@@@)QA )@@G@@ PLSD @]@@@) PLIG @A@@@)GGKNST CSECT 3 . MY CONSTANTS QB )@@G@@@C@@@)K332S9 EQU DCVDTB . LOG 10/LOG 2 * 2**14@G@@@)KKSCL EQU QC )@@G@@ 14 . HOW FAR TO SHIFT CONVERSION CONSTANT (K332S9)@B@@@)KBXMXPQD )@@G@@ EQU 35 . MAX PREC FOR BIN FIX @B@@@)KDXMXP EQU 18 . MAX PREC QE )@@G@@FOR DEC FIX @C@@@)KBFMXP EQU 60 . MAX PREC FOR BIN FLOAT @C@@@)QF )@@G@@KSFTMX EQU 36 . SINGLE WORD MAX SHIFT COUNT@E@@@)XGCOMM EQU 02000QG )@@G@@0 . FLAG FOR COMMUTATIVE COMPARISONS (=,_)@ @@@)GGNEMS SF 0537 . TNEQH )@@G@@,U @]@@@)GGNHMS SF @]@@@)GGNLMS SF @#@@@)DGBTMK SFW 0 . @D@@@)QI )@@G@@ +SD0STR,SDARST+SDCHBT,0,1 . BIT STRING FLAGS @D@@@)DGTRFA SFWQJ )@@G@@ 0 . SET TRUE AND FALSE @C@@@) LA,U A3,'1' QK )@@G@@. ASSUME TRUE @D@@@) LA,U A3,'0' . NOPE FAQL )@@G@@LSE IF HERE @D@@@)DGTNE SF 0510000 . OPCODE FOR TNE QM )@@G@@@]@@@) CEND @#@@@)XGACT2 CSECT 3 . @[@@@). @E@@@). TARQN )@@G@@GETING AND STAGEING FOR RELATIONAL COMPARES @[@@@). @#@@@)XGRCABQO )@@G@@* LABEL . @D@@@)FILL(1) SAC GGTARI,GGSREL . TARGETING,STAGEING QP )@@G@@@E@@@)FILL(1) SAC GGFRAB,GGFCAB . FLOAT REAL,FLOAT COMPLEX @E@@@)QQ )@@G@@FILL(1) SAC GGBRAB,GGBCAB . BIN REAL,BIN COMPLEX @#@@@)XGRCBAQR )@@G@@* LABEL . @D@@@)FILL(1) SAC GGTARI,GGSREL . TARGETING,STAGEING QS )@@G@@@E@@@)FILL(1) SAC GGFRBA,GGFCBA . FLOAT REAL,FLOAT COMPLEX @E@@@)QT )@@G@@FILL(1) SAC GGBRBA,GGBCBA . BIN REAL,BIN COMPLEX @[@@@). QU )@@G@@@F@@@). BIT STRING RELATIONAL COMPARE TARGETING AND STAGEING QV )@@G@@@^@@@). TABLES @[@@@). @#@@@)XGCMBA* LABEL . @F@@@)QW )@@G@@FILL(1) SAC XGCMCC,XGCNBA . COMPARING STRINGS OR NUMBERS? @F@@@)QX )@@G@@FILL(1) SAC 0,XGCMST . THIS IS FOR STRING MAX LEN MODE@#@@@)QY )@@G@@XGCNBA LABEL . @ @@@)FILL(1) SAC GGTCMP,GGSCMP . @ @@@)FILL(1) SAC QZ )@@G@@ GGFRBA,GGFCBA @ @@@)FILL(1) SAC GGBRBA,GGBCBA . @D@@@)FILL(1) SAC RA )@@G@@ GSCMBA,0 . STRING COMPARE @#@@@)XGCMAB* LABEL . @F@@@)RB )@@G@@FILL(1) SAC XGCMCC,XGCNAB . COMPARING STRINGS OR NUMBERS? @F@@@)RC )@@G@@FILL(1) SAC 0,XGCMST . THIS IS FOR STRING MAX LEN MODE@#@@@)RD )@@G@@XGCNAB LABEL . @ @@@)FILL(1) SAC GGTCMP,GGSCMP . @ @@@)FILL(1) SAC RE )@@G@@ GGFRAB,GGFCAB . @ @@@)FILL(1) SAC GGBRAB,GGBCAB . @D@@@)FILL(1) SAC RF )@@G@@ GSCMAB,0 . STRING COMPARE @G@@@)XGCMST LABEL . . RG )@@G@@ TARGETING AND STAGING FOR COMPARES @F@@@). RH )@@G@@ WHEN IN MAX LEN MODE (I THINK) @ @@@)FILL(1) SAC GGTNRI )@@G@@OP,GGCMSM . @ @@@)FILL(1) SAC GGNOOP,0 . @#@-@)XGORTB* LABEL . RJ )@@G@@@B@@@-XGORTB* LABEL . OR @ @@@)FILL(1) SAC XGCMRK )@@G@@CC,XGOR1 . @B@@@)FILL(1) SAC 0,XGAO2 . SAME FOR AND/OR@#@-@)XGANTBRL )@@G@@* LABEL . @B@@@-XGANTB* LABEL . AND @ @@@)FILL(1RM )@@G@@) SAC XGCMCC,XGAN1 . @B@@@)FILL(1) SAC 0,XGAO2 . SAME FOR AND/ORRN )@@G@@@#@-@)XGNOTT* LABEL . @B@@@-XGNOTT* LABEL . NOT RO )@@G@@@ @@@)FILL(1) SAC XGCMCC,XGNOT1 . @^@@@)FILL(1) SAC 0,XGNOT2 .@#@-@)RP )@@G@@XGCATT* LABEL . @C@@@-XGCATT* LABEL . CONCATTENATE RQ )@@G@@@ @@@)FILL(1) SAC XGCMCC,XGCAT1 . @^@@@)FILL(1) SAC 0,XGCAT2 .@#@@@)RR )@@G@@XGOR1 LABEL . @ @@@)FILL(1) SAC GGTBTS,GGSNOP . @ @-@)FILL(1) SAC RS )@@G@@ GGAOCT,GGOR . @ @@@-FILL(1) SAC GGAOCT,0, . @#@@@)XGAN1 LABELRT )@@G@@ . @ @@@)FILL(1) SAC GGTBTS,GGSNOP . @ @-@)FILL(1) SAC GGAOCT,GGARU )@@G@@ND . @ @@@-FILL(1) SAC GGAOCT,0, . @#@@@)XGNOT1 LABEL . @ @@@)RV )@@G@@FILL(1) SAC GGTNBT,GGSNOP . @ @-@)FILL(1) SAC GGNOT,GGNOOP . @^@@@-RW )@@G@@FILL(1) SAC GGNOT,0, .@#@@@)XGCAT1 LABEL . @ @@@)FILL(1) SAC GGTCRX )@@G@@HR,GGSNOP . @ @-@)FILL(1) SAC GGAOCT,GGAOCT . @ @@@-FILL(1) SAC GGAORY )@@G@@CT,0, . @F@@@)XGAO2 LABEL . THIS IS FOR STRING RZ )@@G@@MAX LEN MODE@H@-@)FILL(1) SAC GGTNOP,GGSLMX . FOR NOW, ASSUME ALL LESA )@@G@@NGTHS ARE IN HALFWS, SO @ @@@-FILL(1) SAC GGTNOP,GGSNOP . @H@-@)FILL(1SB )@@G@@) SAC GGLXFF,GGLXFH. NEED NO STAGING AND ONLY ONE ICODE ROUTIE SC )@@G@@@^@<@-FILL(1) SAC GGMSUM,0 .@^@@@ TOP OF STACK @#@@@)SR )@@G@@ GNTR 2 . @F@@@) IF SDARST,OFF,SGDCLS THEN,GGTAR2 . ->SS )@@G@@COMPARING ARITHS @B@@@) MOVE DGFLGZ,0,I . CLEAR IGEN FLAGS@F@@@)ST )@@G@@ LOAD X4,4,I . OFFSET TO STR COMPARE ICODE (GGSCM) @F@@@)SU )@@G@@ IF SDCHBT,OFF,SGDCLS THEN,GGTRET . RIGHT IS CHAR STR. @G@@@)SV )@@G@@ IF SDCHBT,OFF,SGDCLS+DCGSLT THEN,GGTRET . -> LEFT IS CHAR STR SW )@@G@@@D@@@) SET IGBTCP,ON,DGFLGZ . BOTH ARE BIT STRS @#@@@)GGTRETSX )@@G@@* LABEL . @F@@@) STORE X4,DCGSV2+9 . SO RETURN CODE WILL BE SY )@@G@@RETURNED @#@@@) GRTN 2 @[@-@). @[@-@). @^@-@). SZ )@@G@@ MAX OF (L1,L2) @[@-@). @[@-@). @#@-@)GGSLMX LABEL . @^@-@)TA )@@G@@. 0=FULL FULL @^@-@). 1=HALF FULL @^@-@). 2=FTB )@@G@@ULL HALF @^@-@). 3=HA F HALF @[@-@). @#@-@) GNTTC )@@G@@R 2 .@D@-@) LOAD X4,0,I . SET FULL FULLL @C@-@)TD )@@G@@ IF SGDHLF,OFF,SGDID THEN,GGSLX1 . @^@-@) ADD X4,TE )@@G@@2,I . @#@-@)GGSLX1 LABEL . @D@-@) IF SGDHLF,OFF,SGDID+DCGSTF )@@G@@LT THEN,GGSLX2 . @^@-@) ADD X4,1,I . @#@-@)GGSLX2 LABEL . TG )@@G@@@B@-@) SET SGDHLF,OFF,SGDID+DCGSLT . @C@-@) GOTO GGTTH )@@G@@RET . ->RETURN @B@@@)/. TARGETTING FOR BITWISE TI )@@G@@AND/OR@#@@@)GGTBTS LABEL . @#@@@) GNTR 2 . @G@-@) IF STJ )@@G@@DARST,OFF,SGDCLS THEN,GGTBAO . OP IS IN ARITH QUANTITIES @C@@@) TK )@@G@@ LINK GGTCHB . CHECK AND CONVERT ARGR@D@-@) XGPOP . TL )@@G@@ NOW CHECK 2ND ARG @D@@@- XGPOP . NOWTM )@@G@@ CHECK 2ND ARG @]@@@)GGTBT1 LABEL@C@@@) LINK GGTCHB . CHECTN )@@G@@K AND CONVERT ARGL@G@@@) SUB X7,DCGSLT,I . 'PUT' THE OTHERTO )@@G@@ ARG BACK ON THE STACK @C@-@) LOAD X4,0,I . CLEAR RETIRN CODTP )@@G@@E @A@-@) GOTO GGTRET . RETURN @C@@@- GOTO GGTRETQ )@@G@@0 . RETURN CLEAR CODE @[@-@). @C@-@). TARGETTING TR )@@G@@FOR ARITHMETIC AND/OR @[@-@). @]@-@)GGTBAO LABEL@C@-@) LOAD TS )@@G@@ X3,X7 . FOR GGTNAB AND CGCONV@E@-@) LINK GGTNAB . COMPTT )@@G@@UTE (P,0) X5 PTS TO A(REALAW)@C@-@) CGCONV DGGSTK R,X3 . CONVTU )@@G@@ERT ARGR @G@-@) GENMR GGTFRC . FORCE TO POSITIVE (USES X5 TV )@@G@@AS SET IN GGTNAB) @C@-@) LOADA X3,SGDAID+DCGSLT . POINT TO ARGL TW )@@G@@@E@-@) LINK GGTNAB . COMPUTE (P,0) X5 PTS TO AREAL) @C@-@)TX )@@G@@ CGCONV R,X7 R,X3 . CONVERT ARGL @^@-@) LOAD A7,SGTY )@@G@@DPRE .@B@-@) SUB A7,SGDPRE+DCGSLT . PR-PL @B@-@) IF ATZ )@@G@@7,EQ,0,I THEN,GGTBA1 . PR=PL @E@-@) LOADA X5,SGDRBS+DCGSLT . UA )@@G@@ASSUME WE'LL SCALE ARGL @C@-@) IF A7,GE,1,I THEN,GGTBA2 . -> PLRIGHT IS CHAR @H@@@=VG )@@G@@ IF SDCHBT,ON,SGDCLS THEN,GGTRE0 . ->RIGHT IS BIT, RESULT IS LVH )@@G@@EFT @F@=@) IF SDCHBT,OFF,SGDCLS+DCGSLT THEN,GGTRET . ->LEFT ISVI )@@G@@ CHAR @B@=@) ADD X4,1,I . BOTH ARE BIT STR@A@=@) GOTO VJ )@@G@@ GGTRET . RETURN @]@=@)GGTCH1 LABEL@E@@@) SET SDCHBT,OFF,SGVK )@@G@@DCLS+DCGSLT . SET RESULT TO BE CHAR @A@=@) GOTO GGTRET . RETUVL )@@G@@RN @A@@@= GOTO GGTRE0 . RETURN @[@@@). @E@@@). VM )@@G@@ STRING STAGEING------------------------ @[@@@). @B@@@)VN )@@G@@GGSNOP LLOC . STAGEING FOR STRINGS @D@@@) LJMP . VO )@@G@@ NOTHING TO DO HERE @[@@@). @G@@@). THIS ENSUREVP )@@G@@S TOP STACK ENTRY IS BIT STR AND POPS STACK @[@@@). @#@@@)GGTCHBVQ )@@G@@ LOCAL . @G@@@) IF SDCHBT,ON,SGDCLS THEN,GGTCB1 . -> ITS AVR )@@G@@LREADY BIT STR @#@@@) GENM . @B@@@) GINST OPLA,AGRA3,VS )@@G@@AGRL1,U 'NO' . @^@@@) GFREE AGRL1 . @E@-@) GSET AVT )@@G@@GRL1,AGSTK . SET RESULT IS ON STACK @E@@@- GSET AGRL1,AGSVU )@@G@@TK . SET RESULT IS ON STACK @E@-@) GINST OPLA,AGRA2,AGVV )@@G@@STK,U 'NO' . SET LHS IS TEMP @E@@@- GINST OPLA,AGRA2,AGSTK,U 'VW )@@G@@NO' . SET LHS IS TEMP @D@@@) GSUB EXBCA . RUNTIME CONVERT TVX )@@G@@O BITSTR @#@@@) GFIN . @]@@@)GGTCB1 LABEL@E@@@) MOVE VY )@@G@@ SGDCLS,SDCHBT++SDARST,I . RESULT IS BIT @]@@@) JMP .@[@-@)VZ )@@G@@. @C@-@). ICODE TO FORCE FIXBIN IN X5 TO POS.@[@-@). WA )@@G@@@#@-@)GGTFRC GLBL . @D@-@) GGETGR AGIM1 . A REG TO USE TEMWB )@@G@@PORARILY @A@-@) GINST OPLMA,AGIM1,AGPTX5 . @ @-@) GSET WC )@@G@@ AGPTX5,AGIM1 . @#@-@) GFIN . @[@-@). @G@-@). WD )@@G@@ THIS COMPUTES PREC (Q=0) FOR ARITH TO STRING CONVERSION @[@-@). WE )@@G@@@]@-@)GGTNAB LLOC @B@-@) USING SGDSCT,X3 . FOR THIS ROUTINE@^@-@)WF )@@G@@ LOAD A7,SGDPRE .@D@-@) IF SDFXFL,ON,SGDCLS THEN,GGTNA1 WG )@@G@@ . -> FLOAT@^@-@) LOAD A8,SGDSCL .@^@-@) SLB A8,27 . WH )@@G@@@G@-@) SSA A8,27 . SIGNED SALLE *WI )@@G@@******@^@-@) SUB A7,A8 . P-Q@]@-@)GGTNA1 LABEL@D@-@) IF SWJ )@@G@@DDCBN,ON,SGDCLS THEN,GGTNA2 . BINARY @^@-@) MPYS A7,K332S9 WK )@@G@@@^@-@) SLB A7,KKSCL . @B@-@) ADD A7,1,I . CEIL((P-Q)WL )@@G@@*3.32)@]@-@)GGTNA2 LABEL@C@-@) IF A7,GE,0,I THEN,GGTNA3 . -> P IWM )@@G@@S OKAY@^@-@) LOAD A7,0,I . @]@-@)GGTNA3 LABEL@E@-@) IF AWN )@@G@@7,LT,KBXMXP+1,I THEN,GGTNA4 . -> P OKAY @ @-@) LOAD A7,KBWO )@@G@@XMXP,I . @]@-@)GGTNA4 LABEL@A@-@) STORE A7,DGGPRE . STORE PT WP )@@G@@@A@-@) MOVE DGGSCL,0,I . NO SCALE @B@-@) LOADA X5,1,X3 .WQ )@@G@@ ADDR OF REAL AW @#@-@) LJMP . @C@-@) USING SGDSCT,X7 WR )@@G@@. RETURN TO NORMALCY @B@@@)/. ------ STAGING ROUTINES ------- WS )@@G@@@[@@@). @[@@@). @C@@@). STAGING FOR COMPARISON OPERATWT )@@G@@ORS @[@@@). @#@@@)GGSCMP LABEL . @#@@@) GNTR 2 @E@@@)WU )@@G@@ IF 4,ON,DCGSV2+9 THEN,GGSCM1 . -> ITS A STR CPMP @[@@@). WV )@@G@@@B@@@). ARITH COMPARES INTO BIT STRING @[@@@). @^@@@) WW )@@G@@ LOAD A7,SGDSCL .@H@@@) IF A7,EQ,SGDSCL+DCGSLT THEN,GGSCM1 WX )@@G@@ . ->QL=QR, NO SCALING NEEDED @C@@@) LINK GGSSCL . SCALE SMALWY )@@G@@LER OPERAND @F@@@)GGSCM1 LABEL . SET RESULT WILL BE WZ )@@G@@BIT STRING @G@@@) SET IGRCMP,OFF,DGFLGZ . TELL ICODE TO CONXA )@@G@@VERT TO BIT STRING@E@@@) MOVE SGDAID+DCGSLT,DGBTMK . SET PROPXB )@@G@@ER BITS @G@@@) MOVE AGTMP1,0,I . CLEAR ADDRESS WORD FOR JXC )@@G@@UMP IF COMPLEX @#@@@)GGSRET* LABEL . @#@@@) GRTN 2 @[@@@)XD )@@G@@. @D@@@). STAGEING FOR ''IF TYPE'' RELATIONAL OPERATORS@C@@@)XE )@@G@@. ONLY ONE 'COMPARE' ALLOWED ON THESE @[@@@). @#@@@)GGSRELXF )@@G@@ LABEL . @#@@@) GNTR 2 . @E@@@) LOAD A7,SGDSCL . XG )@@G@@ PICK UP SCALE OF NUM @G@@@) IF A7,EQ,SGDSCL+DCGSLT THXH )@@G@@EN,GGRCM1 . QR = QL, NO SCALING @D@@@) LINK GGSSCL . XI )@@G@@ GO SCALE NUMBERS @#@@@)GGRCM1 LABEL . @ @@@) USING WXJ )@@G@@ORD,X7 . @E@@@) MOVE W1H2+DCGSLT,DXGARG . TYPE OF JUMP FORXK )@@G@@ FALSE@F@@@) MOVE SGDID+DCGSLT,SGDCC,I . SET CONDITION CODE TXL )@@G@@YPE @F@@@) SET IGRCMP,ON,DGFLGZ . TELL ICODE ''IF TEST'' CXM )@@G@@OMPARE@E@@@) MOVE AGTMP1,0,I . CLEAR JUMP ADDRESS WORD XN )@@G@@@B@@@) GOTO GGSRET . RETURN @C@@@)/. ICODEXO )@@G@@ FOR TARGETING AND STAGING @H@@@). GERERATE CODE FOR COMPAXP )@@G@@RES, FUDGING THE INST CODES FOR TESTS @I@@@). DEPENDING OXQ )@@G@@N THE COMPARE, SUBTRACT 2 FROM 1 (BA) OR 1 FROM 2 (AB). @ @@@). XR )@@G@@ FLOATING COMPARES@[@@@). @[@@@). @C@@@) GMODE 'M' XS )@@G@@ . SET BIT FOR PACKING ICODE @#@@@)GGFCBA GLBL . @D@@@) GIFXT )@@G@@R G1FCBA,AGIM2 . SEE IF IN A REG @A@@@) GGETGR AGXTMP XU )@@G@@ . TEMP REG @A@@@) GDBLE OPDL,AGXTMP,AGIM2 . @D@@@) GGOXV )@@G@@TO G2FCBA . GO DO SUBTRACT @F@@@)G1FCBA GLBL . XW )@@G@@ AGIM2 IS ALREADY A REGISTER @C@@@) GSET AGXTMP,XX )@@G@@AGIM2 . POINT TO IT @C@@@)G2FCBA GLBL . MERGE HXY )@@G@@ERE @A@@@) GFLOAT OPDFAN,AGXTMP,AGIM1 . @B@@@) GBAL GGCCTXZ )@@G@@S . GEN PROPER TEST @#@@@)GGFRBA GLBL . @E@@@) GIFR GYA )@@G@@1FRBA,AGRL2 . IS AGRL2 IN A REG YEG? @A@@@) GGETGR AGXTMP YB )@@G@@ . TEMP REG @A@@@) GDBLE OPDL,AGXTMP,AGRL2 . @D@@@) GGOYC )@@G@@TO G2FRBA . GO DO SUBTRACT @F@@@)G1FRBA GLBL . YD )@@G@@ AGRL2 IS IN A REGISTER ALREADY @C@@@) GSET AGXTMP,YE )@@G@@AGRL2 . POINT TO IT @C@@@)G2FRBA GLBL . MERGE HYF )@@G@@ERE @A@@@) GFLOAT OPDFAN,AGXTMP,AGRL1 . @B@@@) GGOTO GGCRTYG )@@G@@S . GEN PROPER TEST @[@@@). @#@@@)GGFCAB GLBL . @E@@@) YH )@@G@@ GIFR G1FCAB,AGIM1 . IS AGIM1 A REGISTER? @A@@@) GGETGYI )@@G@@R AGXTMP . TEMP REG @A@@@) GDBLE OPDL,AGXTMP,AGIM1 . @D@@@)YJ )@@G@@ GGOTO G2FCAB . GO DO SUBTRACT @F@@@)G1FCAB GLBYK )@@G@@L . AGIM1 IS A REGISTER ALREADY @C@@@) GSEYL )@@G@@T AGXTMP,AGIM1 . POINT TO IT @E@@@)G2FCAB GLBL . YM )@@G@@ MERGE HERE FOR SUBTRACT @A@@@) GFLOAT OPDFAN,AGXTMP,AGIM2 . YN )@@G@@@B@@@) GBAL GGCCTS . GEN PROPER TEST @#@@@)GGFRAB GLBL . YO )@@G@@@F@@@) GIFR G1FRAB,AGRL1 . IS AGRL1 A REGISTER ALREADY YP )@@G@@@A@@@) GGETGR AGXTMP . TEMP REG @A@@@) GDBLE OPDL,AGXTMPYQ )@@G@@,AGRL1 . @D@@@) GGOTO G2FRAB . GO DO SUBTRACT YR )@@G@@@E@@@)G1FRAB GLBL . AGRL1 IS IN A REGISTER @C@@@)YS )@@G@@ GSET AGXTMP,AGRL1 . POINT TO IT @E@@@)G2FRAB GLBL . YT )@@G@@ MERGE HERE FOR SUBTRACT @A@@@) GFLOAT OPDFAN,AGXYU )@@G@@TMP,AGRL2 . @B@@@) GGOTO GGCRTS . GEN PROPER TEST @[@@@). YV )@@G@@@ @@@). BINARY COMPARES @[@@@). @#@@@)GGBCBA GLBL . YW )@@G@@@D@@@) GIFR G1BCBA,AGIM2 . IS AGIM2 IN A REG? @A@@@) YX )@@G@@ GGETGR AGXTMP . TEMP REG @ @@@) GINST OPLA,AGXTMP,AGIM2@D@@@)YY )@@G@@ GGOTO G2BCBA . GO DO SUBTRACT @B@@@)G1BCBA GLBYZ )@@G@@L . AGIM2 IS IN A REG NOW @C@@@) GSET AGXTMP,AGIM2 . PZA )@@G@@OINT TO IT @B@@@)G2BCBA GLBL . MERGE HERE FOR SUBTRACT @A@@@) ZB )@@G@@ GINST OPANA,AGXTMP,AGIM1 @B@@@) GBAL GGCCTS . GEN PROPERZC )@@G@@ TEST @#@@@)GGBRBA GLBL . @D@@@) GIFR G1BRBA,AGRL2 . IZD )@@G@@S AGRL2 IN A REG? @A@@@) GGETGR AGXTMP . TEMP REG @ @@@) ZE )@@G@@ GINST OPLA,AGXTMP,AGRL2@D@@@) GGOTO G2BRBA . GO DO SZF )@@G@@UBTRACT @D@@@)G1BRBA GLBL . AGRL2 IS IN A REG ZG )@@G@@@C@@@) GSET AGXTMP,AGRL2 . POINT TO IT @E@@@)G2BRBA GLBZH )@@G@@L . MERGE HERE FOR SUBTRACT @A@@@) GINST OPANAZI )@@G@@,AGXTMP,AGRL1 @B@@@) GGOTO GGCRTS . GEN PROPER TEST @[@@@)ZJ )@@G@@. @#@@@)GGBCAB GLBL . @D@@@) GIFR G1BCAB,AGIM1 . IZK )@@G@@S AGIM1 IN A REG? @A@@@) GGETGR AGXTMP . TEMP REG @ @@@) ZL )@@G@@ GINST OPLA,AGXTMP,AGIM1@D@@@) GGOTO G2BCAB . GO DO SZM )@@G@@UBTRACT @D@@@)G1BCAB GLBL . AGIM1 IS IN A REG ZN )@@G@@@C@@@) GSET AGXTMP,AGIM1 . POINT TO IT @E@@@)G2BCAB GLBZO )@@G@@L . MERGE HERE FOR SUBTRACT @A@@@) GINST OPANAZP )@@G@@,AGXTMP,AGIM2 . @B@@@) GBAL GGCCTS . GEN PROPER TEST @#@@@)ZQ )@@G@@GGBRAB GLBL . @D@@@) GIFR G1BRAB,AGRL1 . IS AGRL1 IN AZR )@@G@@ REG @A@@@) GGETGR AGXTMP . TEMP REG @A@@@) GINST OPLA,ZS )@@G@@AGXTMP,AGRL1 . @D@@@) GGOTO G2BRAB . GO DO SUBTRACZT )@@G@@T @D@@@)G1BRAB GLBL . AGRL1 IS IN A REG @C@@@)ZU )@@G@@ GSET AGXTMP,AGRL1 . POINT TO IT @B@@@)G2BRAB GLBL . MZV )@@G@@ERGE HERE FOR SUBTRACT @A@@@) GINST OPANA,AGXTMP,AGRL2 . @C@@@)ZW )@@G@@/. NOW THAT THE STUFF IS SUBTRACTED... @B@@@). SET UP THZX )@@G@@E PROPER TESTS FOR IT @[@@@). @#@@@)GGCRTS GLBL . @E@@@) ZY )@@G@@ GINST OPAA,AGXTMP,AGDZRO 'NO' . NO NEG 0'S ALLOWED@E@@@) GBOZZ )@@G@@N GGCRTR,IGRCMP . BIT STRING OR IF TEST? @[@@@). @D@@@). AA )@@G@@ BIT STRING CREATION AFTER TEST HERE @[@@@). @G@@@) AB )@@G@@ GAPPN GGTRFA . SET A9,A10 WITH PROPER T/F TESTS @F@@@)AC )@@G@@ GLITRG A9 . ASSUME TRUE (SET UP BEFORE) @E@@@)AD )@@G@@ GLITRG A7 . GENERATE TEST INSTRUCTION@E@@@) AE )@@G@@ GLABEL AGTMP1 . LABEL FOR COMPLEX JUMPS @F@@@) GFRAF )@@G@@EE AGXTMP . FREE THE REGISTER FOR OTHER USE@D@@@) GLIAG )@@G@@TRG A10 . ''FALSE'' BIT HERE @G@@@) GSUB EXA3DV AH )@@G@@. CONVERT A3 TO BIT, CREATE DV FOR BIT @C@@@) GGOTO GAI )@@G@@GCRTE . -> MERGE @ @@@)GGCRTR GLBL . ''IF TEST'' @E@@@)AJ )@@G@@ GSET AGRL2,AGXTMP . SET AW TO POINT TO RESULT @ @@@)GGCRTEAK )@@G@@ GLBL . ->MERGE HERE @E@@@) GNI 07777-IGRCMP . SET BITAL )@@G@@ OFF IN DCGFLGZ @F@@@) GFIN 'POP' . POP OFF EXTRAAM )@@G@@ STACK ELEMENT @D@@@)GGCCTS GLBL . COMPLEX TYPES ''LOOP'' THROUGH AN )@@G@@HERE @D@@@) GAPPN GGFUDG . SET UP TEST IN A7 @C@@@)AO )@@G@@ GLITRG A7 . GENERATE TEST@G@@@) GJUMP AAP )@@G@@GTMP1 . JUMP TO PLACE IN REAL TEST IF FALSE @#@@@) GRTAQ )@@G@@RN . @[@@@). @C@@@). SUBROUTINES TO DO THE STACK MANAGEMENT AR )@@G@@@[@@@). @G@@@)GGFUDG GLBL . SET 'TEST TRUE' AND SET SAS )@@G@@TACK TO BIT STRING@F@@@) LOAD X3,AGXTMP . GET REGISTER AT )@@G@@NUMBER FOR TEST @C@@@) LOAD A7,DXGARG . GET OPCODE AU )@@G@@@E@@@) SLB A7,18 . PUT IN PROPER POSITION @E@@@)AV )@@G@@ ADD A7,RGSWRN,X3 . ADD IN REGISTER NUMBER @E@@@) AW )@@G@@ ADD A7,A0-X0,I . ADD IN OFFSET OF REG @F@@@) STOAX )@@G@@RE A7,DCGSV4+1 . PUT IT WHERE ICODE CAN FIND IT @#@@@) LJMAY )@@G@@P . @D@@@)GGTRFA GLBL . SET UP PROPER T/F BIT LOADS IN A9,A10@H@@@)AZ )@@G@@ MOVE SGDRBS+DCGSLT-FH1,AGSTK . SET TEMP STRING IN STRING STABA )@@G@@CK @F@@@) LOAD X3,AGXTMP . GET REGISTER NUMBER FOR TBB )@@G@@EST @C@@@) LOAD A7,DXGARG . GET OPCODE @E@@@) BC )@@G@@ SLB A7,18 . PUT IN PROPER POSITION @E@@@) ADDBD )@@G@@ A7,RGSWRN,X3 . ADD IN REGISTER NUMBER @E@@@) ADD ABE )@@G@@7,A0-X0,I . ADD IN OFFSET OF REG @F@@@) STORE A7,DCGSBF )@@G@@V4+1 . PUT IT WHERE ICODE CAN FIND IT @E@@@) LOADD A7,DGTRBG )@@G@@FA . SET BITS TRUE, FALSE @G@@@) STORED A7,DCGSV4+3 .BH )@@G@@ PUT THEM WHERE ICODE CAN FIND THEM @[@@@). @C@@@). BI )@@G@@ SEE IF COMPLEX, AND \= OPERATOR@[@@@). @D@@@) IF SDRLCBJ )@@G@@X,OFF,SGDCLS THEN,LJMP . -> REAL @C@@@) LOAD A3,DXGARG . BK )@@G@@ SEE IF \= @C@@@) IF A3,NE,DGTNE THEN,LJMP . -> NOT \= BL )@@G@@@F@@@) LDSC A7,36 . SWITCH BITS FOR FALSE & TRUE BM )@@G@@@G@@@) STORED A7,DCGSV4+3 . PUT THEM WHERE ICODE CAN FIND TBN )@@G@@HEM @#@@@) LJMP . @[@@@)/. @ @@@). STRING COMPBO )@@G@@ARE @[@@@). @#@@@)GSCMAB GLBL . @A@-@) GINST OPLA,AGRA3,BP )@@G@@AGRL1,U @^@@@- GLIT 1 . @A@-@) GINST OPLA,AGRA2,BQ )@@G@@AGRL2,U @^@@@- LA,XU A1,-1 .@F@@@) GGOTO GSCMBB BR )@@G@@. GO CHOOSE PROPER SUB TO CALL @G@@@)GSCMBA GLBL . BS )@@G@@ SWITCH THE ORDER OF COMPARE HERE @D@-@) GINST OBT )@@G@@PLA,AGRA3,AGRL2,U . POINT TO LHS @^@@@- GLIT 1 . @^@@@-BU )@@G@@ LA,U A1,1 . @D@-@) GINST OPLA,AGRA2,AGRL1,U . POINBV )@@G@@T TO RHS @F@@@)GSCMBB GLBL . MREGE HERE TO CHOOSBW )@@G@@E ROUTINE @D@@@- GINST OPLA,AGRA2,AGRL2,U . POINT TO LHS BX )@@G@@@D@@@- GINST OPLA,AGRA3,AGRL1,U . POINT TO RHS @E@@@) BY )@@G@@ GBON GSCMBC,IGBTCP . CALL BIT ROUTINE THERE @F@@@) GSUBZ )@@G@@B EXSTCM . RUNTIME STRING COMPARE ROUTINE @D@@@) GGOCA )@@G@@TO GSCMCC . MERGE TO FINISH @D@@@)GSCMBC GLBL . CB )@@G@@ BIT COMPARE HERE @E@@@) GSUB EXBTCM . CCC )@@G@@ALL FOR BIT COMPARE @E@@@)GSCMCC GLBL . CONTINUCD )@@G@@E THE WORK HERE @C@@@) GLIT 1 . LOAD TRUE CE )@@G@@@ @@@) LA,U A3,'1' . @D@@@) GAPPN GGFXA7 . CF )@@G@@ FIX UP TEST INTO A7@C@@@) GLITRG A7 . GENERATCG )@@G@@E TEST@C@@@) GLIT 1 . LOAD FALSE @ @@@) CH )@@G@@ LA,U A3,'0' . @E@@@) GSUB EXA3DV . PRODUCECI )@@G@@ DV FOR BIT IN A3 @B@@@) GFIN 'POP' . DONE @E@@@)CJ )@@G@@GGFXA7 GLBL . SET STACK TO STRING, AND PRODUCE TEST IN A7@C@@@) CK )@@G@@ LOAD A7,DXGARG . GET TEST @E@@@) SLB A7,18 .CL )@@G@@ PUT IT IN OPCODE FIELD @D@@@) ADD A7,A1,I . CM )@@G@@ ADD ADDRESS OF A1 @F@@@) STORE A7,DCGSV4+1 . PUT IT CN )@@G@@WHER ICODE CAN FIND IT @E@@@) MOVE SGDAID+DCGSLT,DGBTMK . SECO )@@G@@T STACK TO BIT @G@@@) MOVE SGDRBS+DCGSLT-FH1,AGSTK . SET SCP )@@G@@TRING IN TEMP STACK @#@@@) LJMP . @[@@@). @E@@@). CQ )@@G@@ STAGING FOR COMPARES IN STRING-LENGTH STATE @[@@@). @#@-@)CR )@@G@@GGCMSM LABEL @#@+@-GGCMSM LLOCL . @#@@@+GGCMSM LLOC . @D@@@)CS )@@G@@ GFIX SGDCDE+DCGSLT . RESET CODE GENNED @C@@@) LOACT )@@G@@D A8,X11 . SAVE RETURN @#@@@) GENM @^@@@) CU )@@G@@ GFREE AGRL1 . @^@@@) GFREE AGRL2 . @^@@@) GFIN 'POCV )@@G@@P' . @E@@@) LOAD X11,A8 . RESET RETURN ADDRESS CW )@@G@@@E@@@) LOAD A7,1,I . SET SIZE OF STRING VALUE @D@@@)CX )@@G@@ GOTO CBSLLA . GEN CODE TO LOAD 1 @D@-@)/. CY )@@G@@ LOGOCAL AND MISCELLANEOUS I-CODE ROUTINES@D@@@-/. LOGICAL ANDCZ )@@G@@ MISCELLANEOUS I-CODE ROUTINES@#@-@)GGAND GLBL . @A@-@) GINSTDA )@@G@@ OPAND,AGRL2,AGRL1 . @E@-@) GINST OPDSL,AGRL2,AGXR0 . PUDB )@@G@@T BACK IN REGISTER@^@-@) GFIN 'POP' . @#@-@)GGOR GLBL . DC )@@G@@@A@-@) GINST OPOR,AGRL2,AGRL1 . @E@-@) GINST OPDSL,ADD )@@G@@GRL2,AGXR0 . PUT BACK IN REGISTER@^@-@) GFIN 'POP' . @#@@@)DE )@@G@@GGAOCT GLBL . @B@@@) GINST OPLA,AGRA2,AGRL2,U 'NO' . @^@@@)DF )@@G@@ GFREE AGRL2 . @B@@@) GINST OPLA,AGRA3,AGRL1,U 'NO' . DG )@@G@@@^@@@) GFREE AGRL1 . @^@@@) GSUB 'BILTN' . @ @@@) DH )@@G@@ GSET AGRL2,AGSTK . @^@@@) GFIN 'POP' . @#@@@)GGNOT GLBL DI )@@G@@. @B@@@) GINST OPLA,AGRA3,AGRL1,U 'NO' . @^@@@) GFREEDJ )@@G@@ AGRL1 . @B@@@) GSUB 'BILTN' . RUNTIME NEGATE @ @@@) DK )@@G@@ GSET AGRL1,AGSTK . @#@@@)GGNOOP* GLBL . @#@@@) GFIN . DL )@@G@@@[@-@). @[@-@). @B@-@). ICODE FOR RESULT=L(A2)+L(A1) DM )@@G@@@[@-@). @#@-@)GGLAFH GLBL @ @-@) GSET AGXTMP,AGRL1 DN )@@G@@@ @-@) GSET AGRL1,AGRL2 . @#@-@)GGLAHF GLBL @C@-@) DO )@@G@@ GIFR GGLAHH,AGRL2 . A1 TO REG @^@-@) GLOAD AGRL2,1 DP )@@G@@@#@-@)GGLAHH GLBL . @ @-@) GIFR GGLAH3,AGRL2 @^@-@) DQ )@@G@@ GGETGR AGXTMP @A@-@) GINST OPLA,AGXTMP,AGRL2,H1@ @-@) DR )@@G@@ GSET AGRL2,AGXTMP @#@-@)GGLAH3 GLBL @ @-@) GIFR GGLDS )@@G@@AFF,AGRL1 @A@-@) GINST OPAA,AGRL2,AGRL1,H1 @#@-@)GGLAH1 GLBDT )@@G@@L @^@-@) GAPPN GGLPXL . @^@-@) GFIN 'POP' @#@-@)DU )@@G@@GGLAFF GLBL @ @-@) GIFR GGLAF1,AGRL2 . @ @-@) GSEDV )@@G@@T AGXTMP,AGRL2 @ @-@) GSET AGRL2,AGRL1 @ @-@) GSEDW )@@G@@T AGRL1,AGXTMP @ @-@) GIFR GGLAF1,AGRL2 @^@-@) GLODX )@@G@@AD AGRL2,1 @#@-@)GGLAF1 GLBL @A@-@) GINST OPAA,AGRL2,AGRLDY )@@G@@1 @^@-@) GGOTO GGLAH1 @[@-@). @[@-@). @#@-@)GGLPXLDZ )@@G@@ GLBL @C@-@) IF IGITER,OFF,DGFLGZ THEN,LJMP . @A@-@)EA )@@G@@ LOAD A7,SGDRBS+DCGSLT-FH1 @C@-@) IF A7,EQ,SGDRAB+DCEB )@@G@@GSLT-FH1 THEN,LJMP@^@-@) SETGC 2,GGLPX @#@-@) LJMP . EC )@@G@@@#@-@)GGLPX GLBL . @A@-@) GINST OPLA,SGDRAB,AGRL2 @ @-@)ED )@@G@@ GSET AGRL2,SGDRAB @^@-@) GFIN 'POP' @[@-@). EE )@@G@@@[@-@). @ @-@). ICODE FOR MAX(L1+L2) @[@-@). @#@-@)GGLXHHEF )@@G@@ GLBL @ @-@) GIFR GGLXHF,AGRL2 . @^@-@) GGETGR AGEG )@@G@@XTMP @A@-@) GINST OPLA,AGXTMP,AGRL2,H1@ @-@) GSET AGREH )@@G@@L2,AGXTMP . @#@-@)GGLXHF GLBL @ @-@) GIFR GGLXFF,AGRL1 EI )@@G@@@B@-@) GGETGR AGXTMP @A@-@) GINST OPLEJ )@@G@@A,AGXTMP,AGRL1 @ @-@) GSET AGRL1,AGXTMP @^@-@) GGOEK )@@G@@TO GGLXFF @#@-@)GGLXFH GLBL @ @-@) GIFR GGLXFF,AGRL2 EL )@@G@@@^@-@) GGETGR AGXTMP @A@-@) GINST OPLA,AGXTMP,AGRL2,H1 EM )@@G@@@ @-@) GSET AGRL2,AGXTMP @#@-@)GGLXFF GLBL @ @-@) EN )@@G@@ GIFR GGLXF2,AGRL1 @^@-@) GLOAD AGRL1,1 @#@-@)GGLXF2 GLBEO )@@G@@L @ @-@) GIFR GGLXF3,AGRL2 @^@-@) GLOAD AGRL2,1 EP )@@G@@@#@-@)GGLXF3 GLBL @B@-@) GINST OPTLE,AGRL2,AGRL1 'NO' EQ )@@G@@@A@-@) GINST OPLA,AGRL2,AGRL1 @^@-@) GFIN 'POP' ER )@@G@@@]@@@) CEND @]@@@) END .___,U . POINT TO RHS @F@@@)GSCMBBES )@@G@@ GLBL . MREGE HERE TO CHOOS*[S@@@*SDFF*@C@@@/. COET )@@G@@PYRIGHT 1975 BY UNIVERSITY OF MARYLAND @[@@@/. @D@@@/. QUESTIONEU )@@G@@S CONCERNING THIS SHOULD BE DIRECTED TO: @[@@@/. @ @@@/. MAREV )@@G@@VIN V. ZELKOWITZ @B@@@/. DEPARTMENT OF COMPUTER SCIENCE @A@@@/EW )@@G@@. UNIVERSITY OF MARYLAND @B@@@/. COLLEGE PARK, MARYLANEX )@@G@@D 20742 @[@@@/. @G@@@/. PERMISSION TO USE THESE LISTINGS EY )@@G@@AND THE COMPUTER PROGRAMS THEY@E@@@/. REPRESENT IS GRANTED UNDER THE FEZ )@@G@@OLLOWING CONDITIONS: @[@@@/. @G@@@/. 1. UNLIMITED USE MAY FA )@@G@@BE MADE OF THE PROGRAMS REPRESENTED BY @G@@@/. THESE LISTINGS PROVIFB )@@G@@DED THAT THE NAME PLUM OR UNIVERSITY OF MARYLAND@E@@@/. PL/1 COMPILER FC )@@G@@REMAINS ASSOCIATED WITH THESE PROGRAMS. @[@@@/. @F@@@/. 2. FD )@@G@@MODIFICATIONS MAY BE MADE TO THE LISTINGS PROVIDED: @[@@@/. @G@@@/FE )@@G@@. (A) ANY RESULTING PROGRAM, OR REPORT, PAPER OR DOCUMENTATION FF )@@G@@@G@@@/. DESCRIBING SUCH PROGRAM WILL CLEARLY INDICATE THAT THE PRFG )@@G@@OGRAM @E@@@/. IS A DIALECT OF PLUM OR IS DERIVED FROM PLUM, AND FH )@@G@@@[@@@/. @G@@@/. (B) ALL SUCH MODIFICATIONS, OTHER THAN TRIVIAFI )@@G@@L CORRECTIONS @F@@@/. OF ERRORS IN THE SOURCE PROGRAMS, SHALLFJ )@@G@@ BE REPORTED AND @G@@@/. A BRIEF DESCRIPTION OF THE FEATURE ADDEFK )@@G@@D SHALL BE SUBMITTED @C@@@/. TO THE UNIVERSITY OF MARYLAND, ANFL )@@G@@D @[@@@/. @F@@@/. (C) NO PROGRAMS DERIVED FROM THESE LISTFM )@@G@@INGS SHALL BE SOLD@G@@@/. WITHOUT WRITTEN APPROVAL FROM THE UNIVEFN )@@G@@RSITY OF MARYLAND, AND @[@@@/. @F@@@/. (D) COPIES OF THESE PFO )@@G@@ROGRAMS MAY BE TRANSMITTED TO OTHER @G@@@/. LOCATIONS PROVIDED THFP )@@G@@AT SUCH TRANSMITTALS CLEARLY INDICATE @G@@@/. WHETHER THE PROFQ )@@G@@GRAMS ARE EXACT COPIES OF THE UNIVERSITY OF @E@@@/. MARYLAND FR )@@G@@PLUM COMPILER OR ARE MODIFICATIONS TO IT. @[@@@/. @G@@@/. 3. FS )@@G@@THESE CONDITIONS ONLY APPLY TO THE PLUM COMPILER ITSELF, @F@@@/. ANFT )@@G@@D ARE NOT MEANT TO APPLY TO ANY PROGRAM WRITTEN USING PLUM. @E@@@/. THFU )@@G@@E PURPOSE OF THESE CONDITIONS IS TO ALLOW ANY USER TO @F@@@/. EXPERIMEFV )@@G@@NT WITH THE COMPILER AS LONG AS THE RESULTING PRODUCT @G@@@/. IS NOT SFW )@@G@@OLD AND AS LONG AS IT IS KNOWN THAT THE PRODUCT DEVELOPED @#@@@/. FRFX )@@G@@OM PLUM. @[@@@/. @[@@@/. @[@@@/. @[@@@/. @[@@@/. FY )@@G@@@[@@@//. @#@@@9 AXR$ . @#@@@9 DCLRG . @#@@@9 FZ )@@G@@ UNLIST @#@@@9@ADD,P PLTVDS @#@@@9 LIST . @#@@@9@ADD,PGA )@@G@@ PLCGST @#@@@9@ADD,P PLDSAW @#@@@9 CEND . @#@@@9 GB )@@G@@ PLSD . @#@@@9 PLAC . @#@@@9 PLAR . @#@@@9 GC )@@G@@ PLCGD . @C@@@9 PLIG . ICODE EQU'S @#@@@9GD )@@G@@ PLWORD .@^@@@9. ICODE FLAGS @^@@@9CODEX DSECT 12 GE )@@G@@. @#@@@9CDINST SF . @^@@@9 ORIGIN CDINST .@#@@@9CDOP GF )@@G@@ SS . @#@@@9CDUFLD SH . @^@@@9 ORIGIN CDINST .@#@@@9GG )@@G@@CDINPT SH . @#@@@9 DEND . @D@@@9DGRSET EQU 0001 . GH )@@G@@ SINGLE ENTRY POINT @C@@@9DGRMT EQU 0002 . RGI )@@G@@EMOTE ENTRY @C@@@9DGCONT EQU 0004 . GENM ENTRY @C@@@9GJ )@@G@@DGXTED EQU 0010 . IMMEDIATE DATA FLAG@C@@@9DGXTDL EQU 002GK )@@G@@0 . IN-SUBROUTINE FLAG @D@@@9/. TITLE PLUM - CODE GENERATOR: INTGL )@@G@@ERPRETIVE CODER @^@@@9AWRGPT EQU AWRWPT . @#@@@9IGCD CSECT 3 .GM )@@G@@@ @@@9 USING CODEX,X10 . @#@@@9XGCODE* GNTR 4 .@C@@@9 GN )@@G@@ LOAD F,DGRSET,I . SINGLE ENTRY @ @@@9 GOTO GSTRT15GO )@@G@@ . @#@@@9XGENR* GNTR 4 . @ @@@9 LOAD F,DGRMT,I . @ @@@9GP )@@G@@ GOTO GSTAR11 . @E@@@9XGENMR* GNTR 4 . MGQ )@@G@@ULTIPLE REMOTE ENTRY @A@@@9 LOAD F,DGCONT+DGRMT,I . @^@@@9GR )@@G@@ GOTO GSTAR11 .@#@@@9XGENM* GNTR 4 . @ @@@9 LOAD F,DGS )@@G@@GCONT,I . @#@@@9GSTRT15 LABEL @D@@@9 USING WORD,A0 . GT )@@G@@ GET PTR TO ICODES @^@'@9 SUB A0,1,I . @B@'@9 LOAGU )@@G@@D X2,W1H2,*A0 . GET PTR@B@@@' LOAD X2,W1H2,A0 . GGV )@@G@@ET PTR@#@@@9GSTAR11 LABEL . @D@'@9 SETGC 6,0,X2 . SGW )@@G@@ET TO REAC ICODE @D@@@'. SETGC 6,0,X2 . SET TO READ IGX )@@G@@CODE @ @@@' LOAD X1,W1U,X2 . @ @@@' LOADXI X1,1,I GY )@@G@@. @ @@@' LOAD A1,KLCH6W . @E@@@9 MOVE DGSTOR,0,GZ )@@G@@I . CLEAR BASE-DISP CALC. @ @@@9 MOVE DGADMD,0,I . HA )@@G@@@#@@@9GNEXT LABEL @C@@@9 GETC . ICODE IHB )@@G@@N A8 @C@@@9 SRBD A8,1 . FLAG IN A9 @D@@@9 HC )@@G@@ LOAD X4,A8 . PUT INTO X REG @H@@@9 GOTO *HD )@@G@@GBRTBL,X4 . -> ACTION APPROPRIATE TO OP-CODE @B@@@9. HE )@@G@@ ICODE OPERAND DECODER @ @@@9GARGMK LLOC . FLAG DECODER HF )@@G@@@A@@@9 GETC . GET HIGH ORDER BITS@F@@@9 SLBD A7,36+6 HG )@@G@@ . ACCUMULATE HIGH AND LOW BITS IN A7 @A@@@9 GETC . GET LOWHH )@@G@@ ORDER BITS @C@@@9 ADD A7,A8 . ENTIRE FLAG IN A7@ @@@9HI )@@G@@ LJMP . -> RETURN @E@@@9GARG LLOC . GHJ )@@G@@ET AW FROM ARGUMENT @B@@@9 GETC . TYPE,J HK )@@G@@@C@@@9 LOAD A3,A8 . LEAVE J ONLY @G@@@9 ANDHL )@@G@@,U A3,017 . *******@^@@@9 HM )@@G@@ LOAD A10,A4 . @C@@@9 SRB A8,4 . GET TYPE HN )@@G@@@^@@@9 LOAD X2,A8 . @C@@@9 GETC . GHO )@@G@@ET ARGUMENT @C@@@9 GOTO *$+1,X2 . GO TO ROUTINE@D@@@9HP )@@G@@ +GARG0A . IMMEDIATE DATA @B@@@9 +GAHQ )@@G@@RG1 . STACK @C@@@9 +GARG2 . PHR )@@G@@ERMANENT @C@@@9 +GARG3 . PARAMETER @#@@@9HS )@@G@@GARG3 LABEL . @C@@@9 ADD A8,DCGSV4,I . GET PARAMETERHT )@@G@@@^@@@9 LOAD X2,A8. @D@@@9 LOAD X2,0,X2 . GHU )@@G@@ET PARAMETER REG. @B@@@9 LJMP . RETURN @#@@@9HV )@@G@@GARG2 LABEL . @E@@@9 ADD A8,+(IN 63,U,1,AGAW) . PEHW )@@G@@RMANENT @C@@@9 GOTO GARG0 . -> RETURN @C@@@9HX )@@G@@GARG0A LABEL . IMMEDIATE DATA @E@@@9 SET DGXHY )@@G@@TED,ON . SET FLAG FOR IMMEDIATE DATA @C@@@9 SLB A10,6 . HZ )@@G@@ GET HIGH ORDER BITS@D@@@9 ADD A8,A10 . ADD TO LOW ORIA )@@G@@DER BITS @D@@@9 MOVE A10,0,I . CLEAR J CODE REGISTER IB )@@G@@@ @@@9 GOTO GARG0 .@#@@@9GARG1 LABEL . @E@@@9 IC )@@G@@ ADD A8,W1U,X7 . GET STACK ENTRY ADDRESS @#@@@9GARG0 LABID )@@G@@EL . @^@@@9 LOAD X2,A8 . @B@@@9 LJMP . IE )@@G@@ RETURN @E@@@9GADRAW LLOC . RELATIVE PTR PARAMEIF )@@G@@TER @F@@@9 LOAD X5,X1 . GET START OF RELATIVE ADDIG )@@G@@RESS @D@@@9 GETC . GET DISPLACEMENT @D@@@9IH )@@G@@ SLBD A7,42 . GET LOW 6 BITS @C@@@9 GETII )@@G@@C . LOW 6 BITS @F@@@9 ADD A7,A8 . IJ )@@G@@ GET FULL 12 BIT DISPLACEMENT @D@@@9 SLB A7,24 . IK )@@G@@ PROPAGATE SIGN @G@@@9 SSA A7,24 . IL )@@G@@ *******@E@@@9 ADD X5,A7 . SIM )@@G@@ET NEW ICODE ADDRESS @B@@@9 LJMP . RETURN IN )@@G@@@D@@@9GBRTBL LABEL . BRANCH TABLE @^@@@9LBLAD IO )@@G@@ FORM 18,18 .@E@@@9 LBLAD 0,GNEXT . 0 -> NULL, NEXIP )@@G@@T ICODE @C@@@9 LBLAD 0,IGLIT0 . GLITRG, GLIT @A@@@9IQ )@@G@@ LBLAD 0,IGMOV0 . 04 GMOVE@A@@@9 LBLAD 0,IGDRX0 . 06IR )@@G@@ GDBLE@B@@@9 LBLAD 0,IGRX0 . 010 GINST @B@@@9 LBIS )@@G@@LAD 0,IGFRX0 . 012 GFLOAT @B@@@9 LBLAD 0,IGMVI0 . 014 GMVIT )@@G@@I, GXI@B@@@9 LBLAD 0,IGOI0 . 016 GOI, GNI@C@@@9 LBIU )@@G@@LAD 0,IGIFO0 . 020 GIFO, GIFE @B@@@9 LBLAD 0,IGJGD0 . 0IV )@@G@@22 GJGD @B@@@9 LBLAD 0,IGLABEL . 024 GLABEL @B@@@9 IW )@@G@@ LBLAD 0,IGGOTO0 . 026 GGOTO @B@@@9 LBLAD 0,IGBAL0 . 0IX )@@G@@30 GBAL @B@@@9 LBLAD 0,IGAPPN0 . 032 GAPPN @C@@@9 IY )@@G@@ LBLAD 0,IGON0 . 034 GBOFF , GBON @C@@@9 LBLAD 0,IGMRK0IZ )@@G@@ . 036 GMRK, GUSE @B@@@9 LBLAD 0,IGRTRN0 . 040 GRTRN JA )@@G@@@B@@@9 LBLAD 0,IGFREE0 . 042 GFREE @B@@@9 LBLAD 0JB )@@G@@,IGSET0 . 044 GSET @ @@@9 LBLAD 0,IGLOAD0 . @ @@@9 JC )@@G@@ LBLAD 0,IGSHIN0 . @ @@@9 LBLAD 0,IGSHIFT . @ @@@9 JD )@@G@@ LBLAD 0,IGFSR0 . @B@@@9 LBLAD 0,IGIFR0 . 056 GIFR,GIFX JE )@@G@@@B@@@9 LBLAD 0,IGBRC0 . 060 GJUMP @ @@@9 LBLAD 0JF )@@G@@,IGSUB0 . @ @@@9 LBLAD 0,IGGETGR0 . @ @@@9 LBLAD 0,JG )@@G@@IGGTT0 . @D@@@9 LBLAD 0,IGFIN0 . 070 GFIN, GFIN 'POP' JH )@@G@@@C@@@9 LBLAD 0,IGBR0 . 072 GBR ( OFF, ON )@ @@@9 LBJI )@@G@@LAD 0,IGKEEP0 . @C@@@9 LBLAD 0,IGLMJ$ . 076 GLMJ, GCJMP JJ )@@G@@@E@@@9IGLMJ$ LABEL . LOAD $+1 INTO AW REGISTER@C@@@9JK )@@G@@ LINK RGXLD . GET REGISTER@E@@@9 JN A9,JL )@@G@@IGCJMP . -> REALLY GCJMP COMMAND @B@@@9 LOAD X2,0,X2 .JM )@@G@@ GET RSW@ @@@9 USING RGSWRD,X2 . @G@@@9 LOAJN )@@G@@D A3,07454*4,I . SET LMJ OP CODE (LEAVE 4 BITS FOR REG #)@D@@@9 JO )@@G@@ ADD A3,RGSWRA . SET LMJ RN,$+1 @F@@@9 SLB A3,JP )@@G@@22 . LEAVE ROOM FOR ADDRESS IN INST @B@@@9 LOADXM A3JQ )@@G@@,X10 . GET $ @B@@@9 ADD A3,1,I . GET $+1JR )@@G@@@A@@@9 STORE A3,CDINST,*X10 . @A@@@9 GCORE 0 'LABEL'JS )@@G@@,GEND0 . @ @@@9IGDJZ0 LABEL .@F@@@9 LOAD A7,JT )@@G@@071*020+OPDJZ,I . F AND J FIELD FOR DJZ @F@@@9 GOTO IGCJU )@@G@@JP1 . -> MERGE WITH TEST-JUMP PROCESSING @F@@@9IGCJMP LABEL JV )@@G@@ . -> CONDITIONAL JUMP GENERATION @G@@@9 LOAD A7,JW )@@G@@074*020,I . LOAD OPCODE F-FIELD FOR CONDITIONAL JUMP @B@@@9 ADDJX )@@G@@ A7,A10 . ADD J FIELD@D@@@9IGCJP1 LABEL . MERGEJY )@@G@@ POINT FROM DJZ @ @@@9 SLB A7,4 .@D@@@9 LOAJZ )@@G@@D X2,W1,X2 . POINT TO RSW USING RAW @ @@@9 USING RGSWRD,X2KA )@@G@@ .@D@@@9 ADD A7,RGSWRN,X2 . ADD REGISTER NUMBER @D@@@9KB )@@G@@IGCJP2 LABEL . MERGE POINT FROM JGD @F@@@9 SLBKC )@@G@@ A7,4+18 . LEFT JUSTIFY INSTRUCTION IN WORD @C@@@9 LINKD )@@G@@K GARG . GET LABEL AW @E@@@9 GOTO IGBRC3 .KE )@@G@@ -> MERGE WITH JUMP GENERATION@ @@@9IGJGD0 LABEL .@D@@@9KF )@@G@@ LINK RGXLD . GET POINTER TO RAW @ @@@9 USIKG )@@G@@NG RGSWRD,X2 .@G@@@9 LOAD A7,070*0400,I . LOAD SHKH )@@G@@IFTED OPCODE FOR JGD @C@@@9 LOAD X2,W1,X2 . POINT TO RGKI )@@G@@SW @D@@@9 ADD A7,RGSWRA . ADD ADDRESS OF REGISTER@D@@@9KJ )@@G@@ AND,U A7,RGSWRR . CHECK IF R-REGISTER @D@@@9 ADDKK )@@G@@ A7,A8 . DO CONVERSION IF R-REG @ @@@9 GOTO IGCJP2 KL )@@G@@ .@G@@@9IGIFO0 LABEL . TEST IF RSWN IS ODD (EVEN), TKM )@@G@@HEN JUMP @B@@@9 LINK GARG . GET AW @C@@@9 KN )@@G@@ LOAD X2,W1,X2 . POINT TO RSW @ @@@9 USING RGSWRD,X2KO )@@G@@ .@D@@@9 LOAD A7,RGSWRN,X2 . GET REGISTER NUMBER @C@@@9KP )@@G@@ JN A9,IGIFE0 . -> JUMP IF EVEN @H@@@9 IF A7,KQ )@@G@@ODD THEN,IGGOTO0 ELSE,GEND1 . -> REG IS ODD / SKIP JUMP LOC @F@@@9IGIFE0KR )@@G@@ LABEL . JUMP TO LOC IF REG NUMBER IS EVEN @G@@@9 KS )@@G@@ IF A7,EVEN THEN,IGGOTO0 ELSE,GEND1 . -> REG IS EVEN, JUMP @F@@@9KT )@@G@@IGMRK0 LABEL . STORE NEXT AVAILABLE ADDRESS IN AW @D@@@9KU )@@G@@ LINK GARG . GET POINTER TO AW IN X2@B@@@9 IF KV )@@G@@ A9,LT,0,I THEN,IGUSE0 . @F@@@9 STORE X10,W1H2,X2 . STOKW )@@G@@RE VALUE IN LOWER HALF OF AW @ @@@9 GOTO GEND0 .@D@@@9KX )@@G@@IGUSE0 LABEL . SET GEN ADDRESS TO AW @ @@@9 LOAKY )@@G@@DXM X10,W1H2,X2 .@ @@@9 GOTO GEND0 .@#@@@9IGFIN0 LAKZ )@@G@@BEL . @D@@@9 IF A9,GE,0,I THEN,GFIN1 . -> NO 'POP' @C@@@9LA )@@G@@ ADD X7,DCGSLT,I . POP STACK @B@@@9 GOTO GFILB )@@G@@N1 . -> QUIT@D@@@9GEND1 LABEL . SKIP ONLC )@@G@@E ICODE AW @#@@@9 GETC . @#@@@9 GETC . @#@@@9GEND0 LD )@@G@@ LABEL . @E@@@9 IF DGCONT+DGXTDL,ON THEN,GNEXT . -> NOT DOLE )@@G@@NE @#@@@9GFIN1 LABEL . @D@@@9 IF DGRMT,ON THEN,GEXIT1 LF )@@G@@. -> REMOTE EXIT @B@@@9 IF A1,EQ,KLCH6W THEN,GFIN2 . @^@@@9LG )@@G@@ USING WORD,A0 .@D@@@9 ADD X1,1,I . UP RETULH )@@G@@RN POINTER @#@@@9GFIN2 LABEL . @^@;@9 SUB A0,1,I . @E@@@9LI )@@G@@ STORE X1,W1H2 . FUDGE RETURN ADDRESS @^@'@9 LJ )@@G@@ ADD A0,1,I . @#@@@9GEXIT1 LABEL . @^@@@9 GRTN 4 . LK )@@G@@@#@@@9IGLIT0 LABEL . @E@@@9 JP A9,IGLITRG . -> REALLL )@@G@@LY LITERAL IN REG @C@@@9 GETC . GET WORDS LM )@@G@@@B@@@9 IF A1,EQ,KLCH6W THEN,IGLIT1 . @D@@@9 ADD X1,LN )@@G@@1,I . POINT TO WORD LIST @ @@@9 LOAD A1,KLCH6W . LO )@@G@@@#@@@9IGLIT1 LABEL . @^@@@9 USING WORD,X1 .@C@@@9 MOVLP )@@G@@E CDINST,W1,R,A8 . MOVE LIST @^@@@9 USING WORD,X1 .@^@@@9LQ )@@G@@ ADD X1,A8 . @D@@@9 GCORE R,A8 'LABEL',GEND0 . -> UP LR )@@G@@POINTER @#@@@9IGLITRG LABEL . @C@@@9 GETC . LS )@@G@@ GET REG NAME @F@@@9 ADD A8,DCGSV4-A7+1,I . GET PARAMETERLT )@@G@@ REG CONTENTS @ @@@9 LOADA A6,DCGSV4 . @B@@@9 IF LU )@@G@@ A8,GT,A6 THEN,IGLTR1 . @ @@@9 ADD A8,A7-X1+5 . @#@@@9LV )@@G@@IGLTR1 LABEL . @C@@@9 LOAD X3,A8 . GET DATUM LW )@@G@@@C@@@9 LOAD A7,0,X3 . GET DATUM @D@@@9 STOLX )@@G@@RE A7,CDINST,*X10 . SET INSTRUCTION @A@@@9 GCORE 0 'LABEL'LY )@@G@@,GEND0 . @D@@@9IGMOV0 LABEL . MOVE STACK ENTRIES LZ )@@G@@@F@@@9 JP A9,IGMOV4 . -> STACK ITEM POINTED TO BY AW'S MA )@@G@@@B@@@9 GETC . FETCH 'TO' STACK ADDRESS @ @@@9 LOAD X3,MB )@@G@@A8 .@C@@@9 ADD X3,X7 . COMPUTE LOCATION @B@@@9MC )@@G@@ GETC . FETCH 'FROM' STACK OFFSET@ @@@9 LOAD X2,A8 MD )@@G@@ .@C@@@9 ADD X2,X7 . COMPUTE LOCATION @D@@@9 ME )@@G@@ LOAD A8,DCGSLT,I . SET STANDARD ITEM SIZE @B@@@9 GOTO IGMMF )@@G@@OV5 . -> MERGE @C@@@9IGMOV4 LABEL . COMPUTE LOCATIONS FROM AWMG )@@G@@'S @C@@@9 LINK GARG . GET 'TO' ADDRESS @ @@@9 MH )@@G@@ LOAD X3,X2 .@E@@@9 LINK GARG . GET 'FROM' MI )@@G@@ADDRESS IN X2 @D@@@9 GETC . FETCH NUMBER OF WORDS TO MOVE IMJ )@@G@@N A8 @F@@@.IGMOV5 LABEL . MERGE FROM GETTING STANDARD STACK ITEM ADDRMK )@@G@@ESSES @ @@@9 LOADXI X2,1,I .@ @@@9 LOADXI X3,1,I ML )@@G@@ .@F@.@9IGMOV5 LABEL . MERGE FROM GETTING STANDARD STACK ITEM ADDRMM )@@G@@ESSES @C@@@9 LOAD R2,RGMASK . MASK OUT KEEP BIT@E@@@9 MN )@@G@@ LOADA A9,DRSX1-1 . LOAD LOWEST ADDRESS OF RGSW'S@F@@@9 LOAMO )@@G@@DA A10,DRAX10-1 . LOAD HIGHEST ADDRESS OF RGSW'S @G@@@9 LOAMP )@@G@@DA X4,W1,X3 . COMPUTE DIFFERENCE BETWEEN ITEM ADDRESSES@ @@@9 MQ )@@G@@ SUB X4,W1U,X2 .@ @@@9 LOAD R1,A8 .@ @@@9 MR )@@G@@ LOAD A2,X2 .@ @@@9IGMOV3 LABEL .@D@@@9 MS )@@G@@ MSW A9,0,*A2 . LOOK FOR RAW'S IN STACK@E@@@9 GOTO IGMMT )@@G@@OV2 . -> SEARCH FOR RAW'S IS DONE @ @@@9 ANU,U A2,1 MU )@@G@@ .@D@@@9 LOAD X5,W1,A3 . POINT TO RSW USING RAW @ @@@9MV )@@G@@ USING RGSWRD,X5 .@ @@@9 LOAD A7,RGSWUR .@ @@@9MW )@@G@@ USING WORD,A3 .@F@@@9 IF A7,NE,W1U THEN,IGMOV3MX )@@G@@ . -> RSW DOES NOT POINT TO AW@E@@@9 ADD A7,X4 . COMPUMY )@@G@@TE NEW LOCATION OF RAW @C@@@9 STORE A7,RGSWUR . POINT RGSW MZ )@@G@@TO RAW@G@@@9 GOTO IGMOV3 . -> CONTIMUE TO SEARCH FOR ACTNA )@@G@@IVE RAW'S @ @@@9IGMOV2 LABEL .@E@@@9 LOAD R2,NB )@@G@@RGMSK2 . MASK FOR KEEP BIT AND OFFSETS@E@@@9 LOAD A2,X2 NC )@@G@@ . SET STARTING FROM LOCATION @E@@@9 LOAD R1,A8 .ND )@@G@@ GET NUMBER OF WORDS TO CHECK @G@@@9 LOAD A9,W1U,X2 . SET LNE )@@G@@OWER ADDRESS OF STACK FROM ITEM @E@@@9 SUB A9,1,I .NF )@@G@@ ADJUST ADDRESSES DOWN BY ONE @F@@@9 AU A9,A8 . COMPUNG )@@G@@TE UPPER ADDRESS OF STACK @H@@@9 SLBD A9,18 . SHIFTNH )@@G@@ POINTERS TO UPPER HALVES OF REGISTERS @F@@@9IGMOV7 LABEL . MERGE TNI )@@G@@O CONTINUE SEARCH FOR INTERNAL POINTERS @E@@@9 MSW A9,0,*A2 NJ )@@G@@ . SEARCH FOR INTERNAL POINTERS @C@@@9 GOTO IGMOV6 .NK )@@G@@ -> SEARCH IS DONE@F@@@9 ANU,U A2,1 . BACK INDEX UP TO NL )@@G@@WORD JUST LOCATED @C@@@9 LOAD X5,W1H1,A3 . LOAD THE POINTER NM )@@G@@@E@@@9 ADD X5,X4 . ADD IN THE APPROPRIATE OFFSET@ @@@9NN )@@G@@ STORE X5,W1H1,A3 .@D@@@9 GOTO IGMOV7 . -> CONO )@@G@@NTINUE SEARCH @B@@@9IGMOV6 LABEL . TRANSFER THE STACK ITEMS @C@@@9NP )@@G@@ LOAD R1,A8 . RESET BT COUNTER @B@@@9 BT X3,NQ )@@G@@0,*X2 . MOVE ITEMS @D@@@9 GOTO GEND0 . -> CHECK FONR )@@G@@R COMPLETION@B@@@9IGMVI0 LABEL . OR IGXI0 @C@@@9 NS )@@G@@ LINK GARGMK . GET MASK@D@@@9 JP A9,IGMVI1NT )@@G@@ . ******* @ @@@9 LXOR A7,DGFLGZ .@ @@@9NU )@@G@@IGMVI1 LABEL .@E@@@9 STORE A7,DGFLGZ . NV )@@G@@ SET GLOBAL FLAGS @C@@@9 GOTO GEND0 . -> NEXTNW )@@G@@ ICODE@#@@@9IGOI0 LABEL . @C@@@9 LINK GARGMK . NX )@@G@@ GET MASK@G@@@9 JN A9,IGNI0 . -> REALLY FLAG AND DGFLNY )@@G@@GZ *******@E@@@9 LOR A7,DGFLGZ . SET SELENZ )@@G@@CTED FLAGS @ @@@9 STORE A7,DGFLGZ . @^@@@9 GOTO GENOA )@@G@@D0 . @#@@@9IGNI0 LABEL . @ @@@9 LAND A7,DGFLGZ . @G@@@9OB )@@G@@ STORE A7,DGFLGZ . -> PROCESS NEXT INSTRUCTION OC )@@G@@@^@@@9 GOTO GEND0 . @C@@@9IGBRC0 LABEL . GOD )@@G@@ENERATE JUMP@B@@@9 LINK GARG . GET AW @ @@@9 OE )@@G@@ USING AWDS,X2 . @D@@@9 LOAD A7,0742000,I . GET JUMOF )@@G@@P OP CODE @^@@@9 SLB A7,18 . @F@@@9IGBRC3 LABEL OG )@@G@@ . MERGE POINT FROM CONDITIONAL JUMP @G@@@9 ADD A7,AWOFSTOH )@@G@@ . ADD IN U FILED OR ELSE NEXT INST @E@@@9 IF AWROI )@@G@@GPT,ZERO THEN,IGBRC1 . -> NO ADDRESS YET @#@@@9IGBRC2 LABEL . @D@@@9OJ )@@G@@ STORE A7,CDINST,*X10 . SET JUMP INST @C@@@9 GCOOK )@@G@@RE 0 'LABEL',GEND0 . RESERVE SPACE @#@@@9IGBRC1 LABEL . @D@@@9 OL )@@G@@ STORE X10,AWOFST . SET PTR TO INST @^@@@9 GOTO IGBOM )@@G@@RC2 . @#@@@9IGLABEL LABEL . @F@@@9 LINK GARG . ON )@@G@@ GET REFERENCE TO LABEL @C@@@9 LOAD X3,X2 . SOO )@@G@@AVE AW PTR @#@@@9IGLABEL1 LABEL . @^@@@9 USING WORD,X2 .@D@@@9OP )@@G@@ LOAD A7,W1H2 . GET UFIELD OF INST @F@@@9 STOOQ )@@G@@RE X10,W1H2,X2 . SET U FIELD IN BRANCH INST @F@@@9 IF OR )@@G@@ A7,EQ,0,I THEN,IGLBL2 . -> END OF CHAIN, SET PTR @^@@@9 LOAOS )@@G@@D X2,A7 . @E@@@9 GOTO IGLABEL1 . TEST NEXT REFEOT )@@G@@RENCE @#@@@9IGLBL2 LABEL . @D@@@9 STORE X10,W1,X3 . SOU )@@G@@ET AW PTR TO CODE @C@@@9 GOTO GEND0 . -> NEXT ICODEOV )@@G@@@ @@@9 USING WORD,X5 . @#@@@9IGBAL0 LABEL . @C@@@9 OW )@@G@@ LINK GADRAW . GET ADDRESS @D@@@9 STORE X1,DGLKSKOX )@@G@@ . SAVE ICDOE PTR @ @@@9 STORE A1,DGLKS2 . @D@@@9OY )@@G@@ SET DGXTDL,ON . SET SUBROUTINE FLAG @C@@@9 GOTOZ )@@G@@O IGGOTO1 . -> BRANCH @#@@@9IGGOTO0 LABEL . @C@@@9 PA )@@G@@ LINK GADRAW . GET ADDRESS @#@@@9IGGOTO1 LABEL . @^@'@9PB )@@G@@ SETGC 6,0,X5 . @^@@@'. SETGC 6,0,X5 . @ @@@' LOAPC )@@G@@DXM X1,W1U,X5 . @ @@@' LOAD A1,KLCH6W . @F@@@9 GOPD )@@G@@TO GNEXT . -> PROCESS NEW IGEN INST @#@@@9IGAPPN0 LAPE )@@G@@BEL . @C@@@9 LINK GADRAW . GET ADDESS @G@@@9 PF )@@G@@ LMJ X11,0,X5 . GO TO ROUTINE *******@G@@@9PG )@@G@@ GOTO GEND0 . -> RETURN PROCESS INST AT (X5) PH )@@G@@@#@@@9IGON0 LABEL . @C@@@9 GETC . GET FLAPI )@@G@@GS @E@@@9 SLBD A7,6+36 . GET FULL 9 (12) BIT FLAG PJ )@@G@@@#@@@9 GETC . @D@@@9 ADD A7,A8 . ADD IN LOWER PK )@@G@@PART OF FLAG@C@@@9 AND,H2 A7,DGFLGZ-(IN 63,H2,1,0) . @E@@@9PL )@@G@@ JP A9,IGOFF0 . -> CHECKING OFF INSTEAD OF ON @D@@@9 PM )@@G@@ JNZ A8,IGGOTO0 . -> SOME BITS ON . @C@@@9 GOTO GENPN )@@G@@D1 . IGNORE ICODE @#@@@9IGOFF0 LABEL . @C@@@9 JZ PO )@@G@@ A8,IGGOTO0 . -> ALL OFF . @^@@@9 GOTO GEND1 @#@@@9PP )@@G@@IGRTRN0 LABEL . @D@@@9 LOADXM X1,DGLKSK . RESET ICODE SPQ )@@G@@TACK @ @@@9 LOADXM A1,DGLKS2 . @E@@@9 SET DGXTDL,OFPR )@@G@@F . TURN OFF SUBROUTINE FLAG @C@@@9 GOTO GEND0 . PS )@@G@@ -> NEXT ICODE@#@@@9IGSET0 LABEL . @^@@@9 LINK GARG . PT )@@G@@@E@@@9 LOAD X3,X2 . X3 -> LEFT OPERAND @E@@@9PU )@@G@@ LINK GARG . X2 -> RIGHT OPERAND @C@@@9 PV )@@G@@ LOAD A2,0,X2 . A2=AW MOVED @^@@@9 STORE A2,0,X3 .PW )@@G@@@F@@@9 AND A2,RGMSK2 . GET RID OF KEEP BIT AND RGSW POINTER PX )@@G@@@C@@@9 IF A3,NE,0,I THEN,GEND0 . -> NOT RAW@ @@@9 USIPY )@@G@@NG RGSWRD,A2 . @E@@@9 SUB X2,RGSWUR . CHECK IF RSW POINTS BPZ )@@G@@ACK TO RAW @F@@@9 IF X2,NZERO THEN,GEND0 . -> RGSW DID NOT PQA )@@G@@OINT TO AW @E@@@9 STORE X3,RGSWUR . UPDATE RGSW POQB )@@G@@INTER @C@@@9 GOTO GEND0 . -> NEXT ICODE@#@@@9IGLOADQC )@@G@@0 LABEL . @G@@@9 LINK GARG . GET AW <- X2 AND NUMBER OQD )@@G@@F WORDS IN A10 @D@@@9 IF A10,NE,2,I THEN,GLOADB . -> FIXEDQE )@@G@@ LOAD @C@@@9 LINK RGGETFPR . GET 2 WORDS @D@@@9 QF )@@G@@ LOAD A7,071,I . SET FLOAT LOAD @D@@@9 LOAD A10QG )@@G@@,013,I . SET FLOAT J FIELD @C@@@9 GOTO GLOAD1 . QH )@@G@@ -> MERGE @#@@@9GLOADB LABEL . @G@@@9 IF A10,NE,3,QI )@@G@@I THEN,GLOADC . -> ONE WORD 'A' REGISTER LOAD @C@@@9 LINK RGGQJ )@@G@@ETXRG . GET X REGISTER @C@@@9 LOAD A7,027,I . LOAD OPCODQK )@@G@@E FOR LOAD X@D@@@9 GOTO GLOAD2 . -> MERGE WITH ONE WORD LOAD QL )@@G@@@C@@@9GLOADC LABEL . LOAD ONE WORD 'A' REGISTER @D@@@9 LIQM )@@G@@NK RGGETGPR . ->GET REGISTER@D@@@9 LOAD A7,010,I QN )@@G@@. SET FIXED LOAD @C@@@9GLOAD2 LABEL . MERGE POINT FOR ALLQO )@@G@@ WORD LOADS @C@@@9 LOAD A10,0,I . SET J FIELD @#@@@9QP )@@G@@GLOAD1 LABEL . @C@@@9 STORE A7,DGOPCD . SET OP CODE QQ )@@G@@@C@@@9 STORE A10,DGJCOD . SAVE J FIELD @C@@@9 LOAQR )@@G@@D X3,X5 . GET ARGUMENT @F@@@9 LOAD X5,X2 . QS )@@G@@ SET PARAMETER TO FREE ROUTINE @G@@@9 LINK GFREE0 . QT )@@G@@ ->FREE OPERAND IF NECESSARY @C@@@9 LOAD A10,DGJCOQU )@@G@@D . SAVE J FIELD @F@@@9 LINK IGRXLD . ->QV )@@G@@GENERATE RX FORM OF LOAD@ @@@9 USING RGSWRD,X3 . @F@@@9 QW )@@G@@ STORE X2,RGSWUR . LINK NEW USER TO REGISTER @ @@@9 QX )@@G@@ STORE X3,0,X2 . @C@@@9 GOTO GEND0 . -> NEXTQY )@@G@@ ICODE@#@@@9IGSHIFT LABEL . @D@@@9 LINK RGXLD . QZ )@@G@@ GET OPERAND @F@@@9 LOAD X5,0,X2 . X5=A(RGSW) OFRA )@@G@@ REG TO BE SHIFTED@ @@@9 USING RGSWRD,X5 . @G@@@9 LOARB )@@G@@D A7,010001,I . PREPARE TO ADD 1 TO REG NUM AND ADDRESS @D@@@9 RC )@@G@@ LOAD A6,RGSWRN . GET REG NUMBER @A@@@9 IF A6,RD )@@G@@ODD THEN,IGSH2 . @F@@@9 LOADN A7,010001,I . SUBTRACT 1 FROM RRE )@@G@@EG NUM AND ADDRESS@E@@@9IGSH2 LABEL . SHIFT REGISTER NUMBERS IN ERF )@@G@@VEN-ODD PAIR@E@@@9 ADD A7,RGSWIF . ADD IN REGISTER NUM AND ARG )@@G@@DDRESS@G@@@9 IF A6,NE,A15-A0,I THEN,IGSH3 . -> NOT A15-A16, SRH )@@G@@ET SHIFT @C@@@9 LOAD A10,X2 . SAVE AW POINTER @D@@@9RI )@@G@@ LOADA X2,DRSW15 . POINT TO RSW OF A15 - A16@G@@@9 LOARJ )@@G@@D A3,RGSWUF . GET POINTER TO FROUNT OF IN-USE LIST @H@@@9 RK )@@G@@ IF A3,NE,X2 THEN,IGSH4 . -> A15 IS NOT FIRST AVAILABLE USED REG RL )@@G@@@D@@@9 LOADA A3,RGSWFF . POINT TO FREE LIST HEAD@G@@@9 RM )@@G@@ IF A3,NE,RGSWFB THEN,IGSH4 . -> THERE EXISTS A FREE REGISTER@H@@@9RN )@@G@@ LINK RGUNLINK . REMOVE RSW(A15-A16) FROM FROUNT OF IN-USERO )@@G@@ LIST @H@@@9 LOAD X3,RGSWUB . X3 -> CELL AFTER WHICH RSW(A1RP )@@G@@5) TO BE ADDED @F@@@9 LINK RGLINK . PUT RSW(A15) AT BRQ )@@G@@ACK OF IN-USE LIST@G@@@9IGSH4 LABEL . MERGE POINT WHEN A15 WILL NOT BRR )@@G@@E USED TO LOAD ITSELF @ @@@9 USING RGSWRD,X2 .@G@@@9 RS )@@G@@ IF RGSW1W,ON,RGSWKY THEN,IGSH5 . -> 1 WORD REGISTER TYPE @D@@@9RT )@@G@@ LINK RGGETFPR . GET 2-WORD REGISTER @ @@@9 GOTRU )@@G@@O IGSH6 .@ @@@9IGSH5 LABEL .@D@@@9 LINRV )@@G@@K RGGETGPR . GET 1-WORD REGISTER @G@@@9IGSH6 LABEL RW )@@G@@ . MERGE HERE AFTER NEW RESISTER OBTAINED @F@@@9 LOAD A7,RX )@@G@@RGOP4 . GET CIRCULARILY SHIFTED DL A0,A15 @ @@@9 USING RGSRY )@@G@@WRD,X5 .@F@@@9 ADD A7,RGSWRN . ADD TO A0 THE OFFSET OFRZ )@@G@@ REG PAIR @I@@@9 LSSC A7,22 . SHIFT DL A0+OFFSET,A15 SA )@@G@@INTO PROPER FORMAT ******* @D@@@9 STORE A7,CDINST,*X10 . SSB )@@G@@ET INSTRUCTION @C@@@9 GCORE 0 . RESERVE SPACESC )@@G@@@D@@@9 LOAD X2,A10 . GET SAVED POINTER TO AW@ @@@9 SD )@@G@@ USING RGSWRD,X5 .@D@@@9 STORE X2,RGSWUR . POINT RSW(NSE )@@G@@EW) TO AW @F@@@9 STORE X5,W1H2,X2 . STORE POINTER TO RSW(NESF )@@G@@W) IN AW @D@@@9 LOAD A7,RGSWIF . GET REG NUM AND ADDRESSSG )@@G@@@E@@@9 ADD A7,010001,I . MAKE REG NUM AND ADDRESS EVEN@ @@@9SH )@@G@@ STORE A7,RGSWIF .@E@@@9 LOADA X5,DRSW15 . PREPASI )@@G@@RE TO FREE RSW(A15-A16) @C@@@9 LINK RGFREE . FREE REGSJ )@@G@@ A15 @^@@@9 GOTO GEND0 . @#@@@9IGSH3 LABEL . @H@@@9 SK )@@G@@ STORE A7,RGSWIF . STORE SHIFTED VALUES OF REG NUM AND ADDRESS SL )@@G@@@C@@@9 GOTO GEND0 . -> NEXT ICODE@#@@@9IGFSR0 LASM )@@G@@BEL . @D@@@9 LINK RGXLD . GET OPERAND @H@@@9SN )@@G@@ LOAD A7,0,X2 . NEXT REQUEST FOR SCRATCH WILL GESO )@@G@@T @E@@@9 STORE A7,DRGSRH . SET NEXT SCRATCH REG . SP )@@G@@@E@@@9 GOTO GEND0 . -> NEXT ICODE INSTRUCTION@D@@@9SQ )@@G@@IGIFR0 LABEL . IF AW REG THEN, X @D@@@9 LISR )@@G@@NK GARG . GET OPERAND @E@@@9 USING WORD,X2SS )@@G@@ . SET DSECT TO X2 @E@@@9 LOAD A2,W1H1 . ST )@@G@@ SEE IF REGISTER WORD @C@@@9 AND,U A2,0377777 . MASK OUTSU )@@G@@ KEEP BIT @E@@@9 IF A3,NE,0,I THEN,GEND1 . -> IN CORE, NEXTSV )@@G@@ ICODE@D@@@9 JP A9,IGGOTO0 . IS THIS A GIFX? @C@@@9SW )@@G@@ LOAD X2,W1,X2 . POINT TO RGSW@D@@@9 LOAD ASX )@@G@@2,RGSWRA,X2 . GET REG ADDRESS @G@@@9 IF A2,GE,021,I THEN,GSY )@@G@@END1 ELSE,IGGOTO0 . NOT AN X REGISTER @#@@@9IGFREE0 LABEL . @B@@@9SZ )@@G@@ LINK GARG . GET AW @C@@@9 LOAD X5,X2 . TA )@@G@@ FREE THIS AW @D@@@9 LOADA X11,GEND0 . SET RETTB )@@G@@URN ADDRESS @F@@@9GFREE0 LLOC . ENTRY POINT FROM INTERNALTC )@@G@@ ROUTINES @E@@@9 JN A9,LJMP . 'NO' SPECIFIED ON INSTRUCTD )@@G@@TION @D@@@9 LOAD A8,0,I . USE FIRST OFFSET OF ZERO @#@@@9TE )@@G@@GFREE1 LABEL . @H@@@9 LOAD A7,AWRGPT-FH1,X5 . LOAD LEFTTF )@@G@@ JUSTIFIED REGISTER POINTER @D@@@9 JN A7,LJMP . -> KEEPTG )@@G@@ BIT ON, RETURN @E@@@9 IF A7,LT,0377777,I THEN,GFREE2 . -> TH )@@G@@RAW FOUND @C@@@9 AND,U A7,0377777 . SAVE OFFSET IN A8 @F@@@9TI )@@G@@ LOAD X5,AWRGPT,X5 . FOLLOW CHAIN OF POINTERS @^@@@9TJ )@@G@@ GOTO GFREE1 . @C@@@9GFREE2 LABEL . RGSW HAS BEENTK )@@G@@ FOUND@H@@@9 IF A7,EQ,AGRX10 THEN,GFREE3 . ->BASE X10,SEE IF TL )@@G@@TEMP FOR FREEING @D@@@9 LOAD X5,AWOFST,X5 . X5 -> RGSTM )@@G@@W @G@@@9 GOTO RGFREE . RELEASE THE REGISTER, RETURN ADTN )@@G@@DRESS IN X11@E@@@9GFREE3 LABEL . BASE X10, SEE IF TEMPORARTO )@@G@@Y @F@@@9 IF A8,LT,DTGTBT THEN,LJMP . -> TOO SMALL FOR TEMTP )@@G@@PS @G@@@9 GOTO XGTMPF . -> FREE TEMPORARY, RETURN ADDRETQ )@@G@@SS IN X11 @C@@@9IGRX0 LABEL . GINST ICODE @C@@@9TR )@@G@@ GETC . GET OP CODE @D@@@9 SLBD A7,TS )@@G@@36 . OP IN A7 J IN A8 @D@@@9 MOVE DIGFRE,2,I . TT )@@G@@ SET TO FREE AW2 @E@@@9 IF A7,GE,07,I THEN,GRX1 . -TU )@@G@@> NOT STORE INST @D@@@9 MOVE DIGFRE,1,I . STORE, FREE ATV )@@G@@W 1 @C@@@9 GOTO GRX1 . -> MERGE @#@@@9IGDRX0TW )@@G@@ LABEL . @C@@@9 LINK RGXLD . GET J FIELD @C@@@9TX )@@G@@ IF A10,EQ,OPDJZ,I THEN,IGDJZ0 . @C@@@9 LOAD A7,TY )@@G@@071,I . DOUBLE INST @C@@@9 MOVE DIGFRE,2,I . TZ )@@G@@FREE AW 2 @D@@@9 IF A10,NE,012,I THEN,GRX1X . -> NOT DS UA )@@G@@@C@@@9 MOVE DIGFRE,1,I . FREE AW 1 @D@@@9 GOTUB )@@G@@O GRX1X . -> DOUBLE LOAD @C@@@9IGFRX0 LABEL . UC )@@G@@ FLOAT INST @ @@@9 LOAD A7,076,I . @C@@@9 UD )@@G@@ LINK RGXLD . GET J FIELD @C@@@9 MOVE DIGFRE,2,UE )@@G@@I . FREE AW 2 @#@@@9GRX1X LABEL . @ @@@9 STORE A7,UF )@@G@@DGOPCD . @ @@@9 STORE A10,DGJCOD . @C@@@9 LOAD X3,UG )@@G@@0,X2 . SET 2 WORD AW@ @@@9 USING RGSWRD,X3 . @F@@@9UH )@@G@@ MOVE RGSWKY,RGSW2W+RGSWIU,I . SET 2 WORD, IN USE @^@@@9UI )@@G@@ GOTO RGX1Y . @C@@@9IGSHIN0 LABEL . SHIFT UJ )@@G@@INST @ @@@9 LOAD A7,073,I . @C@@@9 MOVE DIGFRE,0,UK )@@G@@I . FREE 0 AW'S @#@@@9GRX1 LABEL . @E@@@9 STORE A7,UL )@@G@@DGOPCD . SET OPCODE AND J FIELD @F@@@9 LINK RGXLD . UM )@@G@@ GET AW, TEST FOR REG CONTENTS @ @@@9 STORE A10,DGJCOUN )@@G@@D . @#@@@9RGX1Y LABEL . @F@@@9 LOAD X3,X2 . UO )@@G@@ X3-> LEFT OPERAND (REG) @G@@@9 LINK GARG . UP )@@G@@ X2-> RIGHT OPERAND (ADDRESS) @C@@@9 LOAD A10,DGJCOD . UQ )@@G@@ SET J FIELD @E@@@9 IF DGXTED,OFF THEN,RX1B . -> NOT IMMUR )@@G@@EDIATE DATA @ @@@9 MOVE DGXREG,0,I .@ @@@9 STORE X2,US )@@G@@CDUFLD .@ @@@9 SET DGXTED,OFF . @D@@@9 LOAD A7,UT )@@G@@DGOPCD . CHECK TYPE OF OPCODE @G@@@9 TLE,U A7,070 . SUU )@@G@@EE IF FLOAT, DOUBLE, OR SHIFT *******@D@@@9 LOAD A10,U,I .UV )@@G@@ OTHERWISE SET U IN J-FIELD @B@@@9 LOAD X3,0,X3 . POINT TUW )@@G@@O RSW @H@@@9 LOADA X11,GEND0 . SET RETURN ADDRESS FOR AFTER FIUX )@@G@@NISHING GENERATION@B@@@9 LOCAL . SET THE ADDRESS ON STACK @^@@@9UY )@@G@@ GOTO GADDRX . @E@@@9RX1B LABEL . MERGE WHEN NOUZ )@@G@@T IMMEDIATE DATA @C@@@9 LOAD X11,DIGFRE . GET FREE FLAGVA )@@G@@@C@@@9 GOTO *GRX1A,X11 . BRANCH TABLE @#@@@9GRX1A LABVB )@@G@@EL . @B@@@9 +GRX1B . NO FREE@B@@@9 +GRVC )@@G@@X1C . AW 1 @C@@@9 +GRX1E . FVD )@@G@@REE AW 2 @#@@@9GRX1E LABEL . @B@@@9 LOAD X5,X2 . VE )@@G@@ AW 2 @^@@@9 GOTO GRX1D . @#@@@9GRX1C LABEL . @B@@@9VF )@@G@@ LOAD X5,X3 . AW 1 @#@@@9GRX1D LABEL . @F@@@9VG )@@G@@ IF A10,GE,016,I THEN,GRX1B . -> U FIELD, NO FREE @^@@@9VH )@@G@@ LINK GFREE0 . @#@@@9GRX1B LABEL . @F@@@9 LOAD XVI )@@G@@3,0,X3 . X3-> RGSW OF LEFT OPERAND @D@@@9 LOADA X11VJ )@@G@@,GEND0 . SET RETURN ADDRESS @#@@@9IGRXLD LOCAL . @C@@@9 VK )@@G@@ LOAD X5,X2 . DECODE AW @D@@@9 LINK GADRX .VL )@@G@@ -> DECODE AW @C@@@9 LOAD A7,DGOPCD . SVM )@@G@@ET OP CODE @E@@@9GADDRX LABEL . MERGE POINT FOR IMMEDIATVN )@@G@@E DATA@ @@@9 USING RGSWRD,X3 . @C@@@9 SLB A10,4 . VO )@@G@@ LOAD A-REG @D@@@9 ADD A10,RGSWRN . ADD REGVP )@@G@@ NUMBER @^@@@9 SLB A10,4 . @C@@@9 ADD A10,DGXREVQ )@@G@@G . SET X REG @D@@@9 STORE A10,CDINPT . SET J,AVR )@@G@@,X PART @C@@@9 STORE A7,CDOP,*X10 . SET OPCODE @ @@@9VS )@@G@@ GCORE 0 'LABEL',JMP .@D@@@9RGXLD LOCAL . GVT )@@G@@ET REG CONTETS @^@@@9 LINK GARG . @^@@@9 USING AWDVU )@@G@@S,X2 .@D@@@9 IF AWRGPT,ZERO THEN,JMP . -> REGISTER AW @G@@@9VV )@@G@@ LA,U A6,0400000 . LOAD WITHOUT SIGN EXTENTION ******* VW )@@G@@@E@@@9 IF A6,EQ,AWRGPT THEN,JMP . -> JUST KEEP BIT ON @E@@@9VX )@@G@@ EXERR EXCGLD LEVEL,2 . AW ERROR IN CG PHASE @E@@@9 VY )@@G@@ LOADA X2,AGRA3-AGRX0+AGAW . SET X REG A3 AS DUMMY@C@@@9 JMPVZ )@@G@@ . -> RETURN @ @@@9GADRX LOCAL .WA )@@G@@@ @@@9 STORE X1,DXGSV5 . @ @@@9 STORE X2,DXGSV5+1 WB )@@G@@@ @@@9 STORE X3,DXGSV5+2 @ @@@9 STORE X4,DXGSV5+3 WC )@@G@@@D@@@9 MOVE GCRTCH,0,I . NO SCRATCH REG YET @^@@@9 WD )@@G@@ USING AWDS,X5 .@ @@@9 LOAD A2,AWRGPT,X5 . @C@@@9 ANDWE )@@G@@,U A2,0377777 . MASK OUT KEEP BIT @G@@@9 IF A3,EQ,0,I THEN,WF )@@G@@GADDR2 . -> X5 IS A(RGSW), OPND IN REG @D@@@9 LOAD A4,AWOFSTWG )@@G@@,X5 . ORIGINAL OFFSET @C@@@9 LOAD X2,A3 . NWH )@@G@@EXT BASE @^@@@9 USING AWDS,A3 .@ @@@9 LOAD A2,AWRGPTWI )@@G@@,A3 . @C@@@9 AND,U A2,0377777 . MASK OUT KEEP BIT @D@@@9 WJ )@@G@@ IF A3,EQ,0,I THEN,GADDR3 . -> FOUND REG @ @@@9 STORE AWK )@@G@@4,DGSTOR . @D@@@9 LOAD A4,AWOFST,X2 . SAVE DISPLACEMENT WL )@@G@@@^@@@9 LOAD X2,A3 . @ @@@9 LOAD A2,AWRGPT,A3 . @C@@@9WM )@@G@@ AND,U A2,0377777 . MASK OUT KEEP BIT @B@@@9 IF A3,WN )@@G@@EQ,0,I THEN,GADDR4 . @C@@@9 STORE A4,DGSTO2 . SAVE DISPLACEWO )@@G@@MENT @D@@@9 LOAD A4,AWOFST,X2 . FETCH NEXT DISPLACEMENT @A@@@9WP )@@G@@ LOAD X2,A3 . NEXT AW@ @@@9 LOAD A2,AWRGPT,A3 . WQ )@@G@@@C@@@9 AND,U A2,0377777 . MASK OUT KEEP BIT @B@@@9 IF WR )@@G@@ A3,EQ,0,I THEN,GADDR5 . @C@@@9 STORE A4,DGSTO4 . SAVE DIWS )@@G@@SPLACEMENT @ @@@9 LOAD A4,AWOFST,X2 . @C@@@9 LOAD X2,WT )@@G@@A3 . CONTINUE @ @@@9 LOAD A2,AWRGPT,A3 . @C@@@9WU )@@G@@ AND,U A2,0377777 . MASK OUT KEEP BIT @E@@@9 IF A3,WV )@@G@@EQ,0,I THEN,GADDR6 . -> SET BASE DISP @G@@@9 EXERR EXERCGGA WW )@@G@@LEVEL,3 . TOO MANY BASE DISPLACEMENT CALCULATIO@#@@@9GAEXT3 LABEL . WX )@@G@@@ @@@9 LOAD A4,DGSTO4 . @H@@@9 LINK GADDR1 . WY )@@G@@ ESTABLISH ADDRESSABILITY OF BASE 2 @#@@@9GAEXT2 LABEL . WZ )@@G@@@ @@@9 LOAD A4,DGSTO2 . @H@@@9 LINK GADDR1 . XA )@@G@@ ESTABLISH ADDRESSABILITY OF BASE 1 @#@@@9GAEXT1 LABEL . XB )@@G@@@F@@@9 LOAD A4,DGSTOR . OFFSET FROM OPND FROM 1ST BASE XC )@@G@@@D@@@9 LINK GADDR1 . SET BASE DISPL. @#@@@9GAEXT0XD )@@G@@ LABEL . @E@@@9 MOVE DGSTOR,0,I . CLEAR DISPLACEMENT XE )@@G@@FIELD @ @@@9 LOAD X1,DXGSV5 . @ @@@9 LOAD X2,DXGSV5XF )@@G@@+1 @ @@@9 LOAD X3,DXGSV5+2 @ @@@9 LOAD X4,DXGSV5XG )@@G@@+3 @E@@@9 JMP . -> RETURN TO CALLER XH )@@G@@@#@@@9GADDR2 LABEL . @C@@@9 LOAD X5,0,X5 . X5=A(RGXI )@@G@@SW) . @ @@@9 USING RGSWRD,X5 . @D@@@9 LOAD A3,RGSWRAXJ )@@G@@ . GET REGISTER NUMBERUMBER @D@@@9 AND,U A3,RGSWRR . CHECXK )@@G@@K FOR R-REGISTER @E@@@9 ADD A3,A4 . CONVERT TO R-REGISTXL )@@G@@ER ADDRESS @C@@@9 STORE A3,CDUFLD . SET U FIELD @C@@@9XM )@@G@@ MOVE DGXREG,0,I . SET NO X REG @C@@@9 GOTO GAEXN )@@G@@XT0 . -> RETURN @#@@@9GADDR3 LABEL . @G@@@9 LIXO )@@G@@NK GADDR0 . ESTABLISH ADDRESSABILITY OF OPND@C@@@9 XP )@@G@@ GOTO GAEXT0 . -> MERGE@#@@@9GADDR4 LABEL . @H@@@9XQ )@@G@@ LINK GADDR0 . ESTABLISH ADDRESSABILITY OF BASEXR )@@G@@ 1 @C@@@9 GOTO GAEXT1 . -> MERGE@#@@@9GADDR5XS )@@G@@ LABEL . @H@@@9 LINK GADDR0 . ESTABLISH ADDRXT )@@G@@ESSABILITY OF BASE 2 @C@@@9 GOTO GAEXT2 . MEXU )@@G@@RGE @#@@@9GADDR6 LABEL . @H@@@9 LINK GADDR0 . XV )@@G@@ ESTABLISH ADDRESSABILITY OF BASE 3 @C@@@9 GOTO GAEXT3 XW )@@G@@. -> MERGE@B@@@9. *** BASE IS IN REGISTER *** XX )@@G@@@#@@@9GADDR0 LLOC . @B@@@9 LOAD X2,W1,X2 . X2 = A(RGSW) XY )@@G@@@D@@@9 LOAD A2,RGSWRA,X2 . GET THE REGISTER ADDRESS@F@@@9 XZ )@@G@@ IF A2,LT,020,I THEN,GADDR7 . -> REGISTER IS 'X' REG @D@@@9 YA )@@G@@ AND,U A2,RGSWRR . CHECK FOR 'R' REGISTER @F@@@9 ADD A2,YB )@@G@@A3 . ADD IN POSSIBLE 'R' REGISTER ADDRESS @E@@@9 STORE A2,YC )@@G@@CDUFLD . SET U-FIELD OF INSTRUCTION @D@@@9 MOVE DGXREG,0,YD )@@G@@I . SET X-REGISTER TO ZERO @G@@@9 GOTO GADDR1 . USE SUBYE )@@G@@ROUTINE FOR INSTRUCTION CREATION @D@@@9GADDR7 LABEL . RYF )@@G@@EGISTER WAS 'X' REGISTER@E@@@9 STORE A4,CDUFLD . SET U IYG )@@G@@NTO INSTRUCTION @ @@@9 USING RGSWRD,X2 . @E@@@9 MOVYH )@@G@@E DGXREG,RGSWRA . STORE BASE REG NUMBER @C@@@9 LJMP . YI )@@G@@ -> RETURN @B@@@9. *** LOAD SECONARY BASE YJ )@@G@@A @#@@@9GADDR1 LLOC . @H@@@9 IF GCRTCH,NZERO THEN,GYK )@@G@@ADDR10 . HAS SCRATCH REG BEEN ACQUIRED @D@@@9 GSRTCH . YL )@@G@@ NO -- GET ONE @ @@@9 USING RGSWRD,X1 . @G@@@9YM )@@G@@ MOVE GCRTCH,RGSWRA . SAVE SCRATCH REGISTER NUMBER YN )@@G@@@G@@@9GADDR10 LABEL . YES -- HAVE A SCRATCH REGIYO )@@G@@STER @E@@@9 LOAD A7,GCRTCH . LOAD OPND REGISTER YP )@@G@@@E@@@9 SLB A7,4 . SHIFT INTO POSITION @G@@@9YQ )@@G@@ ADD A7,DGXREG . LOAD X-REG PART OF REAL INST YR )@@G@@@B@@@9 STORE A7,CDINPT . STORE @ @@@9 STORE A4,YS )@@G@@CDUFLD+1 . @C@@@9 LOAD A7,027,I . GET OP CODE @ @@@9YT )@@G@@ STORE A7,CDOP,*X10 . @#@@@9 GCORE 0 .@G@@@9 MOYU )@@G@@VE DGXREG,GCRTCH . SCRATCH IS BASE REG OF ITEM @C@@@9 YV )@@G@@ LJMP . -> RETURN @C@@@9IGGTT0 LABEL . YW )@@G@@ GET TEMP @D@@@9 LINK GARG . GET AW YX )@@G@@OF TEMP @D@@@9 GETC . GET NUMBER OF WORDSYY )@@G@@@^@@@9 GTMP R,A8 . @^@@@9 USING AWDS,X2 .@D@@@9 YZ )@@G@@ STORE A8,AWOFST,X2 . STORE TEMP ON AW @A@@@9 MOVE AWRZA )@@G@@GPT,AGRX10,I . @C@@@9 GOTO GEND0 . NEXT ICODE ZB )@@G@@@#@@@9IGGETGR0 LABEL . @E@@@9 LINK GARG . GET AW ZC )@@G@@TO PUT REGISTER IN@G@@@9 JN A9,IGGETX0 . -> GET INDEX ZD )@@G@@REG *******@E@@@9 IF A10,NE,2,I THEN,IGGET3 . ONZE )@@G@@E WORD REGISTER @E@@@9 LINK RGGETFPR . -> FLOATING POINT RZF )@@G@@EGISTER @F@@@9 GOTO IGGET2 . -> MERGE AFTER FETCHING RZG )@@G@@EGISTER @D@@@9IGGET3 LABEL . GET ONE WORD REGISTER ZH )@@G@@@E@@@9 LINK RGGETGPR . GET REGISTER, RSW IN X1 @#@@@9ZI )@@G@@IGGET2 LABEL . @ @@@9 USING RGSWRD,X5 . @C@@@9 STOZJ )@@G@@RE X2,RGSWUR . POINT TO AW @C@@@9 STORE X5,0,X2 . ZK )@@G@@ SETUP AW @C@@@9 GOTO GEND0 . -> NEXT ICODEZL )@@G@@@C@@@9IGGETX0 LABEL . GET X REG @ @@@9 LINZM )@@G@@K RGGETXRG . @C@@@9 GOTO IGGET2 . -> MERGE ZN )@@G@@@E@@@9IGSUB0 LABEL . GENERATE SUBROTONE CALL @C@@@9ZO )@@G@@ LOAD A6,0745660,I . SET LMJ X11,@ @@@9 STORE A6,ZP )@@G@@CDINPT . @E@@@9 LOAD A7,DXGARG . GET BUILTIN ENTRY AZQ )@@G@@DDR @G@@@9 TN A9 . -> BUILTIN . ZR )@@G@@ *******@D@@@9 LOAD A7,W1H2,X1 . GET ENTRY ADDRESS ZS )@@G@@@D@@@9 STORE A7,CDUFLD,*X10 . SET ENTRY ADDRESS @#@@@9 ZT )@@G@@ GCORE 0 .@G@@@9 JN A9,GEND0 . -> BUILTIN ZU )@@G@@ *******@E@'@9 SETGC 6,1,X1 . START TO READZV )@@G@@ NEXT WORD @E@@@'. SETGC 6,1,X1 . START TO READ NEXT ZW )@@G@@WORD @ @@@' LOADXM X1,W1U+1,X1 .@ @@@' LOAD A1,KLCHZX )@@G@@6W . @C@@@9 GOTO GEND0 . -> NEXT ICODE@D@@@9IGBR0 ZY )@@G@@ LABEL . TEST FLAG AND JUMP @D@@@9 LINK GARZZ )@@G@@G . GET AW POINTER IN X2 @C@@@9 LINK GARGMK .AA )@@G@@ GET FLAG IN A7 @E@@@9 LOAD X3,A10 . GET QUARTER WORD AB )@@G@@POINTER @E@@@9 EX GARGTB-4,X3 . ******AC )@@G@@* @D@@@9 IF A9,LT,0,I THEN,IGBR1 . -> TEST FOR ON @F@@@9AD )@@G@@ IF A8,NE,0,I THEN,GEND1 . -> FLAGS ON, THUS OFF FAILS @C@@@9AE )@@G@@ GOTO IGGOTO0 . PROCESS JUMP @#@@@9IGBR1 LABEL . AF )@@G@@@H@@@9 IF A8,EQ,0,I THEN,GEND1 ELSE,IGGOTO0 . IF 0 THEN OFF, AG )@@G@@SO FALSE @F@@@9GARGTB LABEL . EX TABLE TO PROPER QUARAH )@@G@@TER WORD @E@@@9 AND,Q2 A7,0,X2 . ****AI )@@G@@*** @E@@@9 AND,Q4 A7,0,X2 . ******* AJ )@@G@@@E@@@9 AND,Q3 A7,0,X2 . ******* @E@@@9AK )@@G@@ AND,Q1 A7,0,X2 . ******* @F@@@9IGKEEPAL )@@G@@0 LABEL . PROTECT AW TEMP FROM FREEING @B@@@9 AM )@@G@@ LINK GARG . GET AW @D@@@9 LOAD A7,W1,X2 . AN )@@G@@ GET TEMP TO PROTECT @C@@@9 OR A7,KEPBT1 . SET KEEP BIAO )@@G@@T ON @ @@@9 STORE A8,W1,X2 . @C@@@9 GOTO GEND0 . AP )@@G@@ -> NEXT ICODE@B@@@9/ . UNLINK FUNCTION ROUTINE AQ )@@G@@@B@@@9. X2=OFFSET OF CELL TO BE REMOVED @#@@@9RGUNLINK LLOC . AR )@@G@@@^@@@9 USING WORD,X2 .@G@@@9 LOAD X3,W1H1 . AS )@@G@@ X3=FORWARD PTR OF OUT-GOING CELL@H@@@9 LOAD X4,W1H2 . AT )@@G@@ X4=BACKWARD PTR OR OUT-GOING CELL @F@@@9 STORE X3,AU )@@G@@W1H1,X4 . SET NEW FLNK OF PRECEDING CELL @F@@@9 STORE X4,AV )@@G@@W1H2,X3 . SET NEW BLNK OF FOLLOWING CELL @C@@@9 LJMP . AW )@@G@@ -> RETURN @B@@@9. LINK FUNCTION ROUTIAX )@@G@@NE @B@@@9. X2= OFFSET OF CELL TO BE ADDED @G@@@9. X3AY )@@G@@= OFFSET OF CELL IN LIST AFTER WHICH NEW CELL IS TO BE ADDED@#@@@9RGLINKAZ )@@G@@ LLOC . @ @@@9 LOAD X4,W1H1,X3 . @ @@@9 STORE X4,BA )@@G@@W1H1,X2 . @F@@@9 STORE X3,W1H2,X2 . SET FLNK AND BLNK OBB )@@G@@F NEW CELL @F@@@9 STORE X2,W1H2,X4 . SET BLNK OF FOLLOWIBC )@@G@@NG CELL @E@@@9 STORE X2,W1H1,X3 . SET FLNK OF PREC CEBD )@@G@@LL @C@@@9 LJMP . -> RETURN @^@@@9. CALLBE )@@G@@ LINK RGFREE @C@@@9. X5=A(RGSW) OF REGISTER TO BE FREED BF )@@G@@@#@@@9. RETURN NONE @G@@@9. ACTION REMOVES REGISTER FROM IN-USE LISTBG )@@G@@ AND RETURNS IT TO FREE LIST @#@@@9. DESTROY NONE @#@@@9RGFREE LOBH )@@G@@CAL . @ @@@9 STORE X2,DRGSAV . @ @@@9 STORE X3,DRGSAVBI )@@G@@+1 . @ @@@9 STORE X4,DRGSAV+2 . @C@@@9 STORE A7,DRGSAVBJ )@@G@@+3 . SAVE A7 ALSO @ @@@9 USING RGSWRD,X5 . @ @@@9 BK )@@G@@ LOAD A7,RGSWBL . @F@@@9 IF A7,GE,0177777,I THEN,RGXR .BL )@@G@@ -> NOT MANAGED, RETURN @E@@@9 LOADA A7,RGSXFB . PREPAREBM )@@G@@ TO ADD X REG @C@@@9 LOAD A3,RGSWKY . SEE IF X REG BN )@@G@@@D@@@9 IF A3,GE,RGSWXR,I THEN,RGFROK . -> OK FREE@C@@@9 BO )@@G@@ LOADA A7,RGSWFB . ADD A REG @E@@@9 LINK RGODD . BP )@@G@@ RESET ACC TO ODD REG @#@@@9RGFROK LABEL . @D@@@9 BQ )@@G@@ USING WORD,X2 . SET WORD DSECT@E@@@9 AND,U A3,BR )@@G@@RGSWXR . CLEAR FLAGS EXCEPT X-REG FLAG @G@@@9 STORE A4,RGSWKBS )@@G@@Y . RESET FLAGS *******@E@@@9 LOAD X2,BT )@@G@@X5 . POINT TO RGSW TO UNLINK @E@@@9 LINK RGUNLINK BU )@@G@@. UNLINK FROM USED LIST @E@@@9 LOAD X3,A7 . BV )@@G@@ ADD TO NEW LIST @G@@@9 LINK RGLINK . BW )@@G@@ PUT REG AT END OF FREE LIST @B@@@9 GOTO RGXR . BX )@@G@@ RETURN @ @@@9 USING RGSWRD,X5 .@#@@@9RGODD LLOC . BY )@@G@@@E@@@9 LOAD A6,RGSWIF . GET REG NUMBER AND ADDR @D@@@9BZ )@@G@@ IF A6,ODD THEN,LJMP . -> ALREADY SET @F@@@9 SUBCA )@@G@@ A6,010001,I . SUBTRACT TO MAKE ADDR AND NUM ODD @ @@@9 STOCB )@@G@@RE A6,RGSWIF . @C@@@9 LJMP . -> RETURN CC )@@G@@@ @@@9 USING WORD,X5 . @G@@@9. TITLE - PLUM CODE GECD )@@G@@NERATOR - REGISTER ALLOCATOR (LEVEL 3) @E@@@9. CALL LINK RGGETXRG CE )@@G@@ TO OBTAIN X REGISTER @F@@@9. CALL LINK RGGETGPR CF )@@G@@ TO OBTAIN GENERAL REGISTER @ @@@9. ORCG )@@G@@@F@@@9. LINK RGGETFPR TO GET FLOATING POINT REG CH )@@G@@@G@@@9. ACTION ALLOCATES ONE REGISTER OF THE TYPE REQUESTED. IF NONE ISCI )@@G@@ FREE @B@@@9. THE OLDEST ONE IN USE IS STORED @F@@@9. RETURN X5CJ )@@G@@ POINTS TO REGISTER STATUS WORD OF ACQUIRED REGISTER @#@@@9RGGETXRG LCK )@@G@@OCAL .@D@@@9 MOVE DRGTPE,RGSWXR,I . SET X REG @^@@@9CL )@@G@@ LOAD A6,0,I . @D@@@9 GOTO RGGETMX . -> COMMCM )@@G@@ON ALLOCATOR@E@@@9RGGETFPR LOCAL . GET FLOATING REG 2 CN )@@G@@WORDS @D@@@9 MOVE DRGTPE,RGSW2W,I . SET TO 2 WORDS@C@@@9CO )@@G@@ GOTO RGGETM . -> MERGE @#@@@9RGGETGPR LOCAL . CP )@@G@@@F@@@9 MOVE DRGTPE,RGSW1W,I . SET TO 1 WORD CONTENTS CQ )@@G@@@C@@@9RGGETM LABEL . MERGE POINT @C@@@9 LOACR )@@G@@D A6,1,I . SET TO A REG @F@@@9RGGETMX LABEL . CS )@@G@@ MERGE X AND A REG ALLOCATOR @ @@@9 STORE X2,DRGSAV . CT )@@G@@@ @@@9 STORE X3,DRGSAV+1 . @ @@@9 STORE X4,DRGSAV+2 . CU )@@G@@@ @@@9 STORE A7,DRGSAV+3 . @C@@@9 LOADA A3,RGSWFF . CV )@@G@@ ASSUME A REG @F@@@9 IF A6,NE,0,I THEN,RGGETA . -> COCW )@@G@@RRECT ASSUMPTION @C@@@9 LOADA A3,RGSXFF . X REG PTRS CX )@@G@@@#@@@9RGGETA LABEL . @ @@@9 USING RGSWRD,A3 . @D@@@9 CY )@@G@@ LOAD A7,RGSWFL . FREE LIST FORWARD @E@@@9 IF A7,CZ )@@G@@EQ,A3 THEN,RGNOFREE . -> FREE LIST EMPTY @B@@@9 LOAD X2,RGSWFDA )@@G@@L . GET REG@ @@@9 LINK RGUNLINK . @C@@@9 LOADB )@@G@@D X3,W1H2+1,A3 . GET USED LIST@^@@@9 LINK RGLINK . @^@@@9DC )@@G@@ LOAD X5,X2 . @C@@@9 GOTO RGEXIT . -> RETUDD )@@G@@RN @#@@@9RGNOFREE LABEL . @D@@@9 LOAD X2,W1H1+1,A3 . GEDE )@@G@@T FIRST USED REG @G@@@9 LINK RGUNLINK . FREE 1STDF )@@G@@ REG ON IN USE LIST @E@@@9 LOAD X3,W1H2+1,A3 . ADD TO EDG )@@G@@ND OF IN USE LIST @G@@@9 LINK RGLINK . IN-USEDH )@@G@@ LIST (FIFO ORDERING) @ @@@9 LOAD X5,X2 .@ @@@9 DI )@@G@@ USING RGSWRD,X5 .@H@@@9 IF RGSWIU,OFF,RGSWKY THEN,RGX DJ )@@G@@. -> REG NOT IN USE, ALREADY FREE @ @@@9 LOAD X2,RGSWUR .DK )@@G@@@G@@@9 LOAD A3,W1,X2 . SEE IF ADDRESS WORD POINTS BACKDL )@@G@@... @D@@@9 AND,U A3,0377777 . GET RID OF KEEP BIT @E@@@9DM )@@G@@ IF A4,NE,X5 THEN,RGX . -> REG ALREADY FREE @ @@@9 DN )@@G@@ LOADA X3,RGOP1 . @ @@@9 USING RGSWRD,X5 . @ @@@9 DO )@@G@@ LOAD A4,RGSWKY . @D@@@9 LOAD A8,1,I . SET 1 WDP )@@G@@ORD A REG @C@@@9 IF A4,LT,RGSW2W,I THEN,RGGET2 . @D@@@9DQ )@@G@@ LOAD A8,2,I . SET 2 WORD A REG @ @@@9 LOADR )@@G@@DA X3,RGOP2 . @C@@@9 IF A4,LT,RGSWXR,I THEN,RGGET2 . DS )@@G@@@D@@@9 LOAD A8,1,I . SET 1 WORD X REG @ @@@9 DT )@@G@@ LOADA X3,RGOP3 . @#@@@9RGGET2 LABEL . @E@@@9 LINK XDU )@@G@@GTMPA . GET TEMP STORAGE @ @@@9 USING WORD,X2DV )@@G@@ . @^@@@9 STORE A8,W1H2 .@E@@@9 LOADA A6,AGRX10-AGRX0DW )@@G@@+AGAW . NORMAL BASE @C@@@9 STORE A6,W1H1 . SDX )@@G@@ETUP AW @C@@@9 LOADA A6,RGSNULL . SET UP FAKE AW @ @@@9DY )@@G@@ STORE A6,RGSWUR .@E@@@9 STORE A8,CDUFLD . SET U-FDZ )@@G@@IELD OF INSTRUCTION @^@@@9 USING WORD,X3 .@C@@@9 LOAEA )@@G@@D A7,W1H2,X3 . GET OP,J @D@@@9 ADD A7,RGSWRN . EB )@@G@@ GET REG NUMBER @^@@@9 SLB A7,4 . @G@@@9 ADDEC )@@G@@ A7,10,I . PUT IN X REGISTER X10 FOR TEMPORARY @D@@@9 ED )@@G@@ STORE A7,CDINPT,*X10 . SET STORE INST @F@@@9 GCORE 0 .EE )@@G@@ ADVANCE AND TEST FOR OVERFLOW @^@@@9 SRB A7,EF )@@G@@4 . @G@@@9 IF A7,NE,RGOP3 THEN,RGEXIT . -> X-REG CAN BE ODDEG )@@G@@ OR EVEN @E@@@9 LINK RGODD . MAKE SURE A-REG IS EH )@@G@@ODD @#@@@9RGX LABEL . @#@@@9RGEXIT LABEL . @ @@@9 USIEI )@@G@@NG RGSWRD,X5 . @C@@@9 LOAD A7,DRGTPE . GET REG TYPE EJ )@@G@@@D@@@9 ADD A7,RGSWIU,I . SET IN USE @ @@@9 EK )@@G@@ STORE A7,RGSWKY . @#@@@9RGXR LABEL . @B@@@9 LOAD A7,EL )@@G@@DRGSAV+3 . RETURN @ @@@9 LOAD X4,DRGSAV+2 . @ @@@9 EM )@@G@@ LOAD X3,DRGSAV+1 . @ @@@9 LOAD X2,DRGSAV . @C@@@9 EN )@@G@@ JMP . -> RETURN @ @@@9RGSNULL LBLAD RGSNULLEO )@@G@@,0 @E@@@9RGOP1 +0400 . SA OPCODE 01 TO 14 BITS EP )@@G@@@F@@@9RGOP2 +34640 . DS OPCODE 71,12 TO 14 BITS EQ )@@G@@@E@@@9RGOP3 +03000 . SX OPCODE 06 TO 14 BITS @B@@@9ER )@@G@@RGOP4 +01576660 . SHIFTED DL @E@@@9RGMASK +0377777777777 ES )@@G@@. MASK TO 'AND' OUT KEEP BIT @H@@@9RGMSK2 +0377777000000 .ET )@@G@@ MASK TO EXAMINE H1 POINTERS WITHOUT KEEP BIT @#@@@9KEPBT1 LABEL . EU )@@G@@@C@@@9KEPBIT SAC 0400000,0 . PROTECTED AW FLAG@ @@@9/. TEMEV )@@G@@PORARY ALLOCATOR @D@@@9. +---------------------+----------------EW )@@G@@-----+@D@@@9. ! SIZE OF ENTRY ! BASE ADDRESS !@D@@@9EX )@@G@@. +---------------------+---------------------+@#@@@9. ALLEY )@@G@@OCATOR@D@@@9XGTMPA* LLOC . ALLOCATE TEMPORARY @F@@@9EZ )@@G@@ LOAD A2,DCGTLV . GET CURRENT TEMP STACK LEVEL @ @@@9FA )@@G@@ USING TGDSCT,A2 . @D@@@9 LOAD A3,TGFSET,A2 . FB )@@G@@ GET OFFSET @D@@@9 ADD A3,TGSIZE,A2 . GET NEW FC )@@G@@BASE @A@@@9 STORE A3,TGFSET+1,A2 . @E@@@9 STORE A8,FD )@@G@@TGSIZE+1,A2 . SET NEW SIZE OF TEMP@D@@@9 ADD A8,A3 . FE )@@G@@ SEE IF OVERFLOW @E@@@9 IF A8,LT,DTGMAX THEN,TGTFF )@@G@@ERM . -> NOPE, RETURN @E@@@9 STORE A8,DTGMAX . SET NEWFG )@@G@@ MAX TEMP LEVEL @#@@@9TGTERM LABEL . @^@@@9 USING WORD,X7 .FH )@@G@@@E@@@9 IF A2,GE,W1XU THEN,XG2FUL . -> STACK OVERFLOW @D@@@9FI )@@G@@ ADD A2,1,I . SET NEW POINTER @ @@@9 STOFJ )@@G@@RE A2,DCGTLV . @D@@@9 LOAD A8,A3 . SET RETURNED FK )@@G@@VALUE @C@@@9 LJMP . -> RETURN @D@@@9XGTMPFFL )@@G@@* LLOC . FREE TEMPORARY @^@@@9 LOAD A2,FM )@@G@@A8 . @C@@@9 AND,U A2,0177777 . REMOVE H AND I BITS@^@@@9 FN )@@G@@ STORE A3,A8 . @C@@@9 LOAD A2,DCGTLV . GET STACK TOPFO )@@G@@@G@@@9 ANU,H1 A2,DCGTSK-(IN 63,H1,1,0) . ***FP )@@G@@**** @C@@@9 STORE A3,R1 . SET REPEAT COUNT @ @@@9 FQ )@@G@@ LOADXI A2,-1,I .@G@@@9 SE,H2 A8,0,*A2 . SEE IF BFR )@@G@@ASE LESS THAN TEMP ADDR****** @ @@@9 GOTO TGWIPE .@D@@@9FS )@@G@@ MOVE TGSIZE+1,-1,I . SET EMPTY SIZE @#@@@9TGWIPE LABFT )@@G@@EL . @C@@@9 LOADXM A2,DCGTLV . POP STACK @E@@@9 FU )@@G@@ LOAD R1,W1U+1,A3 . GET PROPER REPEAT COUNT @ @@@9 LOAFV )@@G@@DN A3,0,I .@ @@@9 SG A3,0,*A2 .@F@@@9 LJMFW )@@G@@P . FAILURE WHEN TEMP STACK IS AT BOTTOM @F@@@9 ADDFX )@@G@@ A2,1,I . POINT A2 TO CURRENT TEMP IN USE @ @@@9 STOFY )@@G@@RE A2,DCGTLV .@ @@@9 LJMP . -> RETURN @B@@@9/. COMFZ )@@G@@MON CODE GENERATOR SUBROUTINES@D@@@9. CODE GENERATOR ENTRY ROUTIGA )@@G@@NES - GNTR MACRO @^@@@9 USING WORD,A2 @#@@@9GNTRX* LLOC . GB )@@G@@@^@@@9 STORE A1,W1 . @ @@@9 STORED A7,W1+1 . @ @@@9GC )@@G@@ STORED A9,W1+3 . @^@@@9 STORE F,W1+5 . @^@@@9 GD )@@G@@ STORE X1,W1+6 .@^@@@9 STORE X2,W1+7 .@^@@@9 STORE X3,GE )@@G@@W1+8 .@^@@@9 STORE X4,W1+9 .@ @@@9 STORE X5,W1+10 . GF )@@G@@@C@@@9 LJMP . -> RETURN @D@@@9GRTNX* LLOGG )@@G@@C . RETURN - GRTN MACRO@^@@@9 LOAD A1,W1 . GH )@@G@@@^@@@9 LOAD X1,W1+6 @G@@@9GRTNXS* LLOC . RETURN GI )@@G@@WITHOUT RESETTING META-CODE POINTER @^@@@9 LOAD X2,W1+7 @^@@@9GJ )@@G@@ LOAD X3,W1+8 @^@@@9 LOAD X4,W1+9 @^@@@9 LOAGK )@@G@@D X5,W1+10 .@^@@@9 LOAD F,W1+5 . @^@@@9 LOADD A9,W1+3 .GL )@@G@@@^@@@9 LOADD A7,W1+1 .@D@@@9 JMP . -GM )@@G@@> RETURN TO CALLER@F@@@9XGCFUL* LOCAL . GENERATED CODGN )@@G@@E FULL . QUIT @B@@@9 EXERR EXERXGFL LEVEL,3 . QUIT @F@@@9GO )@@G@@XG2FUL* LOCAL . CODE GENERATOR STACK FULL . @D@@@9GP )@@G@@ EXERR EXERCGSF LEVEL,3 . STACK FULL ERROR @F@@@'/. THIS ROUTGQ )@@G@@INE WAS DELETED FROM THE ROOT SEGMENT IN THE SWITCH @C@@@'. TO ASCII TGR )@@G@@O SAE SPACE IN THE ROOT SEGEMENT @[@@@'. @#@@@'KLCH6W +1,$+3 . GS )@@G@@@ @@@' LA,S6 A8,0,*X1 . @ @@@' LMJ A1,0,A1 . GT )@@G@@@ @@@' LA,S1 A8,0,X1 . @ @@@' LA,S2 A8,0,X1 . GU )@@G@@@ @@@' LA,S3 A8,0,X1 . @ @@@' LA,S4 A8,0,X1 . GV )@@G@@@ @@@' LA,S5 A8,0,X1 . @ @@@' LMJ A1,KLCH6W+1 .GW )@@G@@@C@@@9EXCGLD EQU 20 . CG AW ERROR @C@@@9EXERCGGA EQGX )@@G@@U 21 . CG BD ERROR @D@@@9EXERXGFL EQU 22 . GY )@@G@@ CODE TABLE OVERFLOW@E@@@9EXERCGSF EQU 23 . CGSTK TGZ )@@G@@ABLE OVERFLOW @#@@@9 END . ___ *[S@@@*SDFF*+@@@@[@F@@@@HA )@@G@@ 0)^@)CTJE[TELDC9CE))AC9A85^[]FC)E(IDDQC(METDE-T^[JC0)D([ELTD-[D1^@[@@@@HB )@@G@@ 0)^@)@H@@@@ 0)^@)EDPC(NE-DD9IES)CTJD1#C(MD1DD1B^[OD[DES)ETCD9PD-^^[]C*)HC )@@G@@C-DEL CTOC(^^[OD8'@[@@@@ 0)^@)@B@@@@ 0)^@)^@)^@)^[HCDME1DD0)E0,^[UC(GDTJHD )@@G@@E9DE-U@E@@@@ 0)^@)^@)^@)^[^C(KCDME-HC(IE))D9A^[#D9HE[PE- EK)ET#DD D1#C*)HE )@@G@@@C@@@@ 0)^@)^@)^@)^[PD1DE1 ELNDDOFC)D9A^[HCDMFDGCDIC))@E@@@@ 0)^@)^@)^@)HF )@@G@@^[#D9GD- C9 ^[KCDMDS?^[HCDMFDGCDIC))AK0A84AK)^@)@[@@@@ 0)^@)@M@@@@ 0)^@)HG )@@G@@^@)^@)^[KC(MD(DETNDDJD0)E-J^[PET ^[OD[ ET ^[GDDNE-DD1BES)CDIC))E-CC*)CTJHH )@@G@@D(KE(OC(M^[KELJC9MCDHES)E-CC(T@I@@@@ 0)^@)EL E[MC(NC(IE))DDN^[BEL[D1OC(^HI )@@G@@^[PD1^C(M^[OD[ ^[AD9GD-JE9DD1B^[#D9IC-DE-DD9IES'@[@@@@ 0)^@)@L@@@@ 0)^@)HJ )@@G@@^@)^@)^@1 0)E(ID-DD(DE- C))E(NC*)D([FC)CL ^[HCD^C*)D9A^[OD[ ^[KELJC9MCDHHK )@@G@@ES)EL E[MC(NC(IE- C))CLT@M@@@@ 0)^@)E-CC(NC*)D-DETODDIC9N^[KELJE1DC- C))HL )@@G@@E-CCDO^[OD[ ^[ICDHC*)E[GE(H^[JEK)E(IDDQC(METDE-T^[JC0)D([ELTD-[D1^@J@@@@HM )@@G@@ 0)^@)E[G 81^[#D9HE[DD- EK)EL D([DDIES)CDNETJCTDCDOC(^^[RDDOD@)E-CC(NC*)HN )@@G@@E[MD9BEL[D(N 0)^@)@[@@@@ 0)^@)@K@@@@ 0)^@)^@)^@)^@2 0)D(JC-DC1DCT[E-DD9IHO )@@G@@ES)D([FC)CL ^[HCD^C*)E-J^[OD[ ^[GDDNE-DD1BES)E[MD9QDD^C(^BK)@[@@@@ 0)^@)HP )@@G@@@M@@@@ 0)^@)^@)^@)^@*CC(^[[D1T^[MC(NE(GE-DD1B^[KELJC9MCDH ))D9M^[MC(KD9MHQ )@@G@@E)?^[KCDKC(M^[JEK)C-JCTPD( D1OCDODDJD0)^@)@M@@@@ 0)^@)^@)^@)^[^C(NCTMDD]HR )@@G@@DDIC8)ETPCTC^[KELJC9MCDH^[RDDGD))CTGC([ELGFC)DDIC-DCT[E- ^[OD[[E))E-CC*)HS )@@G@@E[MD9BEL[D*)@J@@@@ 0)^@)^@)^@)^[DES)CC)C-DCDGC(#E))D9A^[KD-PD*)D9M^[DES)HT )@@G@@C- ELDE1 C))C1MD9H^[KD-PD*?^[[D1^^@)@[@@@@ 0)^@)@L@@@@ 0)^@)^@)^@)^@*CK(HU )@@G@@^[[D-G^[NE(#D@)D(JC-DC1DCT[E-DD9IES?^[JE-CC(M^[OD[[D0)E-MDDQDD[D))CTJELMHV )@@G@@C(#E-DD9IES)@K@@@@ 0)^@)^@)^@)^[JC0)C(MELJELN^[DD0)E-CC*)ETJE(MCT ^[KELJHW )@@G@@C9MCDHES?^[ND[[D-G^[]C*)EL E[JELOC(^^[[D1^@L@@@@ 0)^@)^@)^@)^[[^[]ELDC(AHX )@@G@@^[^C(NCTMDDKE-DD9I^[JC0)E-CC*)C1 CDOE(MC*)CD^C- C))ETCCDGD))CL ^[NE(]D(DHY )@@G@@E-OC(^@F@@@@ 0)^@)^@)^@)^[OD8)E-CC*)E(IDDQC(METDE-T^[JC0)D([ELTD-[D1^ ))HZ )@@G@@CDIC))@[@@@@ 0)^@)@L@@@@ 0)^@)^@)^@)^@*CS(^[ID8)E[MD9BEL[D(N^[^C(MDDQC(^IA )@@G@@^[AELJD*)E-CC(NC*)D-DETODDIC9N^[ND[[D-G^[]C*)ETJD-^^@)@M@@@@ 0)^@)^@)^@)IB )@@G@@^[RDDOD[JE(O^[RELDE-OC(I^[[E[KELJE1[D))C1MD9H^[OD[ ^[PD1DE1 ELNDDOFC)D9AIC )@@G@@^[HCDMFDGCDIC)?^[[D1^^@)@[@@@@ 0)^@)@L@@@@ 0)^@)^@)^@)^@*C)(^[#D9KDD ES)ID )@@G@@D9A^[OD[ ET ^[KELJC9MCDHES)D([FC)CL ^[OEL[D1ND(DE-OC(^^[OD8)D9OD[ EK)^@)IE )@@G@@@L@@@@ 0)^@)^@)^@)^[GD9#CDODDJD1N^[KELJE1DC- C))E-CCDO^[NE(#D@)E-MCDIETHIF )@@G@@DDOE-[D-N^[#D- CDMD-T^[DD1^DD#CDOC*)@L@@@@ 0)^@)^@)^@)^[RD[ E-CC(M^[OD[ IG )@@G@@^[KELJC9MCDHES)CDMC*)C(SCD#E))CTJE[DC(N^[JC0)E-CC*)E(IDDQC(METDE-T^[JC0)IH )@@G@@@J@@@@ 0)^@)^@)^@)^[HCDMFDGCDIC))E[GE(H^[#D9HE[DD- EK)D9M^[[EL ^[HD9^DDAII )@@G@@DD#CDODDJD1N^[OD8)DDO 0)@[@@@@ 0)^@)@L@@@@ 0)^@)^@)^@)^@3 0)E-CC(NC*)CTJIJ )@@G@@D1^DDODDJD1N^[JD1GFC)CDKE[GFC)E-J^[OD[ ^[KD-PD*)CTJD(KDDGC(M^[DE-NC(GC0?IK )@@G@@@L@@@@ 0)^@)CDIC))CDMC*)D1JE))D( CDIE))E-J^[[E[KD-T^[OD8)CDIFC)E[MD9BEL[IL )@@G@@D*)E9MDDOE- D0)E(NDDIC8)E[GE(H 0)^@)@J@@@@ 0)^@)E-CC*)E[PELKD9NC*)D9A^[OIM )@@G@@D[ ET ^[#D9IC-DE-DD9IES)DDN^[OD8)CDGD-JE8)CDIFC)E(NC(M^[OD8)@L@@@@ 0)^@)IN )@@G@@C(SE[ ELDD( D1O^[RDDOD@)E-CC*)CTJD(KDDGC(M^[[ES)D-JD1B^[[ES)E-CC*)EL ETPIO )@@G@@D-ODDIC8)E[MD9^E(#E))^@)@M@@@@ 0)^@)DDN^[ID9O^[ND9GC))CDIC))CDN^[GD9IC8)IP )@@G@@CDN^[DE))DDN^[FD1JE9I^[OD[[E))E-CC*)E[MD9^E(#E))C- E1 D-JE[ C))^@)@^@@@@IQ )@@G@@ 0)^@)C1MD9H^[KD-PD*,^@)@[@@@@ 0)^@)@[@@@@ 0)^@)@[@@@@ 0)^@)@[@@@@ 0)^@)IR )@@G@@@[@@@@ 0)^@)@[@@@@ 8,^@)@ @@@@D(NC8%^@)^@)^[KELJCS)^@%AC) 0)@C@@@@FLH K*IS )@@G@@D(NC8*AC?AC( C)C(LE*)A)% @= (KCDME)1 C) 0)@C@@@@FLS K*D(NC8*AC?AC( C)^[ IT )@@G@@EDP^[HETB @1 )2 C) 0)^@)@^@@@@^@)^@)^@)^@)^[ D1^^@,^@)@^@@@@E[OAK%^@)^@)IU )@@G@@^[KELJCS) 0)@B@@@@C1H^@)^@)^@)^[AD9MD*)A0?AC2 )6 )1AK) 0)^@)@M@@@@DS)^@)IV )@@G@@^@)^@)^[^D8)^@)^[KE)2 @1 )1 C) ))C1H^@:FLS @2 LF *2 C?FLH @2 LF *2 C?FLSIW )@@G@@ @2 LF *1 C?FLH @2 LF *1 C) 0)@^@@@@^@)^@)^@)^@)^[ D1^^@,^@)@^@@@@^@)^@)IX )@@G@@^@)^@)^[[F[M^)) 0)@^@@@@^@)^@)^@)^@)^[^CTGELB^@,@ @@@@D(NC9N^@)^@)^[#ET IY )@@G@@CTO^@3^@,^@)@ @@@@D(NC85AC%^@)^@)^[GCD]C(G^@,^@)@A@@@@^@)^@)^@)^@)^@:E[[IZ )@@G@@ELOAK?E[[ELOAC) 0)@^@@@@E[[ELOAC)^@)^[GCD]C(G^@,@ @@@@^@)^@)^@)^@)^[HETBJA )@@G@@^@)^@0 )4^@,@D@@@@^@$ET\IL2JC-^[AG(-I-5IL>^[,H94^[(H(0H->H(>H14G(=^@$^@,JB )@@G@@@ @@@@^@)^@)^@)^@)^[!IT$^@)^@1 )2^@)@ @@@@^@)^@)^@)^@)^[!IT$^@)^@2 )2^@)JC )@@G@@@ @@@@^@)^@)^@)^@)^[!IT$^@)^@3 )2^@)@ @@@@^@)^@)^@)^@)^[!IT$^@)^@5 )2^@)JD )@@G@@@ @@@@^@)^@)^@)^@)^[!IT$^@)^@6 )2^@)@ @@@@^@)^@)^@)^@)^[!IT$^@)^@7 )2^@)JE )@@G@@@ @@@@^@)^@)^@)^@)^[!IT$^@)^@8 )2^@)@ @@@@^@)^@)^@)^@)^[!IT$^@)^@9 )2^@)JF )@@G@@@^@@@@^@$D1\I))GD3IT(G9,G(=^@$@ @@@@^@)^@)^@)^@)^[HETB^@)^@4 )2^@,@ @@@@JG )@@G@@^@$D(-J[(H(5H*)H95I-0I(4^@$^@,@ @@@@^@)^@)^@)^@)^[!IT$^@)^@1A@?A*)@F@@@@JH )@@G@@^@$C1(H->^[\I1>IL&H-\I8,^[[GL3H9?I(4G*)G(?G(!G(,I))HD$H1\IL>G))^8)@ @@@@JI )@@G@@^@)^@)^@)^@)^[!IT$^@)^@1AC?A0)@F@@@@^@$C1(H->^[>IL2H92 0)CD+IT\H-5I->^[>JJ )@@G@@H->H(>H14^[,H94^[2G(-G))^8)^@)@ @@@@^@)^@)^@)^@)^[!IT$^@)^@1AK?A*)@C@@@@JK )@@G@@^@$CD+IT\H-5I->^[>H->H(>H14^[,H94^[(H0)G1(H->^@$@ @@@@^@)^@)^@)^@)^[!IT$JL )@@G@@^@)^@1AS?B@)@K@@@@^@$E[2H9$IL-H*)GT\H(0HD?G(=^[7HD4H@)G-(G1&G(2G(,I))I1>JM )@@G@@IL3HD\H0)H9&^[KD-PD*,^[MG(^@$^@)@^@@@@E[[ELOAK)^@)^[GCD]C(G^@,JN )@@G@@@ @@@@^@)^@)^@)^@)^[KE)2^@)A8) 0)^@)@^@@@@^@)^@)^@)^@)^[ D1^^@,^@)___A@)JO )@@G@@I(3G(=^@$^@,@G@@[@^@)^@)^@)^@)^[HETB^@)^@9A0?A0) 0)^@)^@)^@)^@)E9[D-FCL[JP )@@G@@CTF^[#D9HD([D1^^@,@C@@[@*[S@@@*SDFF*@C@@@A. COPYRIGHT 1975 BY UNIVERSIJQ )@@G@@TY OF MARYLAND @[@@@A. @D@@@A. QUESTIONS CONCERNING THIS SHOULDJR )@@G@@ BE DIRECTED TO: @[@@@A. @ @@@A. MARVIN V. ZELKOWITZ @B@@@AJS )@@G@@. DEPARTMENT OF COMPUTER SCIENCE @A@@@A. UNIVERSITY OF MJT )@@G@@ARYLAND @B@@@A. COLLEGE PARK, MARYLAND 20742 @[@@@A. JU )@@G@@@G@@@A. PERMISSION TO USE THESE LISTINGS AND THE COMPUTER PROGRAMJV )@@G@@S THEY@E@@@A. REPRESENT IS GRANTED UNDER THE FOLLOWING CONDITIONS: JW )@@G@@@[@@@A. @G@@@A. 1. UNLIMITED USE MAY BE MADE OF THE PROGRAMS JX )@@G@@REPRESENTED BY @G@@@A. THESE LISTINGS PROVIDED THAT THE NAME PLUM OJY )@@G@@R UNIVERSITY OF MARYLAND@E@@@A. PL/1 COMPILER REMAINS ASSOCIATED WITH JZ )@@G@@THESE PROGRAMS. @[@@@A. @F@@@A. 2. MODIFICATIONS MAY BE MADKA )@@G@@E TO THE LISTINGS PROVIDED: @[@@@A. @G@@@A. (A) ANY RESULTIKB )@@G@@NG PROGRAM, OR REPORT, PAPER OR DOCUMENTATION @G@@@A. DESCRIBINKC )@@G@@G SUCH PROGRAM WILL CLEARLY INDICATE THAT THE PROGRAM @E@@@A. IS KD )@@G@@A DIALECT OF PLUM OR IS DERIVED FROM PLUM, AND @[@@@A. @G@@@A. KE )@@G@@ (B) ALL SUCH MODIFICATIONS, OTHER THAN TRIVIAL CORRECTIONS @F@@@AKF )@@G@@. OF ERRORS IN THE SOURCE PROGRAMS, SHALL BE REPORTED AND @G@@@AKG )@@G@@. A BRIEF DESCRIPTION OF THE FEATURE ADDED SHALL BE SUBMITTED KH )@@G@@@C@@@A. TO THE UNIVERSITY OF MARYLAND, AND @[@@@A. @F@@@AKI )@@G@@. (C) NO PROGRAMS DERIVED FROM THESE LISTINGS SHALL BE SOLD@G@@@AKJ )@@G@@. WITHOUT WRITTEN APPROVAL FROM THE UNIVERSITY OF MARYLAND, AND KK )@@G@@@[@@@A. @F@@@A. (D) COPIES OF THESE PROGRAMS MAY BE TRANSMITTKL )@@G@@ED TO OTHER @G@@@A. LOCATIONS PROVIDED THAT SUCH TRANSMITTALS CLEKM )@@G@@ARLY INDICATE @G@@@A. WHETHER THE PROGRAMS ARE EXACT COPIES OKN )@@G@@F THE UNIVERSITY OF @E@@@A. MARYLAND PLUM COMPILER OR ARE MODKO )@@G@@IFICATIONS TO IT. @[@@@A. @G@@@A. 3. THESE CONDITIONS ONLY APKP )@@G@@PLY TO THE PLUM COMPILER ITSELF, @F@@@A. AND ARE NOT MEANT TO APPLYKQ )@@G@@ TO ANY PROGRAM WRITTEN USING PLUM. @E@@@A. THE PURPOSE OF THESE CONDIKR )@@G@@TIONS IS TO ALLOW ANY USER TO @F@@@A. EXPERIMENT WITH THE COMPILER AS KS )@@G@@LONG AS THE RESULTING PRODUCT @G@@@A. IS NOT SOLD AND AS LONG AS IT ISKT )@@G@@ KNOWN THAT THE PRODUCT DEVELOPED @#@@@A. FROM PLUM. @[@@@A. KU )@@G@@@[@@@A. @[@@@A. @[@@@A. @[@@@A. @[@@@A/. @#@@@A KV )@@G@@ AXR$ . @#@@@A DCLRG . @#@@@A UNLIST . @#@@@A@ADD,PKW )@@G@@ PLTVDS . @#@@@A LIST . @#@@@A@ADD,P PLATTR . @E@@@AXXXXXXKX )@@G@@ CSECT 3 . SET THE LOCATION COUNTER @^@@@ATABLE EQUKY )@@G@@ 9 . @C@@@ATABPTR EQU +(IN 9,H1,0,0) . BCD POINTER @E@@@AKZ )@@G@@TBOFST EQU +(IN 9,XH2,0,0) . OFFSET FROM ORIGINAL MAP @I@@@ANODE LA )@@G@@ EQU 9 . NODES FOR CONSTRUCTION OF TREE IN EXPRESSIOLB )@@G@@NS @C@@@AFLINK EQU +(IN 9,H1,0,0) . FATHER LINK @D@@@ADATA LC )@@G@@ EQU +(IN 9,H2,0,0) . POINTER TO DATA @F@@@ALLINK EQU +LD )@@G@@(IN 9,H1,0,1) . POINTER TO LEFT SON IN TREE @F@@@ARLINK EQU +LE )@@G@@(IN 9,H2,0,1) . POINTER TO RIGTH SON IN TREE @#@@@A PLWORD . LF )@@G@@@#@@@A PLAC . @#@@@A PLSD . @F@@@A/. THE PROCSLG )@@G@@ NEEDED TO SET UP TABLES AND CALL SUBROUTINES @[@@@A. @[@@@A. LH )@@G@@@C@@@ATBFORM FORM 18,9,9 . FORM OF TABLE@#@@@ASTART* PROCLI )@@G@@ .@F@@@AG$SPCE*(1) EQU 5 . INITALIZE WITH 5 WORDS ATLJ )@@G@@ TOP @G@@@AFUDGE* EQU 0 . # OF WORDS TO GO AFTER EALK )@@G@@CH GROUP @F@@@AG$SUM*(1) EQU 0 . SUM OF RHS OF TABLELL )@@G@@ STARTS AT O@#@@@A END . @@@@@A@^@@@ATABSET* PROC *1 . LM )@@G@@@F@@@A ON TABSET(1)=2 . IS THIS A VALID FIRST CHAR? LN )@@G@@@G@@@A +(TBFORM G$SPCE(1),TABSET(1,1),G$SUM(1)) . SET OUT THE COLO )@@G@@NSTANT@E@@@AG$SPCE*(1) EQU G$SPCE(1)+((TABSET(1,1)*TOTAL)/16)+FUDGE . LP )@@G@@@E@@@AG$SUM*(1) EQU G$SUM(1)+TABSET(1,2) . @^@@@ALQ )@@G@@ DO 1 , END . @#@@@A OFF . @A@@@A +(TBFORM LR )@@G@@0,0,G$SUM(1)) . @E@@@AG$SUM*(1) EQU G$SUM(1)+TABSLS )@@G@@ET(1,1) . @#@@@A END . @@@@@A@#@@@ASTOP* PROC . @ @@@ALT )@@G@@ DO TOTAL>0 , END . @ @@@ATOTAL* EQU G$SUM(1)+1 . @#@@@ALU )@@G@@ END . @@@@@A@D@@@AALTC* PROC *1,1 . GENERATLV )@@G@@E AN EX INST@C@@@A EX 0,*X10 . GET NEXT CHAR@#@@@ALW )@@G@@ END . @@@@@A@E@@@AINIT* PROC *1,3 . SET POILX )@@G@@NTERS INTO LINE @E@@@A LOAD X3,FORZER . SET CHARS IN LY )@@G@@WORD TO ZERO@E@@@A ON INIT(1,1)='NAME' . SET TO FIELD FOR NLZ )@@G@@AME @E@@@A LOAD X1,NAMEST . POINT TO WHERE NAME GOES MA )@@G@@@E@@@A LOAD A13,NAMLEN . GET SIZE OF THIS FIELD @^@@@AMB )@@G@@ DO 1 , END . @#@@@A OFF . @G@@@A ON IMC )@@G@@NIT(1,1)='DECLARE' . SET POINTERS TO PLACE FOR DCL @ @@@A LOAMD )@@G@@D X1,NUMST . @D@@@A LOAD A13,NUMLEN . GET LENGTH OFME )@@G@@ FIELD@^@@@A DO 1 , END . @#@@@A OFF . @G@@@A MF )@@G@@ ON INIT(1,1)='ATTR' . SET TO WHERE ATTRIBUTE LIST GOES @E@@@AMG )@@G@@ LOAD X1,ATTBST . POINT TO FIELD ON LINE @D@@@A MH )@@G@@ LOAD A13,ATTBLN . GET FIELD LENGTH @^@@@A DO 1 , ENMI )@@G@@D . @]@@@A OFF@#@@@A END . @@@@@A@E@@@APRTBCD* PROMJ )@@G@@C *1,3 . SET TO PRINT VAR NAME @E@@@A USING SMK )@@G@@DBCD,PRTBCD(1,1) . SET THE LOCAL USING @D@@@A LOAD A1,SDBCML )@@G@@NT . GET THE LENGTH @E@@@A LOADXM X4,SDBCPT . GMM )@@G@@ET POINTER TO STRING @E@@@A LINK PUTBCD . INSERT MN )@@G@@STRING IN LINE @#@@@A END . @@@@@A@E@@@APRTSD* PROC *MO )@@G@@0,1 . PROC TO PRINT OUT SD NAME@D@@@A LINK PUTSD .MP )@@G@@ GO AND PRINT IT @#@@@A END . @@@@@A@E@@@APRTOPRMQ )@@G@@* PROC *0,3 . PRINT OUT THE OPERATOR @D@@@A LOAMR )@@G@@D A1,OPLEN,X8 . GET THE LENGTH @G@@@A LOADXM X4,W1U,MS )@@G@@X8 . GET THE POINTER TO THE STRING .***** @D@@@A LINK PMT )@@G@@UTBCD . GO PRINT THE SYMBOL@#@@@A END . @@@@@A@F@@@AMU )@@G@@PRTSYM* PROC *1,2 . INSERT THE SYMBOL INTO THE LINE@C@@@AMV )@@G@@ LOADXM X4,PRTSYM(1,1),I . GET THE CHAR@C@@@A LINK PMW )@@G@@UTSYM . GOTO ROUTINE @#@@@A END . @@@@@A@D@@@APRTNUMMX )@@G@@* PROC *1,2 . PUT NUMBER IN LINE @D@@@A LOAD AMY )@@G@@14,PRTNUM(1,1) . GET THE NUMBER @F@@@A LINK PUTNUM . MZ )@@G@@ CONVERT TO EXTERNAL & PRINT @#@@@A END . @@@@@A@E@@@ANA )@@G@@PRTATR* PROC *1,3 . SET TO PRINT AN ATTRIBUTE@E@@@A NB )@@G@@ LXM,U X4,PRTATR(1,1)+1 . GET ADDRESS OF ATTR @D@@@A LOANC )@@G@@D A1,PRTATR(1,1) . GET LENGTH IN CHARS@D@@@A LINK PUTBCD ND )@@G@@. GO PUT INTO LINE @#@@@A END . @@@@@A@E@@@AFIX* NE )@@G@@ PROC *1 . SET TABLE OF ATTRIBUTES @D@@@A +FINF )@@G@@X(1,1) . DUMP OUT THE LENGTH@D@@@AK DO FIX(1)-1 , +NG )@@G@@FIX(1,K+1) . DUMP OUT CHARS @#@@@A END . @@@@@A@^@@@ASPACE*NH )@@G@@ PROC *1,1 . @D@@@A LINK SKIP . GO SKIP A SPANI )@@G@@CE @#@@@A END . @@@@@A@^@@@ASEPERATE* PROC *1,1 . @G@@@ANJ )@@G@@ LINK SEP . SET TO SKIP SPACE BETWEEN ATTRIBUTES NK )@@G@@@#@@@A END . @@@@@A@A@@@A/. NOW VARIOUS CONSTANTS USED NL )@@G@@@[@@@A. @E@@@AALLBIT +0777777777777 . MASK USED IN COMPANM )@@G@@RISION@E@@@AFORTHR -4,-3 . USED TO SETUP FOR JILOOP NN )@@G@@@B@@@AFORFOR -4,-4 . '' @E@@@AFORZER -4,0 . NO )@@G@@ USED IN PRINT ROUTINES @E@@@ANAMEST LABEL . NP )@@G@@ LOCATION OF VARIABLE NAME@B@@@AFILL(1) SAC +1,BUFFER-(INNQ )@@G@@ 63,0,1,0) .@E@@@ANAMLEN 36 . LENGTH OF NAME FIELNR )@@G@@D @F@@@ANUMST LABEL . START STMT DECL'ED AT IN NS )@@G@@COL 37@C@@@AFILL(1) SAC +1,BUFFER-(IN 63,0,1,0)+9 . @F@@@ANUMLENNT )@@G@@ +12 . 12 COLS FOR STMT NUM DECL'ED IN@E@@@AATTBSTNU )@@G@@ LABEL . START ATTR LIST AT COL 49@C@@@AFILL(1) SACNV )@@G@@ +1,BUFFER-(IN 63,0,1,0)+12 . @D@@@AATTBLN +84 . NW )@@G@@ SAY 84 COLS IN LIST@A@@@ABLANK +1,KBLANK-(IN 63,0,1,0) . @F@@@ANX )@@G@@OUTSFT +36 . USED TO SHIFT OUT EXTRA JUNK @C@@@ANY )@@G@@ +27 . ONE CHAR LEFT@D@@@A +18 . NZ )@@G@@ TWO CHARS LEFT @D@@@A +9 . OA )@@G@@ THREE CHARS LEFT @D@@@A +0 . FOR CHAOB )@@G@@RS LEFT @[@@@A. @B@@@A. LOAD TABLE USED BY ALTC COMMAND OC )@@G@@@[@@@A. @E@@@AALTCDA +1,ALTC1 . POINT TO TOP OF LOOOD )@@G@@P @F@@@A LOADXM A3,W1H2,*A2 . GET LAST HALFWORD ON THISOE )@@G@@ CYCLE@F@@@A LMJ X10,0,X10 . RESET TO POINT TO TOP OF OF )@@G@@TABLE @#@@@AALTC1 LABEL . @D@@@A LOADXM A3,W1H1,A2 . GOG )@@G@@ET FIRST HALFWROD @D@@@A LOADXM A3,W1H2,*A2 . GET NEXT HALFOH )@@G@@ WORD @D@@@A LOADXM A3,W1H1,A2 . GET FIRST HALFWROD @D@@@AOI )@@G@@ LOADXM A3,W1H2,*A2 . GET NEXT HALF WORD @D@@@A LOAOJ )@@G@@DXM A3,W1H1,A2 . GET FIRST HALFWROD @D@@@A LOADXM A3,W1H2OK )@@G@@,*A2 . GET NEXT HALF WORD @D@@@A LOADXM A3,W1H1,A2 . GOL )@@G@@ET FIRST HALFWROD @D@@@A LOADXM A3,W1H2,*A2 . GET NEXT HALFOM )@@G@@ WORD @ @@@A LOADXM A3,W1H1,A2 . @D@@@A LMJ X10,ALTON )@@G@@CDA+1 . GOTO TOP OF LOOP @B@@@A/. THE TABLE OF ATTRIBUTES NEEOO )@@G@@DED @[@@@A. @[@@@A. @F@@@ASTARS FIX 4,'****' . UOP )@@G@@SED IF VAR WASNT DECLARED @F@@@ASTAR FIX 1,'* ' . UOQ )@@G@@SED IF STRING LENGTH NOT GIVEN@E@@@AINSTR FIX 10,'MEMB','ER O','FOR )@@G@@ ' . STRUCTURE LEAD @B@@@AAUTO FIX 9,'AUTO','MATI','C ' . OS )@@G@@@A@@@ASTAT FIX 6,'STAT','IC ' . @B@@@ACONTR FIX 10,'CONOT )@@G@@T','ROLL','ED ' .@A@@@ABASED FIX 5,'BASE','D ' . @A@@@APOINT OU )@@G@@ FIX 7,'POIN','TER ' . @A@@@AOFFSET FIX 6,'OFFS','ET ' . OV )@@G@@@ @@@AAREA FIX 4,'AREA' . @D@@@AFILE FIX 13,'FILE',' EOW )@@G@@XT','ERNA','L ' . @A@@@AINPUTF FIX 5,'INPU','T ' . @A@@@AOX )@@G@@OUTPUT FIX 6,'OUTP','UT ' . @A@@@APRINTF FIX 5,'PRIN','T OY )@@G@@ ' . @A@@@AKEYED FIX 5,'KEYE','D ' . @A@@@ARECORD FIX 6OZ )@@G@@,'RECO','RD ' . @A@@@ASTREAM FIX 6,'STRE','AM ' . @A@@@AFORMATPA )@@G@@ FIX 7,'FORM','AT ' . @B@@@ASTMT FIX 10,'STAT','EMEN','TPB )@@G@@ ' .@A@@@ALABE FIX 5,'LABE','L ' @B@@@ASTRUC FIX 9PC )@@G@@,'STRU','CTUR','E ' . @B@@@APROC FIX 9,'PROC','EDUR','E ' . PD )@@G@@@A@@@AENTR FIX 5,'ENTR','Y ' . @A@@@AFLOAT FIX 5,'FLOAPE )@@G@@','T ' . @A@@@AFIXE FIX 5,'FIXE','D ' . @A@@@ABIN FIXPF )@@G@@ 6,'BINA','RY ' . @A@@@ADECI FIX 7,'DECI','MAL ' . @ @@@APG )@@G@@REAL FIX 4,'REAL' . @A@@@ACOMPL FIX 7,'COMP','LEX ' . PH )@@G@@@B@@@ACHAR FIX 9,'CHAR','ACTE','R ' . @ @@@ABITS FIX 3PI )@@G@@,'BIT ' . @A@@@AVARY FIX 7,'VARY','ING ' . @B@@@ANONVAR FIXPJ )@@G@@ 10,'NONV','ARYI','NG ' .@E@@@ABUILT FIX 17,'BUIL','T-IN',' PK )@@G@@FUN','CTIO','N ' . @D@@@APSEUD FIX 15,'PSEU','DO V','ARIA','PL )@@G@@BLE ' . @B@@@APARM FIX 9,'PARA','METE','R ' . @A@@@AINITIAPM )@@G@@ FIX 7,'INIT','IAL ' . @A@E@AARRAY FIX 5,'ARRA','Y ' . PN )@@G@@@B@@@EARRAY FIX 9,'DIME','NSIO','N ' . @G@@@AMSG '**** WARPO )@@G@@NING - THIS IDENTIFIER IS NOT EXPLICITLY USED ****' . @F@@@AMSGSIZ EQUPP )@@G@@ $-MSG . THE SIZE OF THE ABOVE MESSAGE @F@@@AHEADNG 'VAPQ )@@G@@RIABLE NAME DCL''ED IN ' . @C@@@A 'ATPR )@@G@@TRIBUTES AND CROSS REFERENCE' . @E@@@AHEADSZ EQU $-HEADNG . PS )@@G@@ SIZE OF COLUMN HEADINGS @F@@@AUNDER '-------- ---- PT )@@G@@ ------ -- ' . @C@@@A '---------- --- ----- -----PU )@@G@@----' . @E@@@AUNDSIZ EQU $-UNDER . SIZE OF UNDER LININPV )@@G@@G @G@@@ATOPPER ' PLUM ATTRIBUTES AND CROSS REFERENCPW )@@G@@E LISTING' .@A@@@A DO 33-($-TOPPER) , ' ' .@E@@@A/. TABPX )@@G@@LE TO PRODUCE THE MAPPING ON THE FIRST TWO CHARS@A@@@A. IN THE SOPY )@@G@@RTING ROUTINE @[@@@A. @C@@@A START . SET THE VARIABLES TPZ )@@G@@O BE USED @E@@@AMAPCH1 EQU +(IN 0,H1,0,$-' ') . MAP FOR THE FIRSQA )@@G@@T CHAR@F@@@AMAPCH2 EQU +(IN 0,Q4,0,$-' ') . MAP FOR THE SECOND CHAQB )@@G@@R @E@@@AFACCH1 EQU +(IN 0,Q3,0,$-' ') . ADJUSTMENT FACTOR QC )@@G@@@E@@@A DO 4 , TABSET 0 . MAP IN FOR ' ' THRU '$' @E@@@AQD )@@G@@ TABSET 2,0 . ALLOW A MAP SPACE FOR $ @E@@@A QE )@@G@@ DO 060-045 , TABSET 0 . ACCOUNT FOR $ THRU 0 @G@@@A TABQF )@@G@@SET 1 . ALLOW A SPACE FOR THE DIGITS 0-9 @ @@@A QG )@@G@@ DO 9 , TABSET 0 . @E@@@A DO 7 , TABSET 0 . :;<=>?@QH )@@G@@ DON'T GET MAPS @D@@@A TABSET 28,2 . A IS GOOD CHAQI )@@G@@R @E@@@A DO 3 , TABSET 14,1 . B,C,D ARE EQUAL PROB. QJ )@@G@@@E@@@A TABSET 16,2 . E IS GOOD SECOND CHAR @E@@@AQK )@@G@@ DO 3 , TABSET 14,1 . F,G,H ALL EQUAL PROB @D@@@A QL )@@G@@ TABSET 28,2 . I IS GOOD LETTER @D@@@A TABSET 1QM )@@G@@0,1 . J IS LESS FREQ @E@@@A DO 2 , TABSET 20,1 . QN )@@G@@ K-L FAIR FIRST LETTERS @E@@@A DO 2 , TABSET 21,1 . MQO )@@G@@,N GOOD FIRST LETTERS @E@@@A TABSET 16,2 . O IS GOQP )@@G@@OD SECOND LETTER @E@@@A TABSET 24,1 . P IS GOOD FIRQQ )@@G@@ST LETTER @D@@@A TABSET 2,1 . Q IS A LOUSY LETTERQR )@@G@@@H@@@A DO 3 , TABSET 30,2 . R,S,T EXECELENT FIRST AND SECONQS )@@G@@D LETTERS @E@@@A TABSET 16,2 . U GOOD SECOND LETTQT )@@G@@ER @D@@@A DO 2 , TABSET 14,1 . V,W AVG LETTERS @D@@@AQU )@@G@@ DO 3 , TABSET 10,1 . X,Y,Z POOR LETTERS @^@@@A ON QV )@@G@@TOTAL > 0 . @ @@@AHELP EQU G$SPCE(1) . @#@@@A OFF . QW )@@G@@@ @@@A STOP . END THIS MESS@^@@@AHELP1 EQU TOTAL .@^@@@AQX )@@G@@HELP2 EQU 1024 . @[@@@A. @A@@@A. SET UP TABLE OF OPERAQY )@@G@@TORS @[@@@A. @F@@@AOPUNRY EQU W1S4 . FLAG THAT OPEQZ )@@G@@RATOR IS UNIARY @F@@@AOPPREC EQU W1S5 . PRECEDENCE LERA )@@G@@VEL FOR OPERATOR @F@@@AOPLEN EQU W1S6 . LENGTH OF STRRB )@@G@@ING OF OPERATOR @E@@@AFFF FORM 18,6,6,6 . FORM FOR FILLRC )@@G@@ING IN TABLE@G@@@AOPTAB FFF '! ',0,1,1 . OR BIOP RD )@@G@@ LEVEL 1***** @F@@@A FFF '& ',0,2,1 . AND RE )@@G@@ BIOP LEVEL 2@F@@@A FFF '>=',0,3,2 . GE RF )@@G@@ BIOP LEVEL 3@F@@@A FFF '> ',0,3,1 . GT RG )@@G@@ BIOP LEVEL 3@F@@@A FFF '^>',0,3,2 . NG RH )@@G@@ BIOP LEVEL 3@F@@@A FFF '^=',0,3,2 . NE RI )@@G@@ BIOP LEVEL 3@F@@@A FFF '< ',0,3,1 . LT RJ )@@G@@ BIOP LEVEL 3@F@@@A FFF '^<',0,3,2 . NLT RK )@@G@@ BIOP LEVEL 3@F@@@A FFF '<=',0,3,2 . LE RL )@@G@@ BIOP LEVEL 3@F@@@A FFF '= ',0,3,1 . EQ RM )@@G@@ BIOP LEVEL 3@F@@@A FFF '!!',0,4,2 . CONCATENATE RN )@@G@@ BIOP LEVEL 4@F@@@A FFF '+ ',0,5,1 . BINARY ADD RO )@@G@@ BIOP LEVEL 5@F@@@A FFF '- ',0,5,1 . BINARY SUB RP )@@G@@ BIOP LEVEL 5@F@@@A FFF '* ',0,6,1 . MULTIPLY RQ )@@G@@ BIOP LEVEL 6@F@@@A FFF '/ ',0,6,1 . DIVIDE RR )@@G@@ BIOP LEVEL 6@F@@@A FFF '**',0,7,2 . EXPONENTIATE RS )@@G@@ BIOP LEVEL 7@F@@@A DO 8 , FFF '><',0,0,2 . SKIP SPACE FORT )@@G@@R IF OPERATORS @F@@@A FFF '->',0,8,2 . POINTER RU )@@G@@ BIOP LEVEL 8@F@@@A FFF '^ ',1,7,1 . NOT RV )@@G@@ UNARYOP LEVEL 7@F@@@A FFF '+ ',1,7,1 . UNIARY PLUS RW )@@G@@ UNIARYOP LEVEL 7@F@@@A FFF '- ',1,7,1 . NEGATE RX )@@G@@ UNIARYOP LEVEL 7@^@@@ADIMCLN SFW 0 . @D@@@A FFF 'RY )@@G@@1:',0,0,2 . DEFAULT LOWER BOUND@A@@@A/. START OF SORT ROUTINERZ )@@G@@S @[@@@A. @[@@@A. @E@@@APLATTR* LOCAL . ESA )@@G@@NTRY POINT TO THIS PHASE@E@@@A LOAD A15,0,I . A15=0 TSB )@@G@@HIS WHOLE PASS @@@@@A@F@@@A LOADXI A1,1,I . THESE RESC )@@G@@GISTERS MUST BE SETUP @F@@@A LOADXI A2,1,I . TOSD )@@G@@ THESE VALUES FOR THE @F@@@A LOADXI X3,-1,I . DUSE )@@G@@RATION OF THIS PASS @ @@@A LOAD R2,ALLBIT . @@@@@A@G@@@ASF )@@G@@ LOAD A8,1024,I . SEE IF MINIMUM TABLE AREA AVALIABLE SG )@@G@@@D@@@A STORE A8,TABSIZ . SET CURRENT SIZE @G@@@A SH )@@G@@ ADD A8,ADPCBE . START SORT TABLE AFTER END ALPHACODE @F@@@ASI )@@G@@ STORE A8,TABEND . THIS IS WHERE TABLE WILL END @D@@@ASJ )@@G@@ SUB A8,ADPCND . END OF CORE IS HERE@D@@@A IF SK )@@G@@A8,LT,0,I THEN,PLSORT . ->ROOM ENOUGH @F@@@A LOAD A7,0,I SL )@@G@@. SET REGISTER FOR HIS ROUTINE @[@@@A. @C@@@A. TO SM )@@G@@GET MORE CORE A8=# OF WORDS NEEDED @E@@@A. A7=0 SN )@@G@@ THEN LINK TO ZMCORE @[@@@A. @E@@@A LINK ZMCORE SO )@@G@@. GET ADDITIONAL SPACE @F@@@APLSORT LABEL . SP )@@G@@ IF THE TABLE IS TO BE STRECHED @F@@@A. SQ )@@G@@ IT SHOULD BE DONE HERE @F@@@A LOAD A12,TABEND . SR )@@G@@ GET END OF TABLE FOR LATER @E@@@A LOAD A13,TABBEG . SS )@@G@@ GET BEGINNING FOR LATER @E@@@A LOADXM A1,TABBEG . PST )@@G@@OINT TO TABLE START @E@@@A LOADA X11,KKD0 . POINT TSU )@@G@@O WORD OF ZEROS @E@@@A LOAD R1,TABSIZ . GET THE SIZE SV )@@G@@OF THE TABLE@E@@@A BT A1,0,*X11 . SET THE TABLE TO ZESW )@@G@@RO @F@@@A LOAD A14,0,I . SET COUNT OF BCD'S TO ZERSX )@@G@@O @E@@@A LOAD X6,ADBK0S . POINT TO BLOCK ZERO SD SY )@@G@@@D@@@A LOAD X7,X6 . GET POINTER TO SD @D@@@A. SZ )@@G@@ X6=BLOCK SD X7=SD TO CHAIN FROM@F@@@ANEXTSD LABEL . TA )@@G@@ FOLLOW THE NEXTDC CHAIN HERE @ @@@A USING STB )@@G@@DSECT,X7 . @D@@@A IF SDNXDC,ZERO THEN,NEXTBK . END OF CHAIN? TC )@@G@@@E@@@A LOAD X7,SDNXDC,X7 . GET THE NEXT SD IN CHAIN @G@@@ATD )@@G@@ IF SDVRCN,OFF,SDCLS1 THEN,NOTCON . IF CONSTANT CHECK IF LABEL TE )@@G@@@G@@@A IF SD3LCN,OFF,SDCLS3 THEN,NEXTSD . IS THIS A NUMBER CONSTTF )@@G@@ANT? @E@@@ANOTCON LABEL . VARIABLE IS NOT A NUMBER TG )@@G@@@[@@@A. @D@@@A. EXTRA CHECKS MUST BE MADE HERE TO PREVENT TH )@@G@@@F@@@A. VARIABLES LIKE $$$ARITH$$$ FROM BEING LISTED TI )@@G@@@[@@@A. @E@@@A LOAD X8,SDBCHI . POINT TO BCD FOR THTJ )@@G@@IS SD @E@@@A USING SDBCD,X8 . X8 POINTS TO THE BCD TK )@@G@@@G@@@A IF SDSORT,ON,SDBCL4 THEN,NEXTSD . HAS THIS NAME BEEN SORTTL )@@G@@ED? @E@@@A ADD A14,1,I . ANOTHER NAME TO SORT TM )@@G@@@C@@@A SET SDSORT,ON,SDBCL4 . SET FLAG ON @E@@@A LOATN )@@G@@D A3,SDBCC1 . GET FIRST CHAR IN NAME @E@@@A LOAD XTO )@@G@@1,MAPCH1,A3 . GET MAP FOR FIRST CHAR @D@@@A LOAD A4,FACCTP )@@G@@H1,A3 . GET PACKING FACTOR @D@@@A LOAD A3,SDBCC2 . GTQ )@@G@@ET SECOND CHAR @E@@@A MPYS A4,MAPCH2,A3 . GET FACTOR TITR )@@G@@MES OFFSET @G@@@A SRB A4,4 . DIVIDE BY SIXTEEN FTS )@@G@@OR TRUE FACTOR @F@@@A ADD X1,A4 . ADD IN MAP FOTT )@@G@@R SECOND CHAR @[@@@A. @F@@@A. EXPANDED TABLE SIZE COULD BTU )@@G@@E ACCOUNTED FOR HERE TOO. @[@@@A. @E@@@A ADD X1,TABBTV )@@G@@EG . POINT TO PLACE IN TABLE .@ @@@A USING TABLE,X1 . TW )@@G@@@H@@@A ADD X1,TBOFST,X1 . ADD IN MAGIC OFFSET TO GET TO PTX )@@G@@ROPER PLACE @D@@@A LOAD A5,0,I . CLEAR UP/DOWN FLAG TY )@@G@@@E@@@A LOAD A10,0,I . CLEAR LAST MOVE FLAG @E@@@ATZ )@@G@@SORTRY LABEL . TRY AGAIN HERE AFTER MOVING FROM COLLISION @D@@@A UA )@@G@@ IF TABPTR,NZERO THEN,SORCOL . ->COLLISION @F@@@A STORE XUB )@@G@@8,TABPTR . SET SORTED POINTER IN PLACE @D@@@A STORE AUC )@@G@@10,TBOFST . WHAT WAS LAST MOVE @D@@@A GOTO NEXTSD . UD )@@G@@ GET NEXT SD TO SORT@E@@@ASORCOL LABEL . COLLISIUE )@@G@@ONS HANDELED HERE @D@@@A. X8=BCDPTR TO UF )@@G@@INSERT@E@@@A. X1= PLACE TO TEST AGAINSTUG )@@G@@@[@@@A. @C@@@A. SEE ROUTINE EXCOMP IN ELT EXST FOR @E@@@AUH )@@G@@. EXPLANATION OF THIS COMPARISION METHOD @E@@@A. UI )@@G@@ X8=LHS X9=RHS IN COMPARISION @[@@@A. @[@@@AUJ )@@G@@. @E@@@A LOAD X9,TABPTR . GET BCD PTR FROM TABLE UK )@@G@@@F@@@A LOAD A10,1,I . ASSUME LHS ">" RHS,->MOVE DOWN UL )@@G@@@D@@@A LOAD A3,SDBCNT,X8 . GET LHS LENGTH @D@@@A UM )@@G@@ LOADXM A1,SDBCPT,X8 . POINT TO LHS STRING@D@@@A LOADXM AUN )@@G@@2,SDBCPT,X9 . POINT TO RHS STRING@ @@@A USING SDBCD,X9 . UO )@@G@@@D@@@A IF A3,LE,SDBCNT THEN,SORT01 . IS LHS SHORTER?@E@@@A UP )@@G@@ LOAD A3,SDBCNT . GET LENGTH OF SHORTER @D@@@A LDSUQ )@@G@@C A1,36 . SWITCH POINTERS @E@@@A LOAD A10,-1,UR )@@G@@I . SWITCH COMPARISION VALUE @F@@@ASORT01 LABEL . US )@@G@@ NOW A3=LEN OF SHORTER NAME @[@@@A. @F@@@A. UT )@@G@@ A1 POINTS TO SHORTER STRING @G@@@A. UU )@@G@@ AND A10 WILL =1 IF X8 POINTS TO ">" STRING@[@@@A. @D@@@AUV )@@G@@ AH A3,FORFOR . SETUP FOR JILOOP @D@@@ASORT02 LABUW )@@G@@EL . AT LEAST ONE CHARS LEFT TO COMPARE @E@@@A LOAD A7,W1,*UX )@@G@@A1 . GET NEXT WORD OF LHS @D@@@A LOAD A8,W1,*A2 . UY )@@G@@ NEXT WORD OF RHS @E@@@A IF A7,NE,A8 THEN,SORT03 . NEUZ )@@G@@,THIS WILL TELL @C@@@A JILOOP A3,SORT02 . TRY AGAIN VA )@@G@@@D@@@A LOADN A10,A10 . LHS=RHS,MOVE UP @D@@@A VB )@@G@@ GOTO TRYUP . DONE THIS HALF @D@@@ASORT03 LABEL . VC )@@G@@ HERE WHEN A7 ^= A8 @D@@@A LOAD R1,1,I . VD )@@G@@ SET REPEAT COUNT @D@@@A MASG A8,A7 . IS LHS VE )@@G@@">" RHS? @D@@@A LOADN A10,A10 . SET RHS ">" LHS VF )@@G@@@[@@@A. @C@@@A. NOW A10=1 IF X8'S STRING > X9'S STRING @[@@@AVG )@@G@@. @E@@@ATRYUP LABEL . SEE WHICH WAY TO MOVE VH )@@G@@@E@@@A IF A10,GE,0,I THEN,TRYDWN . MOVE DOWN TO TRY NOW? @D@@@AVI )@@G@@ SUB X1,1,I . MOVE POINTER UP @E@@@A IF VJ )@@G@@A5,GE,1,I THEN,AFTER . X8 GOES AFTER CURRENT @G@@@A AU,XH2 AVK )@@G@@10,0+1,X1 . ADD IN CORECTION FACTOR **** @E@@@A STOVL )@@G@@RE A11,TBOFST+1,X1 . SET NEW CORRECTION FACTOR@D@@@A SUB AVM )@@G@@5,1,I . SET UP FLAG HIGHER @F@@@A IF A13,LE,X1 THEN,SORVN )@@G@@TRY ELSE,AFTER . IF ROOM TRY AGAIN @E@@@ATRYDWN LABEL . VO )@@G@@ LHS WAS ">" THAN RHS @E@@@A IF A5,LT,0,I THEN,AFTER . XVP )@@G@@8 GOES AFTER CURRENT @G@@@A AU,XH2 A10,0,X1 . ADD IN VQ )@@G@@CORECTION FACTOR **** @E@@@A STORE A11,TBOFST,X1 . SVR )@@G@@ET NEW CORRECTION FACTOR@D@@@A ADD A5,1,I . SET DOWVS )@@G@@N FLAG LOWER@D@@@A ADD X1,1,I . MOVE DOWN IN TABLE VT )@@G@@@D@@@A IF A12,GE,X1 THEN,SORTRY . IF ROOM TRY AGAIN @D@@@A VU )@@G@@ SUB X1,1,I . ELSE PLANT AT END @B@@@A/. INSERT X8VV )@@G@@ AFTER CURRENT LOCATION @D@@@A. IF AT END OF TABLE,FORCE VW )@@G@@PROPER MOVE @[@@@A. @E@@@AAFTER LABEL . X8 GOESVX )@@G@@ AFTER CURRENT @E@@@A LOAD A8,X1 . GET CURRENT PVY )@@G@@OSITION @F@@@A SUB A8,A13 . SEE HOW FAR TO TOP VZ )@@G@@OF TABLE @D@@@A IF A8,LE,0,I THEN,AFTER1 . NOT ROOM IN TABLE WA )@@G@@@D@@@A LOAD R1,A8 . SET REPEAT COUNT @E@@@A WB )@@G@@ LOADXM X3,X1 . SET TO LOOK BACKWARDS @E@@@A SE WC )@@G@@ A15,0,*X3 . LOOK FOR ZERO IN TABLE @F@@@AAFTER1 LABEL . WD )@@G@@ HERE IF NO FIND OR NOT ROOM @F@@@A LOAD RWE )@@G@@1,-0100000,I . SAY WENT PAST END OF TABLE @D@@@A SUB AWF )@@G@@8,R1 . GET DIST TO ZERO @G@@@A SUB A8,1,I . WG )@@G@@ MOVE ONE FEWER THAN DIST TO ZERO @E@@@A LOAD A9,A12 WH )@@G@@. NOW LOOK DOWN FOR A ZERO @E@@@A SUB A9,W1U+1,X1 .WI )@@G@@ SEE HOW FAR TO BOTTOM @C@@@A IF A9,LE,0,I THEN,AFTER2 . WJ )@@G@@NO ROOM @D@@@A LOAD R1,A9 . SET REPEAT COUNT WK )@@G@@@F@@@A LOADXM A1,X1 . SET PLACE TO START IN TABLE WL )@@G@@@D@@@A SE A15,1,*A1 . LOOK DOWN FOR ZERO @C@@@AAFTER2WM )@@G@@ LABEL . HERE IN NO ROOM OR NO FIND @F@@@A LOAD R1,-010WN )@@G@@0000,I . SAY WENT PAST END OF TABLE @D@@@A SUB A9,R1 .WO )@@G@@ SEE HOW FAR TO ZERO@H@@@A SUB A9,1,I . MWP )@@G@@OVE ONE FEWER THAN COUNT BECAUSE AFTER @D@@@A IF A8,GE,A9 THEWQ )@@G@@N,MOVEDN . WHICH IS CLOSER? @D@@@A LOAD X4,W1U+1,X3 . GWR )@@G@@ET ADDR OF ZERO @F@@@A LOAD X5,W1U+2,X3 . GET ADDR OF FWS )@@G@@IRST BCD TO MOVE @E@@@A LOADXI X4,1,I . SET TO MOVE DWT )@@G@@OWN IN TABLE@B@@@A LOADXI X5,1,I . '' @F@@@A WU )@@G@@ LOAD A9,-1,I . GET CORRECTION FOR OFFSETS @B@@@A WV )@@G@@ LOOP A8,MOVALL . MERGE @F@@@AMOVEDN LABEL . WW )@@G@@ SET TO MOVE PART OF TABLE DOWN @C@@@A LOAD A8,A9 . WX )@@G@@ GET COUNT @E@@@A LOAD X4,W1U,A1 . GET POSITION WY )@@G@@OF ZERO @F@@@A SUB A1,1,I . POINT TO BCD POINTEWZ )@@G@@R TO MOVE @E@@@A LOAD X5,W1U,A1 . GET IN PROPER REGISXA )@@G@@TER @E@@@A LOADXI X4,-1,I . SET TO MOVE UP IN TABLE XB )@@G@@@B@@@A LOADXI X5,-1,I . '' @E@@@A LOAD AXC )@@G@@9,1,I . GET CORRECTION FOR OFSETS@ @@@A LOOP A8,MOVAXD )@@G@@LL . @E@@@AMOVALL LABEL . HERE TO MOVE SDS AROUND XE )@@G@@@E@@@A AU,XH2 A9,0,X4 . FIX OFSET OF ''CURRENT'' @D@@@AXF )@@G@@ STORE A10,TBOFST,X4 . SET NEW OFFSET @C@@@A LOAXG )@@G@@D A7,TABPTR,*X5 . GET POINTER @D@@@A STORE A7,TABPTR,*X4XH )@@G@@ . MOVE POINTER AROUND@E@@@A LOOP A8,MOVALL . MOVE ALXI )@@G@@L THAT ARE NEEDED @A@@@A STORE X8,TABPTR,X4 . @E@@@A XJ )@@G@@ GOTO NEXTSD . GO GET NEXT SD TO SORT @F@@@ANEXTBK LABXK )@@G@@EL . HERE TO MOVE TO NEXT BLOCK @ @@@A USIXL )@@G@@NG SDSECT,X6 . @C@@@A IF SDNXBK,ZERO THEN,PACK . ALL DONE? XM )@@G@@@E@@@A LOAD X6,SDNXBK . GET POINTER TO NEXT BLOCK@F@@@AXN )@@G@@ LOAD X7,X6 . WHERE TO GET NEXTDEC CHAIN FROM@ @@@AXO )@@G@@ GOTO NEXTSD . @[@@@A/. @G@@@APACK LABEL . XP )@@G@@ HERE WHEN FINISHED SORT,BEFORE SCAN @[@@@A. @E@@@A XQ )@@G@@ MOVE STORAGE,0,I . SAY ON ORIGIONAL STORAGE @E@@@A STOXR )@@G@@RE A14,VARNUM . SET COUNT OF BCDS FOUND @D@@@A LOADA AXS )@@G@@1,PKAREA . POINT TO PACK AREA @C@@@A LOADXI A1,1,I . XT )@@G@@ RESET INDEX @D@@@A LOAD A9,0,I . SET COUNT TO XU )@@G@@ZERO @F@@@A LOADXM A2,TABBEG . POINT TO START OF SORT TAXV )@@G@@BLE @C@@@A SUB A2,1,I . SET TO SEARCH@D@@@A XW )@@G@@ LOAD R1,TABSIZ . GET SIZE TO SEARCH @D@@@A LOAD RXX )@@G@@3,STRSIZ,I . GET STORAGE SIZE @C@@@ASEARCH LABEL . TOP OF LOOP TXY )@@G@@O FIND SORTED BCDS@F@@@A SNE A15,1,*A2 . LOOK FOR NONZXZ )@@G@@ERO ENTRY IN TABLE@C@@@A GOTO SRCHEN . END OF SEARCHYA )@@G@@@C@@@A LOAD A8,W1,A2 . GET POINTER @D@@@A SLBYB )@@G@@D A7,18 . PACK IN NEW BCD @D@@@A ADD A9,1,I YC )@@G@@. ADD ONE TO COUNT @D@@@A IF A9,ODD THEN,SEARCH . CYD )@@G@@ONTINUE SEARCH @G@@@A STORE A7,W1,*A1 . SET BCD PRTS YE )@@G@@FOUND INTO PACKED AREA @C@@@A LOOP R3,SEARCH . LOOK FOYF )@@G@@R MORE@E@@@A LINK OUTSTR . FIRST TABLE OUT OF SPACE YG )@@G@@@E@@@A GOTO SEARCH . MORE ROOM HERE . ***** @B@@@AYH )@@G@@SRCHEN LABEL . END OF TABLE REACHED @D@@@A IF A9,EVEN THENYI )@@G@@,SCAN . NOW SCAN ALPHA CODE@F@@@A SLB A7,18 . PYJ )@@G@@UT LAST BCD PTR INTO PACK AREA@ @@@A STORE A7,W1,*A1 . @D@@@AYK )@@G@@ LOOP R3,SCAN . OUT OF STORAGE YET?@D@@@A LINYL )@@G@@K OUTSTR . GET NEXT TABLE @E@@@A GOTO SCAN . YM )@@G@@ START SCAN OF ALPHACODE @[@@@A/. @C@@@AOUTSTR LLOC . RYN )@@G@@OUTINE TO FIND MORE STORAGE @[@@@A. @F@@@A IF STORAGE,NZERYO )@@G@@O THEN,GETMOR . FIRST TIME OUT OF STORAGE?@E@@@A MOVE STORAGEYP )@@G@@,1,I . SAY STORAGE GOTTEN ONCE @D@@@A LOAD A8,ADPCND . YQ )@@G@@ GET END OF CORE @D@@@A SUB A8,ADPCBE . SEE HOWYR )@@G@@ MUCH LEFT @D@@@A LOAD R3,A8 . SET LOOP COUNTER YS )@@G@@@E@@@A LOADXM A1,ADPCBE . POINT TO FREE STORAGE @B@@@AYT )@@G@@ LJMP . RETURN @E@@@AGETMOR LOCAL . YU )@@G@@ MUST GET MORE STORAGE @C@@@A LOAD A4,STORAGE . YV )@@G@@ GET COUNT @C@@@A ADD A4,1,I . UP COUNT YW )@@G@@@E@@@A STORE A4,STORAGE . SAVE NUMBER OF REQUESTS @C@@@AYX )@@G@@. IF A4,GT,?,I THEN,ERROR*********** @D@@@A LOAD AYY )@@G@@8,512,I . GET 512 MORE WORDS @E@@@A LOAD A7,0,I . YZ )@@G@@ SET TO ZERO AS NEEDED @D@@@A LINK ZMCORE . GZA )@@G@@ET MORE STORAGE @C@@@A LOAD R3,511,I . SET COUNTER ZB )@@G@@@D@@@A JMP . RETURN TO ROUTINE @E@@@A/. ZC )@@G@@ SCAN IS THE SECOND PART OF THE ATTRIBUTE LISTER @F@@@A. ZD )@@G@@ IT WILL SCAN THE ALPHA CODE AND BUILD A CROSS @D@@@A. ZE )@@G@@ REFERENCE TABLE CHAINED FROM THE SDS @[@@@A. @F@@@ASCAN LABZF )@@G@@EL . START OF THE SCANNER OF ACODE @E@@@A. ZG )@@G@@ A1=START OF FREE STRAGE @E@@@A. ZH )@@G@@ R3=AMOUNT OF STORAGE LEFT@F@@@A LOADXM A2,ADPCZI )@@G@@BC . POINT TO START OF ALPHACODE @E@@@A LOAD X10,ALTZJ )@@G@@CDA . POINT TO ALTC ROUTINE @D@@@ACONTIN LABEL . SCAN FOR NEXTZK )@@G@@ RECOGINIZED TOKEN HERE @A@@@A ALTC . GET NEXT TOKEN @C@@@AZL )@@G@@ SRB A3,9 . DROP FLAGS @F@@@A IF A3,EQ,ZM )@@G@@ACSTEX/IC,I THEN,STARTX . IS THIS AN EXPRESSION?@F@@@A IF A3,NE,ZN )@@G@@ACSTXI/IC,I THEN,TOKEN1 . THIS ISN'T AN EXPR @F@@@A ALTC . ZO )@@G@@ SKIP REPRESENTIVE SD POINTER @E@@@ASTARTX LABEL . ZP )@@G@@ SCAN AN EXPRESSION HERE @D@@@A ALTC . ZQ )@@G@@ GET NEXT TOKEN @D@@@A IF A3,EQ,ACENEX,I THEN,CONTZR )@@G@@IN . END OF EXPR? @F@@@A IF A3,EQ,ACENEX+1,I THEN,CONTIN . TRY EZS )@@G@@NDEX WITH FLAG @E@@@A IF A3,GE,0200000,I THEN,STARTX . NOT ANZT )@@G@@ SD POINTER @E@@@A USING SDSECT,A3 . A3 MUST BE AN SD POZU )@@G@@INTER @E@@@A LOAD A8,SDXREF . GET OLD XFER POINTER ZV )@@G@@@E@@@A STORE A1,SDXREF . SAVE POINTER TO NEW XFER @D@@@AZW )@@G@@ STORE R11,W1H1,A1 . SET STMT # IN XREF @C@@@A STOZX )@@G@@RE A8,W1H2,*A1 . CHAIN REFS @D@@@A LOOP R3,STARTX . ZY )@@G@@ LOOK FOR MORE SDS @D@@@A LINK OUTSTR . GET MORZZ )@@G@@E STORAGE @D@@@A GOTO STARTX . NOW HAVE MORE ROOM AA )@@G@@@D@@@ATOKEN1 LABEL . TEST IF STMT START @E@@@A AB )@@G@@ IF A3,NE,ACSTMT/IC,I THEN,TOKEN2 . NOT STMT START? @D@@@A ALTAC )@@G@@C . GET STMT NUMBER @D@@@A LOAD R11,A3 AD )@@G@@. GET STMT NUMBER @D@@@A GOTO CONTIN . LAE )@@G@@OOK FOR NEXT TOKEN@A@@@ATOKEN2 LABEL . SEE IF LABEL OR END@G@@@A AF )@@G@@ IF A3,NE,ACEND/IC,I THEN,TOKEN3 . IT ONE OF THE SPECIAL CASES? @C@@@AAG )@@G@@. IF A3,EQ,ACLABC/IC,I THEN,TYPE2 . @C@@@A. IF A3,NAH )@@G@@E,ACLABS/IC,I THEN,TOKEN3 . @F@@@A. TYPE2 LABEL . AI )@@G@@ NEXT TOKEN IS SD OR ZERO @D@@@A ALTC . GAJ )@@G@@ET NEXT TOKEN @C@@@A IF A3,EQ,0,I THEN,CONTIN . OH WELL... AK )@@G@@@C@@@A LOAD A8,SDXREF . GET LAST REF @C@@@A STOAL )@@G@@RE A1,SDXREF . SET NEW CHAIN@C@@@A STORE A8,W1H2,A1 . AM )@@G@@ CHAIN NEW REF@D@@@A STORE R11,W1H1,*A1 . SET STMT NUMBAN )@@G@@ER @B@@@A LOOP R3,CONTIN . GO ON @D@@@A LINAO )@@G@@K OUTSTR . GET MORE STORAGE @ @@@A GOTO CONTIN AP )@@G@@. @E@@@ATOKEN3 LABEL . SEE IF END ALPHA CODE AQ )@@G@@@E@@@A IF A3,NE,ACEAC/IC,I THEN,CONTIN . NOT END ALPHACODE@[@@@AAR )@@G@@. @B@@@A. SET UP NODES FOR EXPR TO WORK ON @[@@@A. @F@@@AAS )@@G@@ LOADXI A1,2,I . SAY NODES ARE TWO WORDS LONG @E@@@AAT )@@G@@ LOAD X7,0,I . SET END OF LIST POINTER @F@@@A AU )@@G@@ SETL X9,300,I . SAY TO GET 300 NODES *******@F@@@AGETONEAV )@@G@@ LABEL . HERE TO GET SECOND WORD OF NODE@F@@@A AW )@@G@@ LOOP R3,GOTTWO . -> GOT ENOUGH SPACE FOR NODE @D@@@AOUTTWOAX )@@G@@ LABEL . NOT FULL NODE HERE @E@@@A LINK OAY )@@G@@UTSTR . TRY TO GET MORE STORAGE @F@@@A GOTO GETTWO AZ )@@G@@. NOW TRY FOR TWO FULL WORDS @E@@@AGOTTWO LABEL . BA )@@G@@ HERE WE HAVE A FULL NODE @E@@@A STORE X7,FLINK,A1 .BB )@@G@@ SET POINTER TO LAST NODE @H@@@A LOAD X7,W1U,*A1 . GBC )@@G@@ET POINTER TO CURRENT TOP OF FREE LIST @E@@@A LOOP X9,GETTBD )@@G@@WO . -> GO GET ANOTHER NODE @E@@@A LOAD X9,0,I . BE )@@G@@ SET TOP OF STACK POINTER @G@@@A GOTO ATTR . RBF )@@G@@EACHED ENDALPHACODE,GO MAKE LISTING @I@@@AGETTWO LABEL . BG )@@G@@ HERE TO LOOK FOR TWO FREE WODS FOR NEXT NODE @D@@@A LOOBH )@@G@@P R3,GETONE . -> GOT ONE OF THEM @H@@@A GOTO OUTTWO BI )@@G@@. HERE WE NEED TO TRY ANOTHER STORAGE POOL @D@@@A/. SOMBJ )@@G@@E ROUTINES NEEDED TO HELP PRINT OUT THINGS@[@@@A. @[@@@A. @[@@@ABK )@@G@@. @E@@@A. PUTSD LOOPS UP TO THE FATHER OF THE SD POINTED TO BL )@@G@@@H@@@A. BY X8 AND THEN RETURNS TO THE CURRENT NODE, PRINTBM )@@G@@ING THE @C@@@A. NAMES OF THE SONS ALONG THE WAY@[@@@ABN )@@G@@. @F@B@APUTSD LOCAL . ENTRY TO PRINT QUALIFIED BO )@@G@@NAME @F@@@BPUTSD LOCAL . ENTRY TO PRINT QUALIFIED BP )@@G@@NAME @F@B@A IF SDVRCN,ON,SDCLS1 THEN,PUTCON . -> IT IS A CONSTABQ )@@G@@NT @ @@@A USING SDSECT,X8 . @F@@@B IF SDVRCN,ON,SDBR )@@G@@CLS1 THEN,PUTCON . -> IT IS A CONSTANT @F@@@A MOVE SDKID,0BS )@@G@@,I . SET THIS TO BE END OF SON CHAIN@B@@@APUTSD1 LABEL . HERE TOBT )@@G@@ RISE TO FATHER @D@@@A LOAD A1,X8 . GET POSSIBLE BU )@@G@@KID @F@@@A IF SDMEMS,OFF,SDCLS2 THEN,PUTSD2 . IS THIS A SBV )@@G@@ON? @D@@@A LOAD X8,SDDAD . MOVE UP TO FATHER @E@@@ABW )@@G@@ STORE A1,SDKID . AND SET POINTER TO KID @E@@@A BX )@@G@@ GOTO PUTSD1 . TRY FOR FATHER'S FATHERS @E@@@APUTSD2 LABBY )@@G@@EL . X8 = OUTER FATHER'S SD @F@@@A LOAD ABZ )@@G@@3,SDBCHI . POINT TO THE BCD FOR THE NAME @F@@@A PRTBCD ACA )@@G@@3 . PUT OUT THE BCD FOR THIS FATHER@E@@@A IF SDKID,CB )@@G@@ZERO THEN,JMP . ARE WE AT ORIGIONAL SD? @E@@@A PRTSYM '.' . CC )@@G@@ INSERT NAME SEPERATOR @E@@@A LOAD X8,SDKID . CD )@@G@@ MOVE BACK DOWN TO SON @E@@@A GOTO PUTSD2 . PCE )@@G@@RINT OUT SON'S NAME NOW @[@@@A. @B@@@A. PUT OUT THE NAME OF ACF )@@G@@ CONSTANT @[@@@A. @#@@@APUTCON LABEL . @E@B@A IF SDARSTCG )@@G@@,ON,SDCLS1 THEN,PUTCOS . -> IT IS A STRING@F@@@B IF SDARST,OFF,SCH )@@G@@DCLS1 THEN,PUTCOA . -> IT IS NOT A STRING @E@@@B PRTSYM '''' . CI )@@G@@ PUT OUT LEADING QUOTE @D@@@B LOAD A3,SDBCHI . CJ )@@G@@ GET BCD POINTER @D@@@B PRTBCD A3 . DUMP OUCK )@@G@@T STRING @H@@@B JMP . RETURN TO CALLER OFCL )@@G@@ NAME PUTTER OUTTER @G@@@BPUTCOA LABEL . HERE TOCM )@@G@@ PUT OUT A CONSTANT NUMBER @D@@@A LOAD A3,SDBCHI . GCN )@@G@@ET BCD POINTER @F@@@A LOAD A4,SDBBCD,A3 . GET FIRST WORCO )@@G@@D OF THE STRING @E@@@A LOAD A6,4,I . ASSUME NO LEACP )@@G@@DING BLANKS @G@@@AARITHL LABEL . TOP OF 'LOOK FOR LECQ )@@G@@ADING BLANKS' LOOP@D@@@A LOAD A3,0,I . GET CLEAR FORCR )@@G@@ SHIFT@C@@@A SLBD A3,9 . GET NEXT CHAR@D@@@A CS )@@G@@ IF A3,NE,' ',I THEN,ARITH2 . -> NOT BLANK @E@@@A LOOP ACT )@@G@@6,ARITHL . -> RAISE SHIFT OUT COUNT @E@B@APUTCOS LABEL . CU )@@G@@ HERE FOR STRING CONSTANT @E@B@A PRTSYM '''' . CV )@@G@@ INSERT LEADING QUOTE @E@B@A LOAD A6,4,I . SCW )@@G@@ET TO SHIFT OUT NOTHING @F@@@AARITH2 LABEL . HERE FOCX )@@G@@R TO MERGE WITH STRING @D@@@A LOAD A3,SDBCHI . GET BCDCY )@@G@@ POINTER @D@@@A LOAD A1,SDBCNT,A3 . GET CHAR COUNT CZ )@@G@@@E@@@A LOADXM X4,SDBCPT,A3 . GET POINTER TO STRING @D@@@ADA )@@G@@ LOAD A3,A6 . GET SHIFT OUT COUNT@E@@@B ADDDB )@@G@@ A1,A6 . ADD CHARS LEFT IN WORD @F@@@B SUB ADC )@@G@@1,4,I . REMOVE COUNT OF FIRST WORD @E@@@B IF A6,NE,DD )@@G@@4,I THEN,ARITHM . -> NO TRAILING BLANKS @E@@@B SUB A1,4,I DE )@@G@@. DROP BLANKS AT THE END @F@@@BARITHM LABEL . DF )@@G@@ HERE TO FINISH ARITH CONSTANT @E@@@B UNSTK X11 . DG )@@G@@ POP OFF RETURN ADDRESS @E@@@A GOTO PUTBC5 . -DH )@@G@@> MERGE WITH PRTBCD @[@@@A. @E@@@A. PUTBCD EXPECTS X4 TO DI )@@G@@POINT TO THE STRING, AND A1 TO@D@@@A. CONTAIN THE LENGTH DJ )@@G@@OF THE STRING @[@@@A. @D@@@APUTBCD LLOC . XDK )@@G@@4 POINTS TO STRING@D@@@A. A1=LENGTH OF DL )@@G@@STRING@F@@@A LOAD A3,4,I . SET SHIFT OUT COUNT TO ZEDM )@@G@@RO @B@@@APUTBC5 LABEL . COME HERE FROM CONSTANTS @D@@@A LOADN )@@G@@D A6,A1 . SAVE FOR LATER @D@@@A AH A1,FORFDO )@@G@@OR . SET FOR JILOOP @D@@@A SUB A13,A6 . SDP )@@G@@EE IF ROOM LEFT @E@@@A IF A13,GE,3,I THEN,PUTBC1 . LEAVE A 3 CDQ )@@G@@HAR MARGIN @D@@@APUTBC4 LABEL . OUT OF SPACE HERE DR )@@G@@@D@@@A LOCAL . SAVE RETURN ADDRESS@E@@@A DS )@@G@@ LINK OUTLIN . OUT OF SPACE IN LINE @E@@@A UNSDT )@@G@@TK X11 . GET BACK RETURN ADDRESS @E@@@A INIT 'DU )@@G@@ATTR' . SET POINTERS TO CONTINUE @C@@@A SUB A13,A6 DV )@@G@@. SUB LENGTH @D@@@APUTBC1 LABEL . ROOM ENDW )@@G@@OUGH HERE @E@@@A LOAD A14,W1,X1 . GET LAST WORD OF LIDX )@@G@@NE @E@@@APUTBC3 LABEL . LOOP COMES BACK HERE DY )@@G@@@E@@@A LOADD A15,W1,*X4 . GET NEXT WORD OF INSERT @F@@@ADZ )@@G@@ SLBD A15,*OUTSFT,A3 . SET TO JUSTIFY NUMBER CONSTANTS@D@@@AEA )@@G@@ SRB A14,*OUTSFT,X3 . SHIFT OUT JUNK . @D@@@A SLBEB )@@G@@D A14,*OUTSFT,X3 . ALIGN NEW STUFF @D@@@A STORED A14,W1,EC )@@G@@*X1 . SAVE NEW STUFF @E@@@A LOAD A14,A15 . GED )@@G@@ET NEW LEFT OVER STUFF @E@@@A JILOOP A1,PUTBC3 . GO UNTIEE )@@G@@L END OF INSERT @F@@@A LOAD A6,W1U+8,A1 . GET ''EXTRA''EF )@@G@@ CHARS IN ITEM @F@@@A ADD A6,W1U,X3 . ADD IN LEFT OEG )@@G@@VER IN BUFFER @E@@@A LOADXM X3,A6 . GET CURRENT LEH )@@G@@EFT OVER @E@@@A IF A6,GE,5,I THEN,PUTBC2 . GO OVER WORD BOUNDEI )@@G@@RY? @E@@@A SUB X1,1,I . NO,POINT TO CURRENT WORD EJ )@@G@@@B@@@A LJMP . RETURN @E@@@APUTBC2 LABEL . EK )@@G@@ EXTRA CHARS FILLED A WORD@D@@@A JILOOP X3,LJMPEL )@@G@@ . SUB FOUR AND RETURN@[@@@A. @C@@@A. PUTNUM CONVERTSEM )@@G@@ A NUMBER TO EXTERNAL @C@@@A. AND THEN INSERTS IT IN THEN )@@G@@E LINE@[@@@A. @C@@@APUTNUM LLOC . A14=NUMBER EO )@@G@@@E@@@A LOAD A1,0,I . SET LENGTH OF NUMBER @C@@@AEP )@@G@@PUTNU1 LABEL . LOOP TO HERE FOR NEXT CHAR @D@@@A SRBD AEQ )@@G@@14,36 . PREPARE TO DIVIDE @D@@@A DIV A14,10,I . ER )@@G@@ FIND REMAINDER @C@@@A ADD A15,'0',I . ADD IN ES )@@G@@ZONE @D@@@A SRBD A15,9 . PUT DIGIT INTO A16 @D@@@AET )@@G@@ ADD A1,1,I . INCREASE CHAR COUNT@D@@@A IF EU )@@G@@A14,NE,0,I THEN,PUTNU1 . GO UNTIL ZERO @E@@@A LOADXM X4,A15+EV )@@G@@1,I . POINT TO DIGITS STRING @D@@@A GOTO PUTBCD . EW )@@G@@ GO PRINT OUT NUMBER@[@@@A. @D@@@A. PUTSYM WILL SETUP TO EX )@@G@@PRINT A SINGLE CHAR @[@@@A. @C@@@APUTSYM LLOC . EY )@@G@@ CHAR IS IN X4@C@B@A LOAD A1,1,I . SET LENGTH EZ )@@G@@@C@@@B LOAD A1,FORTHR . SET LENGTH @E@@@A LOAFA )@@G@@D A6,1,I . SET AS NEEDED IN PUTBCD @C@B@A AH AFB )@@G@@1,FORFOR . SET TO JILOOP@C@B@A STORE X4,CHARSA . SFC )@@G@@AVE CHAR @C@@@B STORE X4,CHARSA . SAVE CHAR @E@@@BFD )@@G@@ LOADXM X4,CHARSA,I . POINT TO WHERE CHAR IS @E@@@B FE )@@G@@ LOAD A3,4,I . SAY FIRST CHAR IS GOOD @C@B@A LOAFF )@@G@@DXM X4,CHARSA,I . POINT TO IT @D@@@A LOOP A13,PUTBC1 . FG )@@G@@ PRINT CHAR IF ROOM @F@@@A GOTO PUTBC4 . NO MOREFH )@@G@@ ROOM,DUMP LINE FIRST @[@@@A. @C@@@A. OUTLIN WILL DUMP OUT FI )@@G@@A LINE AND RETURN @[@@@A. @F@@@AOUTLIN LOCAL . PFJ )@@G@@RINT OUT THE CURRENT BUFFER @F@@@A LINK CLOSE . CFK )@@G@@LOSE OUT THE CURRENT AREA @C@@@A LOADA X1,BUFFER . PFL )@@G@@RINT LINE @D@B@A STACK A6 . GOPRTL DESTROYS A6 FM )@@G@@@D@@@B STORE A6,SAVA6 . GOPRTL DESTROYS A6 @B@@@B FN )@@G@@ STORE A3,SAVA3 . AND A3 @D@@@A LINK GOPRTL . FO )@@G@@ GO PRINT OUT LINE @E@B@A UNSTK A6 . GET BACFP )@@G@@K FROM SAVE AREA @E@@@B LOAD A6,SAVA6 . GET BACK FROMFQ )@@G@@ SAVE AREA @B@@@B LOAD A3,SAVA3 . RELOAD @D@@@A FR )@@G@@ JMP . RETURN TO CALLER @[@@@A. @C@@@A. FS )@@G@@ CLOSE WILL PAD THE CURRENT AREA OUT @[@@@A. @#@@@ACLOSE LLOFT )@@G@@C . @E@@@A LOAD A14,W1,X1 . GET LAST WORD OF LINE FU )@@G@@@D@@@A LOAD A15,KBLANK . GET BLANK PADDING @F@@@A FV )@@G@@ STORE A15,W1+1,X1 . BLANK OUT NEXT WORD IN LINE @C@@@A FW )@@G@@ SRB A14,*OUTSFT,X3 . DUMP JUNK @D@@@A SLBD A14,*OUFX )@@G@@TSFT,X3 . PAD WITH BLANKS @E@@@A STORE A14,W1,X1 . SFY )@@G@@ET PADDED WORD IN LINE @#@@@A LJMP . @[@@@A. @D@@@A. FZ )@@G@@ SKIP WILL SET THE POINTERS TO SKIP A SPACE @[@@@A. @#@@@ASKIP GA )@@G@@ LLOC . @D@@@A LOOP A13,SKIP1 . IS THERE ROOM? GB )@@G@@@E@@@A LOCAL . NO ROOM,GO TO NEXT LINE @D@@@AGC )@@G@@ LINK OUTLIN . DROP TO NEXT LINE @D@@@A INIGD )@@G@@T 'ATTR' . SET NEW POINTERS @B@@@A JMP . GE )@@G@@ RETURN @B@@@ASKIP1 LABEL . ROOM FOR BLANK HERE... @D@@@AGF )@@G@@ LOAD X4,BLANK . POINT TO BLANKS @C@@@A LOAGG )@@G@@D A1,FORTHR . SAY ONE CHAR @E@@@B LOAD A3,4,I . GH )@@G@@ SAY FIRST CHAR IS GOOD @F@@@A GOTO PUTBC1 . IGI )@@G@@NSERT A BLANK IN THE LINE @[@@@A. @D@@@A. THE SEPERATE PRGJ )@@G@@OC GETS YOU HERE FOR A ', ' @[@@@A. @D@@@ASEP LOCAL . GK )@@G@@ SAVE RETURN ADDRESS@F@@@A PRTSYM ',' . AGL )@@G@@ COMMA TO SEPERATE ATTRIBUTES @F@@@A SPACE . AGM )@@G@@ND THEN A SPACE BETWEEN THEM @E@@@A JMP . RGN )@@G@@ETURN NOW TO OUR SPONSOR@ @@@A/. NOW START THE LISTER @[@@@A. GO )@@G@@@[@@@A. @F@@@AATTR LABEL . LISTS ATTRIBUTES ANGP )@@G@@D REFERENCES@D@@@A MOVE BUFFER,TOPPER,33 . SET FIRST LINE GQ )@@G@@@C@@@A LOADA X1,BUFFER . POINT TO IT @D@@@A LOAGR )@@G@@D X2,4,I . SAY TO SKIP 3 LINES@D@@@A LINK GOPRNT GS )@@G@@. GO PRINT OUT LINE @F@@@A MOVE BUFFER,HEADNG,HEADSGT )@@G@@Z . SET HEADING IN BUFFER @C@@@A LOADA X1,BUFFER . SGU )@@G@@ET TO PRINT @D@@@A LOAD X2,3,I . SET TO SKIP 2 LINESGV )@@G@@@D@@@A LINK GOPRNT . GO SKIP AND PRINT @F@@@A GW )@@G@@ MOVE BUFFER,UNDER,UNDSIZ . UNDER LINE COLUMN HEADINGS @D@@@A GX )@@G@@ LOADA X1,BUFFER . POINT TO IT AGAIN @E@@@A LINK GGY )@@G@@OPRTL . GO PRINT OUT THIS LINE @E@@@A LOADXI X4,1,I GZ )@@G@@. SET AS NEEDED IN ROUTINE @E@@@A LOAD X10,ALTCDA . HA )@@G@@ SET FOR ALTC ROUTINE @F@@@A LOAD A3,STRSIZ*2,I . GHB )@@G@@ET POSSIBLE SIZE OF TABLE @E@@@A LOAD R3,VARNUM . GHC )@@G@@ET NUMBER OF VARIABLES @F@@@A SUB A3,R3 . IS PACHD )@@G@@KED LIST IN ONE PLACE? @E@@@A STOREN A3,VARNUM . SAVE NUHE )@@G@@MBER IN OTHER AREA@F@@@A IF A3,GT,0,I THEN,ATTR1 . ARE THEYHF )@@G@@ IN FIRST TABLE? @E@@@A LOAD R3,STRSIZ*2,I . GET NUMBER INHG )@@G@@ FIRST TABLE@#@@@AATTR1 LABEL . @E@@@A MOVE STORAGE,0,I .HH )@@G@@ SAY ON ORIGIONAL STORAGE @E@@@A LOADA A2,PKAREA . PHI )@@G@@OINT TO WHERE VARS START@B@@@A LOADXI A2,1,I . SET INCHJ )@@G@@@E@@@AGETBCD LABEL . COME HERE TO GET NEXT BCD FROM PACKED TABLE@D@@@AHK )@@G@@ LOOP R3,GETBC1 . COUNT OFF VARS DONE@D@@@A LOAHL )@@G@@D R3,VARNUM-FH2+FXH2 . SEE HOWMANY LEFT@E@@@A MOVE VARNUM,HM )@@G@@0,I . SAY NONE LEFT THIS TIME @F@@@A LOADXM A2,ADPCBE . HN )@@G@@ POINT TO OTHER STORAGE AREA @E@@@A LOOP R3,GETBC1 . HO )@@G@@ COUNT OFF REST OF VARS @E@@@A LOADA X1,BUFFER . PHP )@@G@@OINT TO BLANK BUFFER @E@@@A LOAD X2,3,I . PRINT THQ )@@G@@HREE BLANK LINES @D@@@A LINK GOPRNT . SKIP THOSE LIHR )@@G@@NES @E@@@A GOTO PLATND . OUT OF VARS,ALL DONE HS )@@G@@@E@@@AGETBC1 LABEL . HERE FOR NEXT VARIABLE @B@@@AHT )@@G@@ ALTC . GET NEXT NAME FROM LIST @D@@@A STORE A3,CURBHU )@@G@@CD . SAVE BCDPOINTER @F@@@A LOAD X5,A3 . SHV )@@G@@ET TO FOLLOW SDBDLK CHAIN @G@@@ACHAIN LABEL . SHW )@@G@@EE IF ANY OTHER VARS WITH SAME NAME @ @@@A USING SDSECT,X5 . HX )@@G@@@F@@@A IF SDBDLK,ZERO THEN,GETBCD . NO MORE SD'S WITH SAME BCD HY )@@G@@@E@@@A LOAD X5,SDBDLK . GET NEXT SD WITH SAME BCD@G@@@AHZ )@@G@@ LOAD F,SDCLS3 . GET INTO F REG FOR E-Z REFERENCE IA )@@G@@@E@@@A IF SDATTR,ON THEN,NOTOK . IS THIS A COMPILER SD? @E@@@AIB )@@G@@ IF SD3CLR,ON THEN,OK . WAS THIS VAR DECLARED? @#@@@ANOTOK IC )@@G@@ LABEL . @D@@@A IF SDXREF,ZERO THEN,CHAIN . SKIP IF NO REFS ID )@@G@@@E@@@AOK LABEL . OK TO PRINT VARIABLE HERE@D@@@AIE )@@G@@ LOADA X1,BUFFER . SET TO SKIP LINE @C@@@A LINIF )@@G@@K GOPRTL . GO PRINT LINE@D@@@A INIT 'NAME' . IG )@@G@@ SET TO FILL IN NAME@D@@@A LOAD A3,CURBCD . GET THIIH )@@G@@S VAR'S NAME@E@@@A PRTBCD A3 . INSERT THIS NAME INII )@@G@@ LINE @E@@@A LINK CLOSE . CLOSE OUT NAME FIELD IJ )@@G@@@F@@@A INIT 'DECLARE' . MOVE TO PLACE FOR STMT NUMBER IK )@@G@@@D@@@A IF SD3LCN,ON THEN,NUM . IS THIS A LABEL? @E@@@A IL )@@G@@ IF SD3CLR,OFF THEN,NONUM . SAY VAR WASN'T DECLARED @E@@@ANUM LABIM )@@G@@EL . PRINT OUT STMT DECL'ED IN@E@@@A PRTNUM SIN )@@G@@DDCNM . PRINT THE STMT DECL'ED IN@E@@@A GOTO LISTST IO )@@G@@. GO PRINT THE ATTRIBUTES @G@@@ANONUM LABEL . IP )@@G@@ THIS VARIABLE WASN'T DECLARED BY USER@D@@@A PRTATR STARS .IQ )@@G@@ PUT OUT SOME STARS @C@@@A/. NOW LIST OUT THIS VARIABLESIR )@@G@@ ATTRIBUTES @[@@@A. @[@@@A. @D@@@ALISTST LABEL . IS )@@G@@ START OF ATTR LIST @E@@@A LINK CLOSE . CLOSE OIT )@@G@@UT NUMBER FIELD @G@@@A INIT 'ATTR' . SET TO START IU )@@G@@AT PLACE FOR ATTRIBUTES @D@@@A LOAD F,SDCLS2 . GET CLAIV )@@G@@SS 2 BITS @F@@@A IF SDMEMS,OFF THEN,NOTSTR . IS IT MEMBER OF SIW )@@G@@TRUCTURE @C@@@A PRTATR INSTR . SAY '(IN ' @E@@@AIX )@@G@@ MOVE SDKID,0,I . SET CHAIN END TO ZERO @G@@@ALISTS1IY )@@G@@ LABEL . FOLLOW FATERS TO TOP OF STRUCTURE @D@@@AIZ )@@G@@ LOAD X8,X5 . SET TO FOLLOW CHAIN@D@@@A LOAJA )@@G@@D X5,SDDAD . POINT TO FATHER @D@@@A STORE X8,SDKIJB )@@G@@D . SET POINTER TO KID @F@@@A IF SDMEMS,ON,SDCLS2 THEN,LIJC )@@G@@STS1 . DOES THIS HAVE A FATHER@F@@@ALISTS2 LABEL . NJD )@@G@@OW FOLLOW CHAIN BACK DOWN @D@@@A LOAD X8,SDBCHI . GJE )@@G@@ET POINTER TO NAME@D@@@A PRTBCD X8 . PRINT THIS NAJF )@@G@@ME @F@@@A IF SDARRY,OFF,SDCLS2 THEN,NEXFAT . IS THIS AN ARRAYJG )@@G@@? @D@@@A LOAD R1,SDNDIM . GET NUMBER OF DIMS @C@@@AJH )@@G@@ PRTSYM '(' . PUT LEADING (@C@@@A LOOP RJI )@@G@@1,FIRSTA . CORRECT COUNT@E@@@AFIRSTA LABEL . PJJ )@@G@@RT STAR FOR NEXT DIM @C@@@A PRTATR STAR . PRINT AJK )@@G@@ STAR @C@@@A LOOP R1,NEXTAR . MORE DIMS? @C@@@A JL )@@G@@ PRTSYM ')' . PUT CLOSING )@D@@@A GOTO NEXFAT JM )@@G@@. GO DO NEXT FATHER @A@@@ANEXTAR LABEL . MORE DIMS HERE JN )@@G@@@D@@@A PRTSYM ',' . SEPERATE BY A COMMA@F@@@A JO )@@G@@ GOTO FIRSTA . GO PRINT STAR FOR THIS DIM @E@@@ANEXFATJP )@@G@@ LABEL . GO ON TO NEXT FATHER @C@@@A LOAJQ )@@G@@D X5,SDKID . POINT TO KID @E@@@A IF SDKID,ZERO THEN,ENJR )@@G@@DSTR . IS THIS THE ORIGIONAL? @C@@@A PRTSYM '.' . PJS )@@G@@RINT OUT A .@E@@@A GOTO LISTS2 . CONTINUE ON TO NEXTJT )@@G@@ NAME @C@@@AENDSTR LABEL . END OF NAMES @D@@@A JU )@@G@@ SEPERATE . SEPERATE ATTRIBUTES@D@@@ANOTSTR LABEL . JV )@@G@@ NOW CHECK IF ARRAY @D@@@A IF SDARRY,OFF THEN,NOJW )@@G@@TARR . IS THIS AN ARRAY?@C@D@A PRTATR ARRAY . SAY ARRJX )@@G@@AY @G@@@A LOAD X6,SDSTRB . GET ADDRESS OF META CODE JY )@@G@@POINTER @H@@@A IF SDSTRU,ON,SDCLS4 THEN,LIST1 . MCODE POINTEJZ )@@G@@R IS IN DIFFERENT PLACE @G@D@A LOAD A3,SDDVA . MCODE PKA )@@G@@OINTER IS IN D.V. TEMPLATE @F@D@A LOAD X6,SDDVBM,A3 . GKB )@@G@@ET POINTER TO BOUNDS META CODE@F@@@D LOAD X6,SDDVBM,X6 . GKC )@@G@@ET POINTER TO BOUNDS META CODE@G@@@ALIST1 LABEL . MKD )@@G@@ERGE WITH POINTER TO CODE IN X6 @E@D@A LOAD A3,X6 . KE )@@G@@ GET INTO CORRECT REGISTER@^@@@D LOAD A3,X6 .@H@@@D KF )@@G@@ IF A3,EQ,0,I THEN,NOTARR . ROOT IS ARRAY IMPLIED MEEMBER IS KG )@@G@@@C@@@D PRTATR ARRAY . SAY ARRAY @E@@@D LOAKH )@@G@@D A3,X6 . GET INTO CORRECT REGISTER@C@@@A LINK LKI )@@G@@MCP . GO SET REGS @E@@@A PRTSYM '(' . OKJ )@@G@@PEN ARRAY REFERENCE @E@@@A SETL R4,SDNDIM . SET TO KK )@@G@@COUNT OFF THE DIMS@E@@@ATOPDIM LABEL . TOP OF LOOP TO LOOK FOR NEXT DIKL )@@G@@MENSION @A@@@A ALTC . GET NEXT SYMBOL @H@E@D. IF ROOT OFKM )@@G@@ STRUCTURE AND THIS MEMBER ARE ARRAYS THEN MEMBER IS ACTUALLY @G@E@DKN )@@G@@. A MULTIDIMENSIONAL ARRAY. BUT ONLY DIMENSIONS OF THE MEMBER ARRAY KO )@@G@@@E@E@D. ARE PRESENT IN THIS PART OF THE BETA CODE WHICH MEANS WE @F@E@DKP )@@G@@. MIGHT SEE A RIGHT PAREN BEFORE THE NUMBER OF DIMENSIONS FOR THIS@^@E@DKQ )@@G@@. MEMBER IS EXHAUSTED @C@E@D IF A3,EQ,ACRPAR,I THEN,RIGHKR )@@G@@TPAR .@F@B@A IF A3,NE,ACSTAR,I THEN,DIMPRE . -> ISN'T A STAR TO KS )@@G@@START @D@B@A PRTSYM '*' . STAR FOR THIS BOUND@E@B@AKT )@@G@@ GOTO ENDDIMS . MOVE TO NEXT DIMENSION @G@B@ADIMPREKU )@@G@@ LABEL . HERE TO SEE IF LOWER BOUND PRESENT @G@@@AKV )@@G@@ IF A3,EQ,ACDMUB,I THEN,NOLOWER . -> STARTS WITH UPPER BOUND KW )@@G@@@F@@@A IF A3,NE,ACDMLB,I THEN,TOPDIM . -> NO LOWER BOUND PRESENTKX )@@G@@@E@@@A LINK EXPR . UNDO THE BOUND EXPRESSION@F@@@AKY )@@G@@ PRTSYM ':' . SEPERATE LOWER AND UPPER BOUNDS@E@@@AKZ )@@G@@ GOTO GETUPR . GET NEXT UPPER BOUND @E@@@ANOLOWELA )@@G@@R LABEL . NO LOWER BOUND SPECIFIED @D@@@B LOALB )@@G@@D R8,A2 . SAVE ALTC REGS @ @@@B LOAD R9,X10 LC )@@G@@. @C@@@B ALTC . SEE IF '*' @F@@@B LD )@@G@@ IF A3,NE,ACSTAR,I THEN,DIMPRE . -> ISN'T A STAR TO START @D@@@B LE )@@G@@ PRTSYM '*' . STAR FOR THIS BOUND@E@@@B GOTO ELF )@@G@@NDDIMS . MOVE TO NEXT DIMENSION @G@@@BDIMPRE LABEL . LG )@@G@@ HERE TO SEE IF LOWER BOUND PRESENT @D@@@B LOAD ALH )@@G@@2,R8 . RESTORE ALTC REGS @ @@@B LOAD X10,R9 . LI )@@G@@@D@@@A LOAD A1,2,I . INSERT DEFAULT '1:'@D@@@A LJ )@@G@@ LOADXM X4,DIMCLN,I . POINT TO STRING @D@@@A LINK PLK )@@G@@UTBCD . -> GO INSERT IT @F@@@AGETUPR LABEL . LL )@@G@@ HERE TO OUTPUT UPPER BOUND @F@@@A LINK EXPR . LM )@@G@@ GO DROP OUT UPPER BOUND EXPR @F@@@AENDDIMS LABEL . LN )@@G@@ MERGE HERE FROM STAR IN BOUNDS @E@@@A LOOP R4,NXTDIM . LO )@@G@@ -> ANOTHER DIM TO GO THRU@#@@@DRIGHTPAR LABEL . @E@@@A PRTLP )@@G@@SYM ')' . CLOSE BOUNDS EXPRESSIONS @F@@@A LOADXM XLQ )@@G@@10,SAVX10 . RESET TO LOOK THRU BCD LIST @B@@@A LOADXM ALR )@@G@@2,SAVA2 . '' @D@@@A SEPERATE .