'HEAD' LINKER, PASS 2 C EDIT DATE 26JAN79 09:29 C SOURCE FILE LPASS2GAK.FS C AUTHOR GARY A. KUDIS C CLUSTER 5 'OUTFILE' LPASS2GAK.FR SUBROUTINE PASS2 'INCLUDE' RECORDGAK.IN, 'INCLUDE' LDATAXGAK.IN, 'INCLUDE' IODEFNGAK.IN, 'INCLUDE' IOFILEGAK.IN, LOGICAL ERX, EOF, KEYWD INTEGER I, DUMMY C PASS2 :: X WRITE (DBCHAN, 1) X1 FORMAT (' ENTER PASS2') CALL I2PASS 'DO' CALL GETFL (ERX, EOF) IF (ERX) GO TO 9998 IF (EOF) GO TO 9999 'IF' (KEYWD(DUMMY)) CALL WRLIN (MPCHAN, RBFILE, 28) 'NEXT' 'ENDIF' P CALL DEVICE (RBFILE) CALL OPENF (RBCHAN, RBFILE, ECODE) 'IF' (ECODE.NE.1) CALL ERROR(3) 'NEXT' 'ENDIF' X WRITE (DBCHAN, 2) (RBFILE(I), I=1,7) X2 FORMAT (' IN PASS2 AFTER OPEN ', 7A2) 'DO' CALL GRCORD (ERX, EOF) IF (ERX) GO TO 9996 IF (EOF) GO TO 9997 'IF' (RTYPE.NE.1 .AND. RTYPE.NE.2 .AND. .NOT.LOADRB) 'NEXT' 'ENDIF' IF (RTYPE.NE.3) CALL CHCKER X WRITE (DBCHAN, 3) RTYPE, RSTYPE X3 FORMAT (' IN PASS2; RTYPE= ', I6, ' RSTYPE= ', I6) GOTO (100,200,300,400,500,600,700,800,900,^ 1000,1100,1200,1300,1400,1500,1600,1700,^ 1800,1900,2000) RTYPE 100 CALL T01P2 'NEXT' 200 CALL T02P2 'NEXT' 300 CALL T03P2 'NEXT' 400 CALL T04P2 'NEXT' 500 CALL T05P2 'NEXT' 600 CALL T06P2 'NEXT' 700 CALL T07P2 'NEXT' 800 CALL T08P2 'NEXT' 900 CALL T09P2 'NEXT' 1000 CALL T10P2 'NEXT' 1100 CALL T11P2 'NEXT' 1200 CALL T12P2 'NEXT' 1300 CALL T13P2 'NEXT' 1400 CALL T14P2 'NEXT' 1500 CALL T15P2 'NEXT' 1600 CALL T16P2 'NEXT' 1700 CALL T17P2 'NEXT' 1800 CALL T18P2 'NEXT' 1900 CALL T19P2 'NEXT' 2000 CALL T20P2 'END' 9996 CALL ERROR (7) 9997 CALL CLOSF (RBCHAN, ECODE) IF (ECODE.NE.1) CALL ERROR (3) 'END' 9998 CONTINUE 9999 CONTINUE CALL PUNCH (0, 0, 0) X WRITE (DBCHAN, 4) X4 FORMAT (' EXIT PASS2') RETURN END 'OUTFILE' T01P2GAK.FR SUBROUTINE T01P2 C EDIT DATE 26JAN79 09:29 C SOURCE FILE LPASS2GAK.FS C AUTHOR GARY A. KUDIS C CLUSTER 5.01 C PASS 2 RECORD TYPE 01 'MODULE START' PROCESS 'INCLUDE' IODEFNGAK.IN, 'INCLUDE' DARRAYGAK.IN, 'INCLUDE' LDATAXGAK.IN, 'INCLUDE' NTABLEGAK.IN, INTEGER SEARCH, DUMMY INTEGER I INTEGER TITLE DATA TITLE /'$$'/ C T01P2 : X WRITE (DBCHAN, 1) X1 FORMAT (' ENTER T01P2') NTITLE = NTITLE + 1 NAME (1) = TITLE CALL EHX (NTITLE, NAME, 3, 6) NSIZE = 3 NLX = SEARCH (DUMMY) MODNLX = NLX CALL SET (0, DICT, DTSTOP) CKSUM = 0 CALL GNAME (2) 'IF' (IAND(NFLAGS(NLX),LDMBIT).EQ.0) LOADRB = .FALSE. 'ELSE' LOADRB = .TRUE. CALL WRLIN (MPCHAN, NAME, 2*NSIZE) 'ENDIF' X WRITE (DBCHAN, 2) X2 FORMAT (' EXIT T01P2') RETURN END 'OUTFILE' T02P2GAK.FR SUBROUTINE T02P2 C EDIT DATE 26JAN79 09:32 C SOURCE FILE LPASS2GAK.FS C AUTHOR GARY A. KUDIS C CLUSTER 5.02 C PASS 2 RECORD TYPE 2 'MODULE END' PROCESS 'INCLUDE' LDATAXGAK.IN, 'INCLUDE' DARRAYGAK.IN, 'INCLUDE' IODEFNGAK.IN, 'INCLUDE' TXTCOMGAK.IN, INTEGER I C T02P2 : X WRITE (DBCHAN, 1) X1 FORMAT (' ENTER T02P2') 'IF' (LOADRB) CALL WRLIN (MPCHAN, TEXT, 54) 'ENDIF' LOADRB = .FALSE. 'DOLOOP' I = 1, DTSTOP 'IF' (DICT(I).NE.0) X WRITE (DBCHAN, 2) I, DICT(I) X2 FORMAT (' ', I5, ' ', I5) 'ELSE' 'BREAK' 'ENDIF' 'END' X WRITE (DBCHAN, 3) X3 FORMAT (' EXIT T02P2') RETURN END 'OUTFILE' T03P2GAK.FR SUBROUTINE T03P2 C EDIT DATE 26JAN79 09:32 C SOURCE FILE LPASS2GAK.FS C AUTHOR GARY A. KUDIS C CLUSTER 5.03 C PASS 2 RECORD TYPE 3 'CHECKSUM' PROCESS 'INCLUDE' LDATAXGAK.IN, 'INCLUDE' RECORDGAK.IN, 'INCLUDE' IODEFNGAK.IN, C T03P2 : X WRITE (DBCHAN, 1) X1 FORMAT (' ENTER T03P2') IF (RECORD(2).NE.CKSUM) CALL ERROR(9) CKSUM = 0 X WRITE (DBCHAN, 2) X2 FORMAT (' EXIT T03P2') RETURN END 'OUTFILE' T04P2GAK.FR SUBROUTINE T04P2 C EDIT DATE 26JAN79 09:32 C SOURCE FILE LPASS2GAK.FS C AUTHOR GARY A. KUDIS C CLUSTER 5.04 C PASS 2 RECORD TYPE 4 'MODULE ID' PROCESS 'INCLUDE' RECORDGAK.IN, 'INCLUDE' IODEFNGAK.IN, INTEGER I C T04P2 : X WRITE (DBCHAN, 1) X1 FORMAT (' ENTER T04P2') CALL WRLIN (MPCHAN, RECORD, 80) X WRITE (DBCHAN, 2) X2 FORMAT (' EXIT T04P2') RETURN END 'OUTFILE' T05P2GAK.FR SUBROUTINE T05P2 C EDIT DATE 26JAN79 09:32 C SOURCE FILE LPASS2GAK.FS C AUTHOR GARY A. KUDIS C CLUSTER 5.05 C PASS 2 RECORD TYPE 5 'GROUP DEFINITION' PROCESS 'INCLUDE' DARRAYGAK.IN, 'INCLUDE' NTABLEGAK.IN, 'INCLUDE' IODEFNGAK.IN, 'INCLUDE' RECORDGAK.IN, 'INCLUDE' TXTCOMGAK.IN, INTEGER SEARCH, DUMMY C T05P2 : X WRITE (DBCHAN, 1) X1 FORMAT (' ENTER T05P2') CALL GNAME(4) 'IF' (NSIZE.GT.0) CALL EHX (NTITLE, NAME(NSIZE+1), 1,4) CALL EHX (ID, NAME(NSIZE+3), 1,4) NSIZE = NSIZE + 4 NLX = SEARCH (DUMMY) 'IF' ((NLX.NE.0).AND.(NFLAGS(NLX).NE.0)) DICT (ID) = NLX 'IF' (RSTYPE .NE. 0) CALL EHX (NADDRS (NLX), TEXT, LEFT (RSTYPE), ^ RIGHT (RSTYPE)) 'ENDIF' 'ENDIF' 'ENDIF' X WRITE (DBCHAN, 2) X2 FORMAT (' EXIT T05P2') RETURN END 'OUTFILE' T06P2GAK.FR SUBROUTINE T06P2 C EDIT DATE 26JAN79 09:32 C SOURCE FILE LPASS2GAK.FS C AUTHOR GARY A. KUDIS C CLUSTER 5.06 C PASS 2 RECORD TYPE 6 'COMMON DEFINITION' PROCESS 'INCLUDE' DARRAYGAK.IN, 'INCLUDE' NTABLEGAK.IN, 'INCLUDE' IODEFNGAK.IN, INTEGER SEARCH, DUMMY C T06P2 : X WRITE (DBCHAN, 1) X1 FORMAT (' ENTER T06P2') CALL GNAME(4) 'IF' (NSIZE.GT.0) NLX = SEARCH (DUMMY) 'IF' ((NLX.NE.0).AND.(NFLAGS(NLX).NE.0)) DICT (ID) = NLX 'ENDIF' 'ENDIF' X WRITE (DBCHAN, 2) X2 FORMAT (' EXIT T06P2') RETURN END 'OUTFILE' T07P2GAK.FR SUBROUTINE T07P2 C EDIT DATE 26JAN79 09:32 C SOURCE FILE LPASS2GAK.FS C AUTHOR GARY A. KUDIS C CLUSTER 5.07 C PASS 2 RECORD TYPE 7 'ENTRY POINT DEFINITION' PROCESS 'INCLUDE' DARRAYGAK.IN, 'INCLUDE' NTABLEGAK.IN, 'INCLUDE' IODEFNGAK.IN, INTEGER SEARCH, DUMMY C T07P2 : X WRITE (DBCHAN, 1) X1 FORMAT (' ENTER T07P2') CALL GNAME(5) 'IF' (NSIZE.GT.0) NLX = SEARCH (DUMMY) 'IF' ((NLX.NE.0).AND.(NFLAGS(NLX).NE.0)) DICT (ID) = NLX 'ENDIF' 'ENDIF' X WRITE (DBCHAN, 2) X2 FORMAT (' EXIT T07P2') RETURN END 'OUTFILE' T08P2GAK.FR SUBROUTINE T08P2 C EDIT DATE 26JAN79 09:32 C SOURCE FILE LPASS2GAK.FS C AUTHOR GARY A. KUDIS C CLUSTER 5.08 C PASS 2 RECORD TYPE 8 'OVERLAY ID' PROCESS 'INCLUDE' DARRAYGAK.IN, 'INCLUDE' NTABLEGAK.IN, 'INCLUDE' IODEFNGAK.IN, INTEGER SEARCH, DUMMY C T08P2 : X WRITE (DBCHAN, 1) X1 FORMAT (' ENTER T08P2') CALL GNAME(5) 'IF' (NSIZE.GT.0) NLX = SEARCH (DUMMY) 'IF' ((NLX.NE.0).AND.(NFLAGS(NLX).NE.0)) DICT (ID) = NLX 'ENDIF' 'ENDIF' X WRITE (DBCHAN, 2) X2 FORMAT (' EXIT T08P2') RETURN END 'OUTFILE' T09P2GAK.FR SUBROUTINE T09P2 C EDIT DATE 26JAN79 09:32 C SOURCE FILE LPASS2GAK.FS C AUTHOR GARY A. KUDIS C CLUSTER 5.09 C PASS 2 RECORD TYPE 9 'EXTERNAL NAME' PROCESS 'INCLUDE' DARRAYGAK.IN, 'INCLUDE' NTABLEGAK.IN, 'INCLUDE' IODEFNGAK.IN, INTEGER SEARCH, DUMMY C T09P2 : X WRITE (DBCHAN, 1) X1 FORMAT (' ENTER T09P2') CALL GNAME(3) 'IF' (NSIZE.GT.0) NLX = SEARCH (DUMMY) 'IF' ((NLX.NE.0).AND.(NFLAGS(NLX).NE.0)) DICT (ID) = NLX 'ENDIF' 'ENDIF' X WRITE (DBCHAN, 2) X2 FORMAT (' EXIT T09P2') RETURN END 'OUTFILE' T10P2GAK.FR SUBROUTINE T10P2 C EDIT DATE 26JAN79 09:32 C SOURCE FILE LPASS2GAK.FS C AUTHOR GARY A. KUDIS C CLUSTER 5.10 C PASS 2 RECORD TYPE 10 'ABSOLUTE DATA' PROCESS 'INCLUDE' LDATAXGAK.IN, 'INCLUDE' IODEFNGAK.IN, 'INCLUDE' RECORDGAK.IN, C T10P2 : X WRITE (DBCHAN, 1) X1 FORMAT (' ENTER T10P2') CALL PUNCH (RECORD(2), LOADAD, RSTYPE) LOADAD = LOADAD + RSTYPE X WRITE (DBCHAN, 2) X2 FORMAT (' EXIT T10P2') RETURN END 'OUTFILE' T11P2GAK.FR SUBROUTINE T11P2 C EDIT DATE 26JAN79 09:32 C SOURCE FILE LPASS2GAK.FS C AUTHOR GARY A. KUDIS C CLUSTER 5.11 C PASS 2 RECORD TYPE 11 'RELOCATABLE DATA (1 OR 2 BYTES)' PROCESS 'INCLUDE' DARRAYGAK.IN, 'INCLUDE' NTABLEGAK.IN, 'INCLUDE' RECORDGAK.IN, 'INCLUDE' LDATAXGAK.IN, 'INCLUDE' IODEFNGAK.IN, INTEGER ISWAP INTEGER OBDATA, OBSIZE, ISWX C T11P2 : X WRITE (DBCHAN, 1) X1 FORMAT (' ENTER T11P2') NLX = DICT (ID) 'IF' (NLX.LE.0) CALL ERROR(10) 'ELSE' OBDATA = NADDRS (NLX) + RECORD(3) OBSIZE = 2 'IF' ((RSTYPE.LT.0).OR.(RSTYPE.GT.3)) CALL ERROR(4) RETURN 'ENDIF' ISWX = RSTYPE + 1 GOTO (100,200,300,400) ISWX 100 GO TO 1000 200 OBDATA = ISWAP (OBDATA) GOTO 1000 300 OBDATA = ISWAP (OBDATA) OBSIZE = 1 GOTO 1000 400 OBSIZE = 1 1000 CALL PUNCH (OBDATA, LOADAD, OBSIZE) LOADAD = LOADAD + OBSIZE 'ENDIF' X WRITE (DBCHAN, 2) X2 FORMAT (' EXIT T11P2') RETURN END 'OUTFILE' T12P2GAK.FR SUBROUTINE T12P2 C EDIT DATE 26JAN79 09:32 C SOURCE FILE LPASS2GAK.FS C AUTHOR GARY A. KUDIS C CLUSTER 5.12 C PASS 2 RECORD TYPE 12 'RELOCATABLE DATA (2 OR 3 BYTES)' PROCESS 'INCLUDE' DARRAYGAK.IN, 'INCLUDE' NTABLEGAK.IN, 'INCLUDE' RECORDGAK.IN, 'INCLUDE' LDATAXGAK.IN, 'INCLUDE' IODEFNGAK.IN, INTEGER ISWAP INTEGER OBDATA(2), OBSIZE, ISWX C T12P2 : X WRITE (DBCHAN, 1) X1 FORMAT (' ENTER T12P2') NLX = DICT (ID) 'IF' (NLX.LE.0) CALL ERROR(10) 'ELSE' OBDATA(1) = IAND (RECORD(3), 255) OBDATA(2) = NADDRS(NLX) + RECORD(4) OBSIZE = 3 'IF' ((RSTYPE.LT.0) .OR. (RSTYPE.GT.3)) CALL ERROR(4) RETURN 'ENDIF' ISWX = RSTYPE + 1 GOTO (100,200,300,400) ISWX 100 GOTO 1000 200 OBDATA(2) = ISWAP (OBDATA(2)) GOTO 1000 300 OBSIZE = 2 GOTO 1000 400 OBDATA(2) = ISWAP (OBDATA(2)) OBSIZE = 2 1000 CALL PCHAR (OBDATA(1), 1, OBDATA(1)) CALL PCHAR (OBDATA(1), 2, ISHFT(OBDATA(2), -8)) CALL PCHAR (OBDATA(1), 3, IAND(OBDATA(2), 255)) CALL PUNCH (OBDATA, LOADAD, OBSIZE) LOADAD = LOADAD + OBSIZE 'ENDIF' X WRITE (DBCHAN, 2) X2 FORMAT (' EXIT T12P2') RETURN END 'OUTFILE' T13P2GAK.FR SUBROUTINE T13P2 C EDIT DATE 26JAN79 09:32 C SOURCE FILE LPASS2GAK.FS C AUTHOR GARY A. KUDIS C CLUSTER 5.13 C PASS 2 RECORD TYPE 13 'COMPUTATION' PROCESS 'INCLUDE' DARRAYGAK.IN, 'INCLUDE' NTABLEGAK.IN, 'INCLUDE' RECORDGAK.IN, 'INCLUDE' LDATAXGAK.IN, 'INCLUDE' IODEFNGAK.IN, INTEGER OBDATA, OBSIZE, ISWX, NLX2 INTEGER ISWAP C T13P2 : X WRITE (DBCHAN, 1) X1 FORMAT (' ENTER T13P2') NLX = DICT (ID) NLX2 = RECORD (3) NLX2 = DICT (NLX2) 'IF' ((NLX.LE.0).OR.(NLX2.LE.0)) CALL ERROR(10) 'ELSE' OBDATA = NADDRS(NLX) - NADDRS(NLX2) + RECORD(4) OBSIZE = 2 'IF' ((RSTYPE.LT.0).OR.(RSTYPE.GT.3)) CALL ERROR(4) RETURN 'ENDIF' ISWX = RSTYPE + 1 GOTO (100,200,300,400) ISWX 100 GOTO 1000 200 OBDATA = ISWAP (OBDATA) GOTO 1000 300 OBSIZE = 1 GOTO 1000 400 OBDATA = ISWAP (OBDATA) OBSIZE = 1 1000 CALL PUNCH (OBDATA, LOADAD, OBSIZE) LOADAD = LOADAD + OBSIZE 'ENDIF' X WRITE (DBCHAN, 2) X2 FORMAT (' EXIT T13P2') RETURN END 'OUTFILE' T14P2GAK.FR SUBROUTINE T14P2 C EDIT DATE 26JAN79 09:32 C SOURCE FILE LPASS2GAK.FS C AUTHOR GARY A. KUDIS C CLUSTER 5.14 C PASS 2 RECORD TYPE 14 'SET LOCATION' PROCESS 'INCLUDE' DARRAYGAK.IN, 'INCLUDE' NTABLEGAK.IN, 'INCLUDE' LDATAXGAK.IN, 'INCLUDE' RECORDGAK.IN, 'INCLUDE' IODEFNGAK.IN, C T14P2 : X WRITE (DBCHAN, 1) X1 FORMAT (' ENTER T14P2') NLX = DICT (ID) 'IF' (NLX.LE.0) CALL ERROR(10) 'ELSE' CID = ID LOADAD = NADDRS(NLX) + RECORD(3) NPOSIT(NLX) = LOADAD 'ENDIF' X WRITE (DBCHAN, 2) X2 FORMAT (' EXIT T14P2') RETURN END 'OUTFILE' T15P2GAK.FR SUBROUTINE T15P2 C EDIT DATE 26JAN79 09:32 C SOURCE FILE LPASS2GAK.FS C AUTHOR GARY A. KUDIS C CLUSTER 5.15 C PASS 2 RECORD TYPE 15 'ADJUST LOCATION' PROCESS 'INCLUDE' LDATAXGAK.IN, 'INCLUDE' RECORDGAK.IN, 'INCLUDE' IODEFNGAK.IN, C T15P2 : X WRITE (DBCHAN, 1) X1 FORMAT (' ENTER T15P2') LOADAD = LOADAD + RECORD(2) X WRITE (DBCHAN, 2) X2 FORMAT (' EXIT T15P2') RETURN END 'OUTFILE' T16P2GAK.FR SUBROUTINE T16P2 C EDIT DATE 26JAN79 09:32 C SOURCE FILE LPASS2GAK.FS C AUTHOR GARY A. KUDIS C CLUSTER 5.16 C PASS 2 RECORD TYPE 16 'CHANGE GROUP' PROCESS 'INCLUDE' DARRAYGAK.IN, 'INCLUDE' NTABLEGAK.IN, 'INCLUDE' LDATAXGAK.IN, 'INCLUDE' IODEFNGAK.IN, INTEGER I C T16P2 : X WRITE (DBCHAN, 1) X1 FORMAT (' ENTER T16P2') NLX = DICT (ID) 'IF' (NLX.LE.0) CALL ERROR(10) 'ELSE' C SAVE LOAD ADDRESS WITHIN CURRENT GROUP I = DICT (CID) NPOSIT(I) = LOADAD C ESTABLISH NEW LOAD ADDRESS AND GROUP CID = ID LOADAD = NPOSIT(NLX) 'ENDIF' X WRITE (DBCHAN, 2) X2 FORMAT (' EXIT T16P2') RETURN END 'OUTFILE' T17P2GAK.FR SUBROUTINE T17P2 C EDIT DATE 26JAN79 09:32 C SOURCE FILE LPASS2GAK.FS C AUTHOR GARY A. KUDIS C CLUSTER 5.17 C PASS 2 RECORD TYPE 17 'ESTABLISH RUN ADDRESS' PROCESS 'INCLUDE' DARRAYGAK.IN, 'INCLUDE' LDATAXGAK.IN, 'INCLUDE' NTABLEGAK.IN, 'INCLUDE' RECORDGAK.IN, 'INCLUDE' IODEFNGAK.IN, C T17P2 : X WRITE (DBCHAN, 1) X1 FORMAT (' ENTER T17P2') NLX = DICT(ID) 'IF' (NLX.LE.0) CALL ERROR(10) 'ELSE' IF (SFLAG) CALL ERROR(15) SFLAG = .TRUE. START = NADDRS(NLX) + RECORD(3) 'ENDIF' X WRITE (DBCHAN, 2) X2 FORMAT (' EXIT T17P2') RETURN END 'OUTFILE' T18P2GAK.FR SUBROUTINE T18P2 C EDIT DATE 26JAN79 09:32 C SOURCE FILE LPASS2GAK.FS C AUTHOR GARY A. KUDIS C CLUSTER 5.18 C PASS 2 RECORD TYPE 18 'LOCAL NAME DEFINITION' PROCESS 'INCLUDE' IODEFNGAK.IN, C T18P2 : X WRITE (DBCHAN, 1) X1 FORMAT (' ENTER T18P2') X WRITE (DBCHAN, 1) X1 FORMAT (' EXIT T18P2') RETURN END 'OUTFILE' T19P2GAK.FR SUBROUTINE T19P2 C EDIT DATE 26JAN79 09:32 C SOURCE FILE LPASS2GAK.FS C AUTHOR GARY A. KUDIS C CLUSTER 5.19 C PASS 2 RECORD TYPE 19 'LIBRARY START' PROCESS 'INCLUDE' LDATAXGAK.IN, 'INCLUDE' IODEFNGAK.IN, C T19P2 : X WRITE (DBCHAN, 1) X1 FORMAT (' ENTER T19P2') LBMODE = .TRUE. X WRITE (DBCHAN, 2) X2 FORMAT (' EXIT T19P2') RETURN END 'OUTFILE' T20P2GAK.FR SUBROUTINE T20P2 C EDIT DATE 26JAN79 09:32 C SOURCE FILE LPASS2GAK.FS C AUTHOR GARY A. KUDIS C CLUSTER 5.20 C PASS 2 RECORD TYPE 20 'LIBRARY END' PROCESS 'INCLUDE' LDATAXGAK.IN, 'INCLUDE' IODEFNGAK.IN, C T20P2 : X WRITE (DBCHAN, 1) X1 FORMAT (' ENTER T20P2') LBMODE = .FALSE. X WRITE (DBCHAN, 2) X2 FORMAT (' EXIT T20P2') RETURN END 'OUTFILE' I2PASSGAK.FR SUBROUTINE I2PASS C EDIT DATE 26JAN79 09:32 C SOURCE FILE LPASS2GAK.FS C AUTHOR GARY A. KUDIS C INITIALIZE PASS 2 'INCLUDE' IODEFNGAK.IN, 'INCLUDE' IOFILEGAK.IN, 'INCLUDE' NTABLEGAK.IN, C I2PASS : X WRITE (DBCHAN, 1) X1 FORMAT (' ENTER I2PASS') CALL REW (CMCHAN, CMFILE) NTITLE = 0 X WRITE (DBCHAN, 2) X2 FORMAT (' EXIT I2PASS') RETURN END