CHKPT 
          IDENT  CHKPT,FETS 
          ABS 
          SST 
          SYSCOM B1 
          ENTRY  CKP
          ENTRY  SFP
          ENTRY  DMP= 
          ENTRY  RFL= 
          ENTRY  SSJ= 
          TITLE  CHKPT - CENTRAL MEMORY CHECKPOINT. 
*COMMENT  CHKPT - CENTRAL MEMORY CHECKPOINT.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4
***       CHKPT - CENTRAL MEMORY CHECKPOINT.
*         V.A. WALSH.  72/05/05.
*         K.R. COMBS.  73/06/01.
*         M.S. CARTER. 76/10/08.
          SPACE  4
***       *CHKPT*  PERFORMS THE CENTRAL MEMORY PORTION OF CHECKPOINT. 
*         THE CONTROL POINT AREA AND THE USER FIELD LENGTH ARE
*         EXPECTED TO BE WRITTEN ON FILE DM* BEFORE *CHKPT* EXECUTION.
*         *CHKPT* CREATES A CHECKPOINT FILE CONTAINING INFORMATION
*         ABOUT THE USER FILE AS WELL AS A COPY OF THE DM* FILE.
* 
* 
*         OPERATOR COMMAND- 
* 
*         CKP.               CHECKPOINT ALL LOCAL FILES.
* 
*         CONTROL STATEMENT CALL- 
* 
*         CKP.               CHECKPOINT ALL LOCAL FILES.
* 
*         CKP(LFN1,LFN2,...,LFNN)   CHECKPOINT ONLY THOSE FILES 
*                            SPECIFIED BY LFNI. 
*         CONTINUATION CARDS WILL NOT BE PROCESSED. 
* 
*         MACRO CALL- 
* 
*         CHECKPT ADDR,SP 
*                ADDR - ADDRESS OF PARAMETER LIST.
*                SP   - SELECTIVE CHECKPOINT FLAG.
*                     IF NULL - CHECKPOINT LOCAL FILES (DEFAULT). 
*                     IF NOT NULL - CHECKPOINT SPECIFIED FILES. 
* 
*         PARAMETER LIST FORMAT.
* 
*T,ADDR   12/CN,30/0,6/N,11/0,1/C 
*T,ADDR+1 42/LFN1,6/F,12/0
*T,ADDR+2 42/LFN2,6/F,12/0
*                .
*                .
*                .
*T,ADDR+N 42/LFNN,6/F,12/0
* 
*         CN = CURRENT CHECKPOINT NUMBER. 
*         N = NUMBER OF ENTRIES IN TABLE. 
*         C = COMPLETION BIT SET BY CHKPT.
*         LFNI = LOCAL FILE NAME. 
*         F = COPY TYPE.
*                0 - BOI TO PRESENT POSITION. 
*                1 - PRESENT POSITION TO EOI. 
*                2 - ENTIRE FILE. 
*                3 - LAST OPERATION ON FILE WILL
*                    DETERMINE THE COPY TYPE. 
*                4 - NO COPY BUT INFORMATION TABLE
*                    ON FILE IS COPIED. 
          SPACE  4
***       DAYFILE MESSAGES -
* 
*         * CHECKPOINT FILE ERROR.* = CHECKPOINT FILE(S) NOT
*         SPECIFIED CORRECTLY.
* 
*         * SECURE FILES - CHECKPOINT ABORT.* = FILE SECURITY SPECIFIED 
*         ON FILE(S) BEING CHECKPOINTED, ABORT CHECKPOINT.
* 
*         * CHECKPOINT NNNN COMPLETE.* = CHECKPOINT NNNN HAS COMPLETED. 
* 
*         * CHECKPOINT NNNN COMPLETED TO XXXXXXX.* = CHECKPOINT NNNN
*         HAS BEEN COMPLETED TO FILE XXXXXXX. 
*         (ISSUED ON ALTERNATE CB FILES ONLY) 
* 
*         * CHKPT UNABLE TO READ TAPE.* = ERRORS HAVE OCCURRED
*         WHILE READING A TAPE FILE WHICH CHKPT CANNOT PROCESS. 
* 
*         * CKP REQUEST.* = A CHECKPOINT HAS BEEN INITIATED.
* 
*         * POSITION ERROR ON--XXXXXXX.* = AN ADDRESS ERROR PREVENTED 
*         FILE XXXXXXX FROM BEING REPOSITIONED AFTER BEING CHECKPOINTED.
* 
*         * ERROR - FILE(S) NOT PROCESSED.* = FILE(S) HAD ERROR IN
*         PRESET, THEREFORE NOT CHECKPOINTED. 
* 
*         * CONTENTS NOT CHECKPOINTED FOR FILE XXXXXXX.* = FOR FILE 
*         XXXXXXX THE USER SELECTED OTHER THAN OPTION 4 
*         (INFORMATION TABLE ONLY).  THE USER REQUEST HAS BEEN
*         IGNORED AND ONLY THE INFORMATION TABLE WAS COPIED TO THE
*         CHECKPOINT FILE.
* 
*         * CHECKPOINT FILE ACCESS LEVEL ERROR.* = IN A SECURE
*         SYSTEM, THE CHECKPOINT FILE ACCESS LEVEL IS NOT THE 
*         SAME AS THE JOB ACCESS LEVEL LIMIT.  THIS MUST BE THE 
*         CASE TO INSURE THAT THE CHECKPOINT FILE IS SECURE 
*         ENOUGH TO CONTAIN ALL LOCAL FILES.  THE ACCESS LEVEL
*         OF THE CHECKPOINT FILE IS NOT CHANGED TO THIS LEVEL 
*         SINCE THIS IS NOT POSSIBLE FOR MAGNETIC TAPE FILES OR 
*         DIRECT ACCESS PERMANENT FILES, AND THESE ARE THE USUAL
*         FILE TYPES USED FOR CHECKPOINT FILES.  WHEN THE 
*         CHECKPOINT FILE IS ASSIGNED IT SHOULD BE ASSIGNED AT
*         THE JOB ACCESS LEVEL LIMIT. 
          TITLE  CHKPT - DEFINITIONS. 
          SPACE  4
*         ASSEMBLY CONSTANTS. 
  
 BUFL     EQU    1000B
 IBUFL    EQU    2001B
 OBUFL    EQU    2001B
 SBUFL    EQU    402B 
 TBUFL    EQU    1001B
          SPACE  4
**        READC - REDEFINE MACRO TO READ CONTROL WORDS. 
* 
*         FORMAT READC  F,S,N 
* 
*                WHERE F = ADDRESS OF FET 
*                      S = ADDRESS OF BUFFER
*                      N = LENGTH OF BUFFER IN WORDS
* 
*         USES   X - 2. 
*                B - 6, 7.
* 
*         CALLS  RDA. 
  
  
          PURGMAC READC 
  
 READC    MACRO  F,S,N
          MACREF  READC 
          R= B6,S 
          R= B7,N 
          R= X2,F 
          RJ RDA
          ENDM
          TITLE  STORAGE ASSIGNMENT.
          ORG    101B 
 FETS     BSS    0
          BSS    2           STORAGE FOR READC CONTROLS 
 I        BSS    0
 INPUT    FILEB  IBUF,IBUFL,EPR,(FET=14)
 O        BSS    0
 CCCCCCC  FILEB  OBUF,OBUFL,(FET=10)
 P        BSS    0
 CCCCCCM  RFILEB 2,1,(FET=8)
          SPACE  4
*         PARAMETER FLAG LOCATIONS. 
  
 CKNO     CON    1           CHECKPOINT NUMBER
 MDFL     CON    CKST        MODE FLAG
 TICF     CON    0           TERMINAL INTERRUPT CONTROL FLAG WORD 
 SPFL     BSSZ   1           SELECTIVE CHECKPOINT FLAG
 PTR      BSSZ   1           POINTER FOR BLOCKED COPY(PTS TO BLOCK WORD)
 HDRB     BSSZ   1           HEADER STORAGE WORD
 CSFP     BSSZ   1           CONTROL STATEMENT FILE POSITION
 PAR      BSS    101B        FILE LIST AREA 
          SPACE  4,10 
*         COMMON DECKS. 
  
  
*CALL     COMCMAC 
*CALL     COMSLFD 
*CALL     COMSSFM 
*CALL     COMSSSJ 
          SPACE 4,10
*         SPECIAL ENTRY POINTS. 
  
  
 DMP=     EQU    0           DUMP ENTIRE FIELD LENGTH 
 SFP      EQU    0           ENTRY POINT FOR SFP CALL 
 SSJ=     BSSZ   SSJL        SPECIAL SYSTEM JOB AREA
          TITLE  MAIN PROGRAM.
**        CKP - MAIN LOOP.
* 
*         ENTRY - DM* FILE CONTAINS FIELD LENGTH AND CONTROL
*         POINT DUMP. 
  
  
 CKP      RJ     PRS         PRESET PROGRAM 
          RECALL O
          RJ     HDR         WRITE HEADER ON CHKPT FILE 
          RJ     WRT         WRITE FILE TABLE TO CHKPT FILE 
          RJ     CPF         COPY LOCAL FILES TO CHKPT FILE 
  
*         COPY DM* FILE TO CHKPT FILE.
  
          SA1    =C/DM*/
          SX3    3
          BX6    X1+X3       SET FILE NAME TO DM* 
          MX5    0
          SA6    I
          REWIND I
          SX6    40000B      SET DATA TYPE
          SB5    B1 
          RJ     BLO         COPY DM* FILE TO CHKPT FILE
  
*         PROCESS END OF CHECKPOINT.
  
          SX6    50000B      SET END OF CKP 
          SA6    A6+
          WRITEW O,BUF,A6-BUF+1 
          WRITER O,R
          SA1    CKNO        GET NUMBER OF THIS CHECKPOINT
          RJ     CDD         CONVERT TO DISPLAY CODE
          SA2    CKPA+1 
          MX0    -24
          BX7    -X0*X6 
          SA1    HDRB        CONTROL WORD FOR LAST WRITE TO CKP FILE
          LX7    24 
          MX6    1
          BX7    X7+X2       ADD CHECKPOINT NUMBER TO DAYFILE MESSAGE 
          SA7    A2+
          BX6    X1+X6
          WRITEO O
          WRITER O,R
          BKSP   O           BACKSPACE TO BE READY FOR NEXT CHKPT 
          SA1    SPPR+1      SET COMPLETION BIT IN PARAMETER TABLE
          MX0    12 
          SA2    CKNO        GET NUMBER OF THIS CHECKPOINT
          LX2    48 
          BX6    -X0*X1      MASK NEW NUMBER IN RESPONSE
          SX7    B1 
          BX6    X6+X7       ADD COMPLETION BIT 
          BX6    X6+X2       ADD NEW CHECKPOINT NUMBER
          SA6    A1          RESTORE PARAMETER WORD 
          SX6    3
          SA1    =C*CCCCCCO* RETURN CONTROL STATEMENT FILE
          BX6    X1+X6
          SA6    I
          RETURN A6 
          MESSAGE CKPA       CHECKPOINT COMPLETE MESSAGE
          ENDRUN
  
 CKPA     DATA   10H CHECKPOIN
          VFD    12/2HT ,24/0,24/4H COM 
          DATA   6LPLETE. 
 CKPB     DATA   10HPLETED TO   SCRATCH WORD-USED IF ALTERNATE CB FILES 
          TITLE  SUBROUTINES
 BLO      SPACE  4
**        BLO - COPY FILE TO CHKPT FILE IN BLOCKED MODE.
* 
*         ENTRY  (X6) = DATA TYPE.
*                (X5) = -1 IF COPY TO POSITION. 
*                (B5) = 0 IF EMPTY FILE.
* 
*         EXIT   FILE IN FET I COPIED TO FILE IN FET O
* 
*         CALLS  NONE.
* 
*         USES   A - 1, 2, 3, 4, 6, 7.
*                B - 2, 5, 6. 
*                X - 1, 2, 3, 4, 6, 7.
* 
*         MACROS  READ, READW, RECALL, WRITEW.
  
  
 BLO      SUBR               ENTRY/EXIT 
          SA6    REC         STORE DATA TYPE
          ZR     B5,BLO6     IF CONTROL WORD NEEDED FOR EMPTY FILE
          SX7    BLO1        SET ERROR PROCESSING RETURN ADDRESS
          SA7    ERPA 
          PL     X5,BLO1     IF NOT COPY TO POSITION
          SA2    I+1         SET RANDOM FILE BIT
          MX1    1
          LX1    60-12
          BX6    X1+X2
          SA6    A2 
          BX6    X6-X6
          SA6    I+6         CLEAR RANDOM ADDRESS RETURN
 BLO1     READ   I
          PL     X5,BLO2     IF NOT COPY TO POSITION
          SA1    I+6
          AX1    30 
          SA2    I+9
          AX2    12 
          IX3    X2-X1
          MX1    -24
          BX3    -X1*X3 
          SB5    B0 
          PL     X3,BLO2     IF NOT PAST POSITION 
          EQ     BLO6 
  
 BLO2     SA1    PTR         RETRIEVE BLOCK WORD
          SA2    X1 
          MX3    -9 
          BX3    -X3*X2 
          SA4    REC         SET DATA TYPE
          BX6    X3+X4
          SA6    X1          UPDATE BLOCK WORD
          READW  I,(X1+B1),X3 READ DATA IN AFTER CONTROL WORD 
          NZ     X1,BLO3     IF EOR OR EOF
          RECALL I
          WRITEW O,BUF,BUFL 
          SX6    777B 
          SA6    BUF         RESET BLOCK WORD 
          SX7    A6 
          SA7    PTR         RESET LOCATION POINTER 
          EQ     BLO2        LOOP 
  
*         IF END OF RECORD. 
  
 BLO3     SA2    PTR         UPDATE POINTERS
          SB5    X2          CONTROL WORD ADDRESS 
          SB5    B6-B5       NEW ADDRESS - OLD ONE
          SA4    REC
          SX4    X4+1000B    SET EOR FLAG 
          SB5    B5-B1       NUMBER OF WORDS READ 
          SX6    X4+B5
          SB2    BUF+777B    END OF BUFFER ADDRESS
          SA6    X2          UPDATE BLOCK WORD
          SX6    B2-B6       NUMBER WORDS LEFT IN BUF 
          NG     X1,BLO4     IF EOF OR EOI
          SA6    B6 
          SX7    A6          CURRENT POSITION 
          SA7    PTR         UPDATE LOCATION POINTER
          NZ     X6,BLO1     IF NOT END OF BUFFER 
          WRITEW O,BUF,BUFL-1 
          SX6    777B 
          SA6    BUF         RESET BLOCK WORD 
          EQ     BLO5        LOOP 
  
*         IF END OF FILE. 
  
 BLO4     SA1    PTR
          SA2    X1          RETRIEVE BLOCK WORD
          SX6    X2+1000B    SET EOF FLAG 
          SA4    I
          LX4    59-9 
          SA6    X1 
          NG     X4,BLO6     IF EOI 
          SX6    B2-B6
          SA6    B6          SET NEW BLOCK WORD 
          NZ     X6,BLO5     IF NOT AT END
          WRITEW O,BUF,BUFL-1 
          SX6    777B 
          SA6    BUF         RESET BLOCK WORD 
 BLO5     SX7    A6 
          SA7    PTR         RESET LOCATION POINTER 
          EQ     BLO1        LOOP 
  
*         IF EOI. 
  
 BLO6     SA1    PTR
          SA3    REC         GET DATA TYPE
          SX6    X3+3000B    SET EOI FLAG 
          SX6    X6+B5       SET LENGTH OF BLOCK
          SA6    X1 
          SB2    A6+B5       ADDRESS OF LAST WORD READ
          SB6    BUF+777B 
          SB6    B6-B2       NUMBER WORDS LEFT IN BUF 
          SX6    B6-B1
          SA6    B2+B1       SET NEW BLOCK WORD 
          NZ     X6,BLO7     IF NOT AT END
          WRITEW O,BUF,BUFL-1 
          SX6    777B 
          SA6    BUF
 BLO7     SX7    A6 
          SA7    PTR         RESET OR UPDATE LOCATION POINTER 
  
          SA1    I+1
          MX2    1
          LX2    60-12
          BX7    -X2*X1 
          SA7    A1          CLEAR RANDOM PROCESSING BIT
          EQ     BLOX        RETURN 
 ERP$     SPACE  4,10 
**        ERP$ - TAPE ERROR PROCESSING ROUTINE. 
* 
*         ENTRY  RETURN ADDRESS SET IN (ERPA).
* 
*         EXIT   TO ADDRESS IN (ERPA) IF PARITY OR WRONG PARITY ERROR 
*                OTHERWISE ABORT.  ALSO ABORT IF SECOND OCCURRANCE
*                OF WRONG PARITY ERROR. 
* 
*         USES   A - 1, 2, 3, 6, 7. 
*                B - 3. 
*                X - 1, 2, 3, 6, 7. 
* 
*         MACROS  ABORT, MESSAGE, REWIND. 
  
  
 ERP$     SX2    37000B 
          SA1    I
          BX3    X2*X1
          AX3    9
          SX2    X3-2 
          ZR     X2,ERP2     IF PARITY ERROR
          SX3    X2-2 
          ZR     X3,ERP3     IF WRONG PARITY
 ERP1     MESSAGE (=C* CHKPT UNABLE TO READ TAPE.*) 
          ABORT 
  
*         PARITY ERROR PROCESSING.
  
 ERP2     SX2    740777B     CLEAR ERROR RETURN 
          SA3    ERPA 
          BX6    X2*X1
          SA6    A1 
          SB3    X3 
          JP     B3          RETURN TO CALLER 
  
*         WRONG PARITY PROCESSING.
  
 ERP3     SX3    100000B
          SA2    REC         SET PARITY BIT FOR CONTROL WORD
          BX6    X2+X3
          SA3    ERPA        CHECK IF FIRST ERROR 
          SA6    A2 
          NG     X3,ERP1     IF SECOND TRY
          MX2    1           FLAG SECOND TRY
          BX7    X2+X3
          SX2    2           TOGGLE PARITY BIT
          SA7    A3 
          BX1    X2-X1
          SX2    740777B     CLEAR ERROR CODE RETURNED
          BX6    X2*X1
          SA6    A1 
          SB3    X3+
          REWIND A1,R 
          JP     B3          RETURN TO CALLER 
  
 ERPA     BSS    1           RETURN ADDRESS FOR ERROR PROCESSING
  
 REC      BSSZ   1
 CPF      SPACE  4
**        CPF - COPY FILES. 
* 
*         ENTRY  NONE.
* 
*         EXIT   FILES IN FILE TABLE COPIED TO CHECKPOINT FILE
*                AND REPOSITIONED.
* 
*         CALLS  BLO, POF.
* 
*         USES   A - 0, 1, 2, 3, 6. 
*                B - 5. 
*                X - 0, 1, 2, 3, 4, 5, 6. 
* 
*         MACROS  REWIND. 
  
  
 CPF      SUBR               ENTRY/EXIT 
          SA0    SBUF-2      SET TABLE ENTRY
 CPF1     MX3    -12
          SB5    B0          PRESET EMPTY FILE FLAG 
          SA0    A0+2 
          SA1    A0          GET TABLE ENTRY
          SA2    A1+B1
          ZR     X1,CPFX     RETURN IF END OF TABLE 
          SX5    B1+B1       PRESET COPY TYPE 
          MX0    42 
          BX7    X1 
          BX6    X6-X6
          SA6    I+7
          SA7    A6+B1       SAVE FNT 
          BX6    X2 
          SA6    A7+B1       SAVE FST 
          MX4    -24
          LX4    12 
          BX4    -X4*X2      ISOLATE RANDOM ADDRESS 
          BX3    X4 
          ZR     X4,CPF2     IF EMPTY FILE
          SA4    =C*CCCCCCO*
          BX4    X4-X1
          BX6    X0*X4
          SX3    3           SET DEFAULT OF BINARY
          ZR     X6,CPF3     IF CONTROL STATEMENT FILE
 CPF2     MX5    -3 
          BX4    X2 
          AX4    9
          BX5    -X5*X4 
          SX4    X5-4 
          ZR     X4,CPF1     IF NO COPY 
          ZR     X3,CPF4     IF EMPTY BUT COPY TYPE ALREADY SPECIFIED 
 CPF3     BX4    X0*X1       SET NAME AND STATUS IF FET 
          BX6    X4+X3
          SA6    I
          SX5    X5-1 
          SB5    B1          CLEAR EMPTY FILE FLAG
          ZR     X5,CPF4     IF NO REWIND REQUIRED
          REWIND I,R
 CPF4     SX6    30000B      SET DATA TYPE
          RJ     BLO         COPY FILE IN BLOCKED MODE
          REWIND I,R
          RJ     POF         POSITION FILE
          EQ     CPF1        LOOP 
 HDR      SPACE  4
**        HDR - WRITE HEADER. 
* 
*         ENTRY  NONE.
* 
*         EXIT   HEADER WRITTEN ON CHECKPOINT FILE. 
* 
*         CALLS  NONE.
* 
*         USES   A - 1, 2, 6. 
*                X - 1, 2, 6, 7.
*                B - NONE.
* 
*         MACROS  GETJN, PDATE, WRITEW. 
  
  
 HDR      SUBR               ENTRY/EXIT 
          PDATE  I+7         GET DATE AND TIME
          SX6    10002B      SET CODE WORD
          SA6    BUF
          SA2    CKNO        GET CHECKPOINT NUMBER
          SA1    MDFL        GET MODE FLAG
          LX1    12 
          BX6    X1+X2
          SA2    I+7
          LX2    18 
          BX6    X2+X6
          SA6    A6+B1
          SA6    HDRB        STORE HEADER 
          GETJN  BUF+2       GET JSN
          WRITEW O,BUF,3
          SX6    777B 
          SA6    BUF
          SX6    A6 
          SA6    PTR
          EQ     HDRX        RETURN 
 POF      SPACE  4,15 
**        POF - POSITION FILE.
* 
*         ENTRY  MASS STORAGE FILE REWOUND. 
* 
*         EXIT   MASS STORAGE FILE REPOSITIONED TO RANDOM INDEX 
*                VALUE AT TIME OF CHECKPOINT REQUEST UNLESS AN ERROR
*                OCCURRED.
* 
*         USES   X - 0, 1, 4, 6, 7. 
*                A - 1, 6.
*                B - 3. 
* 
*         MACROS EREXIT, MESSAGE, READ. 
  
  
 POF      SUBR               ENTRY/EXIT 
          SA1    I+9         SET RANDOM ADDRESS 
          AX1    12 
          MX0    -24
          BX6    -X0*X1 
          ZR     X6,POFX     IF NO RANDOM ADDRESS 
          SA6    P+6
          SA1    I
          BX6    X1 
          SA6    P           SET FILE NAME
          EREXIT POF1 
          READ   P,R
          EREXIT 0
          EQ     POFX        RETURN 
  
 POF1     MX0    42 
          SA1    I
          BX1    X0*X1       FILE NAME
          SX4    1R.
          RJ     SFN         GENERATE BIT MASK FOR FILE NAME
          CX7    X7          NUMBER OF BITS IN FILE NAME
          BX7    -X7
          SB3    X7+54       SHIFT COUNT TO POSITION PERIOD 
          LX4    X4,B3
          BX6    X1+X4       INSERT FILE NAME INTO DAYFILE MESSAGE
          SA6    POFA+2 
          MESSAGE POFA       * POSITION ERROR ON--XXXXXXX.* 
          EREXIT 0
          EQ     POFX        RETURN 
  
 POFA     DATA   C* POSITION ERROR ON--XXXXXXX.*
 RDA      SPACE  4
**        RDA - READ DATA.
*         PROCESSES CALLS TO READ WORDS (RDW=). 
*         DEBLOCKS DATA IF CONTROL WORD READS.
* 
*         ENTRY  B6 = BUFFER ADDRESS. 
*                B7 = NUMBER OF WORDS NEEDED. 
*                X0 = BLOCK COUNT.
*                X2 = FET ADDRESS.
* 
*         EXIT   FET-2 CONTAINS NUMBER OF WORDS REMAINING IF BUFFER 
*                FILLED.
*                XO = BLOCK COUNT (UPDATED).
*                X1 = -2 IF EOI.
* 
*         CALLS  RDW=.
* 
*         USES   A - 1, 3, 6, 7.
*                B - 5, 6, 7. 
*                X - 0, 1, 4, 6, 7. 
  
  
 RDA5     SX6    B5-B7       UPDATE WORDS REMAINING 
          SA6    A1 
  
          RJ     RDW=        READ WORDS 
 RDA      PS                 ENTRY/EXIT 
 RDA1     SA1    X2-2        GET NUMBER OF WORDS BEFORE CONTROL WORD
          SB5    X1+
          PL     X1,RDA2     IF NOT FIRST READ
          SX7    B7+         SET WORDS NEEDED 
          SA7    RDAA 
          JP     RDA4 
  
 RDA2     GE     B5,B7,RDA5  IF ENOUGH DATA TO FILL BUFFER
          SA3    X2-1        CHECK EOR FLAG 
          PL     X3,RDA3     IF NOT EOR ON FILE 
          MX6    1           SET NEW READ FLAG
          SB7    B5+B1       SET WORDS TO READ
          SA6    A3 
          SA6    A1 
          RJ     RDW=        READ WORDS 
          SX1    B6-B1       SET EOR INDICATION 
          SB6    B6-B1       BACK UP LWA TO ALLOW FOR CONTROL WORD
          JP     RDA         RETURN 
  
 RDA3     SX6    B7-B5       SAVE ADDITIONAL WORDS NEEDED 
          SA6    RDAA 
          SB7    B5+B1       SET WORDS TO TRANSFER
          RJ     RDW=        READ WORDS 
          SB6    B6-B1       BACK UP OVER LAST CONTROL WORD 
 RDA4     SB7    B1          READ CONTROL WORD
          RJ     RDW= 
          NG     X1,RDA      IF EOF/EOI 
          SB6    B6-B1       BACK UP WORKING BUFFER 
          SA1    B6          CONTROL WORD 
          SX7    5
          SX4    X1+4        ROUND UP 
          AX1    36          EXTRACT BLOCK SIZE 
          SX3    X1 
          IX7    X4/X7       WORDS IN BLOCK 
          IX6    X7-X3       SAVE EOR FLAG
          SA7    X2-2        STORE WORD COUNT 
          SA6    X2-1        EOR FLAG 
          SA1    RDAA        RESET WORDS NEEDED 
          SB7    X1 
          SX0    X0+B1       INCREMENT BLOCK COUNT
          JP     RDA1        LOOP 
  
 RDAA     CON    0
 WRT      SPACE  4
**        WRT - WRITE TABLE.
* 
*         ENTRY  NONE.
* 
*         EXIT   FILE TABLE WRITTEN ON CHECKPOINT FILE. 
* 
*         USES   X - ALL. 
*                A - ALL. 
*                B - 2, 5.
* 
*         MACROS ABORT, MESSAGE, MOVE, WRITEO, WRITEW.
  
  
 WRT      SUBR               ENTRY/EXIT 
          MX0    42 
          SX6    20000B      SET DATA TYPE
          SA6    REC
          SA5    BUF         SET BUFFER ADDRESS 
          SB2    B1+B1
  
*         SEARCH FILE LIST. 
  
          SA0    SBUF-1      SET FNT TABLE ADDRESS
 WRT1     SA0    A0+B2
          SA1    A0 
          ZR     X1,WRT15    IF END OF FNT TABLE
          MX6    -2          SET FILE TYPE INDICATOR TO ZERO IF TAPE
          BX3    X1 
          AX3    13 
          BX3    -X6*X3 
          SB3    X3-1 
          SA3    =C*CCCCCCO*
          BX2    X1-X3
          BX2    X0*X2
          NZ     X2,WRT1.1   IF NOT CONTROL STATEMENT FILE
          SA2    CSFP        GET CONTROL STATEMENT FILE POSITION
          MX6    -6          SAVE WORD COUNT
          BX6    -X6*X2 
          BX6    X6+X3
          MX3    -24         SAVE PRU NUMBER
          LX3    6
          BX3    -X3*X2 
          LX3    6
          BX7    X3 
          SA6    A5          STORE ENTRY
          SA7    A6+B1
          SA5    A5+B2
          EQ     WRT1        LOOP FOR ALL FNT ENTRIES 
  
*         CHECK FOR CCL FILES.
  
 WRT1.1   SA3    WRTD        *ZZZZZC0*
          SA4    WRTE        *ZZZZZC2*
          BX7    X0*X1
          IX3    X7-X3
          NG     X3,WRT2     IF NOT CCL FILE
          IX4    X4-X7
          NG     X4,WRT2     IF NOT CCL FILE
          SX7    4
          EQ     B3,WRT7     IF TAPE
          R=     X7,2 
          EQ     WRT7        MAKE TABLE ENTRY 
  
 WRT2     SA3    PAR         SET FILE LIST ADDRESS
          MX6    -30
          BX3    -X6*X3 
          ZR     X3,WRT11    IF NO TABLE
          AX3    12          GET NUMBER OF FILES IN LIST
          SB5    X3 
 WRT3     SA3    A3+B1
          BX6    X1-X3
          BX6    X0*X6
          ZR     X6,WRT5     IF FOUND IN LIST 
          SB5    B5-B1
          NZ     B5,WRT3     LOOP ALL FILE ENTRIES
          SA3    SPFL        CHECK IF SELECTIVE CHECKPOINT
          ZR     X3,WRT11    IF ALL FILES REQUIRED
          SA3    WRTC        CHECK FOR SYSTEM FILES 
 WRT4     BX6    X1-X3
          BX2    X0*X6
          ZR     X2,WRT4.1   IF SYSTEM FILE 
          SA3    A3+B1
          NZ     X3,WRT4     LOOP 
          BX1    X0*X1
          SA3    WRTF        *ZZCCLAA*
          IX6    X3-X1
          ZR     X6,WRT4.1   IF SPECIAL CCL FILE
          PL     X6,WRT1     IF NOT SPECIAL CCL FILE
          SA3    A3+B1
          IX2    X3-X1
          NG     X2,WRT1     IF NOT SPECIAL CCL FILE
 WRT4.1   NZ     B3,WRT6     IF NOT TAPE
          SX7    4
          EQ     WRT7        STORE IN TABLE 
  
 WRT5     SX7    X3          GET COPY TYPE
          AX7    12 
          NZ     B3,WRT5.1   IF NOT TAPE
          SX2    X7-4 
          ZR     X2,WRT7     IF COPY TYPE IS CORRECT FOR TAPE 
          SA3    PGNR 
          NZ     X3,WRT4.1   IF CONTROL CARD CALL 
  
*         ISSUE WARNING MESSAGE AND FORCE SELECTION OF COPY TYPE 4
*         FOR MAGNETIC TAPE.
  
          SB6    A1+         SAVE FNT ADDRESS 
          SB2    1R+
          SB3    WRTB        ASSEMBLY AREA
          SB5    -WRTA
          BX1    X0*X1
          RJ     SNM         SET NAME IN MESSAGE
          MESSAGE  WRTB,3,R 
          SA1    B6          RESTORE FNT ENTRY
          R=     B2,2 
          SX7    4           FORCE COPY TYPE
          EQ     WRT7        CONTINUE WITH PROCESSING 
  
 WRT5.1   SX2    X7-3 
          NZ     X2,WRT7     IF NO STATUS CHECK NEEDED
  
*         CHECK STATUS FOR COPY TYPE. 
  
 WRT6     SA3    A1+B1       GET FST
          SX7    B0+         SET COPY TYPE
          LX3    59-0 
          NG     X3,WRT7     IF FILE WRITTEN
          MX4    -3 
          BX4    -X4*X3 
          SX3    X4-3 
          ZR     X3,WRT7     IF EOI 
          SX7    2           SET COPY TYPE
  
*         STORE IN TABLE. 
  
 WRT7     SA1    A1          GET FNT/FST
          SA3    A1+B1
          MX2    -4 
          BX6    X3 
          LX6    -4 
          BX4    -X2*X6 
          SX4    X4-4 
          NZ     X4,WRT8     IF NOT EXECUTE-ONLY
          SX7    4
 WRT8     MX2    -6 
          BX4    -X2*X1      EXTRACT FILE STATUS
          SX2    X4-UPST
          ZR     X2,WRT16    IF SECURE FILES
          MX4    -24
          LX4    12 
          BX4    -X4*X3 
          NZ     X4,WRT10    IF NOT EMPTY FILE
          SX7    4           SET NO COPY
 WRT10    BX6    X1 
          MX0    3
          LX7    9
          LX0    11-59
          BX4    -X0*X3 
          BX7    X7+X4
          SA6    A5 
          MX0    42 
          SA7    A6+B1
          SA5    A5+B2       UPDATE LOCATION POINTER
          EQ     WRT1        LOOP ALL FNT ENTRIES 
  
 WRT11    SA3    TSSF        CHECK FOR SPECIAL SYSTEM FILES 
          MX4    42 
 WRT12    BX6    X3-X1
          BX6    X4*X6
          ZR     X6,WRT1     IF SPECIAL SYSTEM FILE 
          SA3    A3+B1
          NZ     X3,WRT12    IF NOT END OF TABLE
  
*         CHECK FOR TAPE FILE.
  
          EQ     B3,WRT14    IF TAPE FILE 
  
*         CHECK FILE TYPE.
  
 WRT13    MX4    -12         CHECK FILE TYPE
          BX4    -X4*X1 
          AX4    6
          SX6    X4-LOFT
          ZR     X6,WRT6     IF LOCAL 
          SX6    X4-LIFT
          ZR     X6,WRT14    IF LIBRARY 
          SX6    X4-PTFT
          ZR     X6,WRT6     IF PRIMARY TERMINAL
          SX6    X4-QFFT
          ZR     X6,WRT6     IF QUEUE FILE
          SX6    X4-INFT
          ZR     X6,WRT6     IF INPUT FILE
          SX6    X4-PMFT
          NZ     X6,WRT1     LOOP IF NOT DIRECT ACCESS FILE 
          BX7    X1          CHECK WRITE LOCKOUT FLAG 
          LX7    59-12
          PL     X7,WRT6     IF NOT READ ONLY 
          SA3    A1+B1       CHECK FILE MODE
          MX4    -4 
          AX3    4
          BX4    -X4*X3 
          SX6    X4-10B 
          ZR     X6,WRT6     IF READ/UPDATE 
          SX6    X4-6 
          ZR     X6,WRT6     IF READ/APPEND 
          SX6    X4-5 
          ZR     X6,WRT6     IF READ/MODIFY 
 WRT14    SX7    4           SET COPY TYPE
          EQ     WRT7 
  
*         END TABLE.
  
 WRT15    BX6    X6-X6       SET ZERO WORD
          SA6    A5 
  
          SA4    REC
          SX5    A6-BUF+1 
          BX6    X4+X5
          WRITEO O           WRITE CODE WORD
          WRITEW O,BUF,X5    WRITE TABLE
          MOVE   X5,BUF,SBUF
          SX6    777B        RESET POINTERS 
          SA6    BUF
          SX7    A6 
          SA7    PTR
          EQ     WRTX        RETURN 
  
 WRT16    MESSAGE (=C* SECURE FILES - CHECKPOINT ABORT.*) 
          ABORT 
  
 WRTA     DATA   C* CONTENTS NOT CHECKPOINTED FOR FILE +++++++.*
 WRTB     BSSZ   5           ASSEMBLY AREA
  
*         LIST OF FILES TO BE CHECKPOINTED. 
  
 WRTC     DATA   C*INPUT* 
          DATA   C*OUTPUT*
          DATA   C*LGO* 
          DATA   C*PUNCH* 
          DATA   C*PUNCHB*
          DATA   C*P8*
          DATA   C*CCCCCCO* 
          CON    0
 WRTD     DATA   C*ZZZZZC0* 
 WRTE     DATA   C*ZZZZZC2* 
 WRTF     DATA   C*ZZCCLAA* 
          DATA   C*ZZCCLZZ* 
  
*         LIST OF FILES NOT TO BE CHECKPOINTED. 
  
 TSSF     BSS    0
          VFD    36/6LINPUT*,24/0 
          VFD    18/3LDM*,42/0
          VFD    42/7LCCCCCCC,18/0
          CON    0
 COM      SPACE  4
          TITLE  COMMON DECKS AND BUFFERS.
*         COMMON DECKS. 
  
  
*CALL     COMCCDD 
*CALL     COMCCIO 
*CALL     COMCCPM 
*CALL     COMCDXB 
*CALL     COMCLFM 
*CALL     COMCMVE 
*CALL     COMCRDO 
*CALL     COMCRDW 
*CALL     COMCSFN 
*CALL     COMCSNM 
*CALL     COMCSYS 
*CALL     COMCWTO 
*CALL     COMCWTW 
 BUF      SPACE  4
*         BUFFER ASSIGNMENTS. 
  
  
          USE    BUFFERS
 BUF      EQU    *
 IBUF     EQU    BUF+BUFL 
 OBUF     EQU    IBUF+IBUFL 
 SBUF     EQU    OBUF+OBUFL 
 TBUF     EQU    SBUF+SBUFL 
 RFL=     EQU    TBUF+TBUFL 
          TITLE  PRESET.
 PRS      SPACE  4
**        PRESET ROUTINE. 
* 
*         ENTRY  FILE /DM*/ PRESENT.
* 
*         EXIT   CHECKPOINT FILE POSITIONED.
*                FILE LIST IN PAR.
*                FNT LIST IN SBUF.
*                CONTROL STATEMENT FILE ATTACHED. 
*                CHECKPOINTED NUMBER INCREMENTED. 
* 
*         CALLS  VAL. 
* 
*         USES   A - 1, 2, 3, 4, 5, 6, 7. 
*                B - 1, 2, 4. 
*                X - ALL. 
* 
*         MACROS  ABORT, ACCSF, BKSP, BKSPRU, DISTC,
*                 GETFNT, MESSAGE, MOVE, READ, READO, 
*                 READW, REWIND, SETFS, SKIPEI, STATUS, 
*                 WRITEO, WRITEW. 
  
  
          ORG    BUF+1
 PRS       SUBR               ENTRY/EXIT
          SB1    1
          SA1    JOPR        CHECK JOB ORIGIN TYPE
          AX1    24 
          SX2    X1-TXOT
          NZ     X2,PRS1     IF NOT TXOT ORIGIN TYPE
          DISTC  ON,TICF     SET DISABLE TERMINAL CONTROL 
 PRS1     SA1    PGNR        CHECK FOR CONTROL CARD CALL
          NZ     X1,PRS2     IF CONTROL CARD
          SA4    SPPR 
          MX0    -18
          BX5    -X0*X4 
          ZR     X5,PRS4     IF NO LIST ADDRESS 
          MOVE   20B,(SPPR+1),PAR      GET LIST 
          SA1    SPPR 
          AX1    18 
          SX6    X1 
          SA6    SPFL        SET SELECTIVE CHECKPOINT 
          SA1    PAR
          AX1    12 
          SX1    X1-20B 
          NG     X1,PRS4     IF CONTAINS ENTIRE LIST
  
*         GET FILE LIST FROM DM* FILE SINCE TOO LONG FOR CONTROL PT AREA
  
          SA3    =C/DM*/
          SX4    3
          BX6    X3+X4
          SA6    I
          READ   I
          READW  I,PAR,100B 
          SA1    PAR+20B
          MX0    -12
          BX0    -X0*X1 
          SB2    6           SET SHIFT COUNT
          AX4    B2,X5
          IX0    X0-X4       GET PRU,S TO BACKSPACE 
          SKIPEI I
          BKSPRU I,X0,R 
          MX0    -6 
          BX5    -X0*X5 
          SA1    I+1         SET IN = OUT = FIRST 
          SX6    X1 
          SA6    A1+B1
          SA6    A6+B1
          READ   I
          READW  I,PAR,X5 
  
*         READ LIST INTO PAR. 
  
          READW  I,PAR,100B  (ONLY 77B FILES ALLOWED) 
          REWIND I
          EQ     PRS4        REQUEST CHECKPOINT 
  
*         PROCESS CONTROL CARD CALL.
  
*         CREATE LIST.
  
 PRS2     SA1    ACTR 
          SB4    X1 
          SX6    X1 
          ZR     B4,PRS4     IF NO ARGUMENTS
          LX6    12 
          SA6    SPFL        SET SELECTIVE CHECKPOINT FLAG
          SA6    PAR         SET NUMBER OF FILES
          SA1    ARGR        GET FIRST FILE NAME
          SX3    30000B      SET COPY TYPE
 PRS3     BX6    X1+X3
          SA6    A6+B1
          SB4    B4-B1
          SA1    A1+B1       GET NEXT FILE
          NZ     B4,PRS3     IF MORE FILES, LOOP
  
 PRS4     MESSAGE (=C* CKP REQUEST.*) 
          SA1    SPFL 
          ZR     X1,PRS5     IF NOT SELECTIVE CHECKPOINT
          SA3    PAR         SET FILE LIST ADDRESS
          SX6    X3 
          SA6    A1 
 PRS5     SX6    777B        PRESET POINTERS
          SA6    BUF
          SX7    A6+
          SA7    PTR
  
*         GET CONTROL STATEMENT FILE. 
  
          SX6    3
          SA5    =C*CCCCCCO*
          BX6    X5+X6
          SA6    I           SET NAME IN FET
          STATUS I
          SA1    I
          SX1    X1-1 
          NZ     X1,PRS6     IF ALREADY PRESENT 
          ACCSF  I,CSFP,LOCK ATTACH FILE WITH POSITION RETURNED 
  
*         GET LIST OF ALL FILES.
  
 PRS6     SX6    B0          SET INITIAL CALL 
          SA6    SBUF 
          SA1    PRSC 
          BX6    X1 
          SA6    I+8
          GETFNT I
          SA1    SBUF 
          NZ     X1,PRS7     IF NOT ALL FILES RETURNED
          SA1    I+8
          PL     X1,PRS8     IF NO ERROR
 PRS7     MESSAGE  (=C* ERROR - FILE(S) NOT PROCESSED.*)
  
*         PROCESS CHECKPOINT FILE(S). 
  
 PRS8     SA1    I+9
          ZR     X1,PRS16    IF NO CHECKPOINT FILE
          NG     X1,PRS17    IF MORE THAN TWO FILES 
          SX3    3
          SA2    A1+1        FST ENTRY FOR FILE O 
          MX0    42 
          BX4    X0*X1
          BX6    X4+X3
          SA6    O           PUT CHECKPOINT FILE NAME IN FET
          MX7    -6 
          BX6    -X7*X1 
          SA6    MDFL        SAVE MODE OF FILE (CB OR CK) 
          MX3    -24
          AX2    12 
          BX0    -X3*X2      SAVE RANDOM INDEX OR BLOCK NUMBER
          SA1    A2+B1
          ZR     X1,PRS10    IF NO ALTERNATE FILE 
          SA2    A1+1        ALTERNATE FILE FST ENTRY 
          BX4    -X7*X1 
          SX7    X4-CKST
          ZR     X7,PRS17    IF CK FILE AMONG ALTERNATE FILES 
          BX6    X4-X6
          MX4    42 
          NZ     X6,PRS17    IF CK FILE AMONG ALTERNATE FILES 
          SX6    3
          BX4    X4*X1
          BX7    X6+X4
          SA7    I           SET ALTERNATE FILE NAME IN SCRATCH FET 
          SX6    77B
          SA6    MDFL        SET MODE FLAG FOR ALTERNATE FILES
          AX2    12 
          BX6    -X3*X2 
          ZR     X6,PRS9     IF ALTERNATE FILE EMPTY AND LOCAL
          SX6    X6-1 
          ZR     X6,PRS10    IF ALTERNATE FILE EMPTY OR REWOUND 
          READ   I
          READO  I
          NG     X1,PRS10    IF EOF/EOI - NO DATA ON FILE 
          PL     X6,PRS10    IF NOT CODE WORD CANT BE CHECKPOINT FILE 
          SA6    PRSA        SAVE CODE WORD 
          BKSP   I,R
          SA1    X2+B1       SET IN = OUT = FIRST 
          SX6    X1 
          SA6    A1+B1
          SA6    A6+B1
          EQ     PRS10       DO NOT REWIND *I*
  
*         THE REWIND ON *I* TAKES PLACE TO ENSURE THE FILE IS 
*         POSITIONED AT BOI.  THIS IS NECESSARY FOR TAPE
*         FILES ON WHICH AN OPEN/WRITE WAS JUST PERFORMED.
  
 PRS9     REWIND I           POSITION CHECKPOINT FILE TO BOI
 PRS10    ZR     X0,PRS14    IF CHECKPOINT FILE EMPTY AND LOCAL 
          SX6    X0-1 
          ZR     X6,PRS15    IF CHECKPOINT FILE EMPTY OR REWOUND
          READ   O
          READO  O
          NG     X1,PRS15    IF EOF/EOI - NO DATA ON FILE 
          PL     X6,PRS14    IF CHECKPOINT FILE MISPOSITIONED 
          SA6    PRSB        SAVE CODE WORD 
          BKSP   O,R
          SA1    X2+B1       SET IN = OUT = FIRST 
          SX7    X1 
          SA7    A1+B1
          SA7    A7+B1
          SA5    PRSB        RETRIEVE CODE WORD 
          MX0    -12
          SA1    MDFL 
          SX1    X1-77B 
          BX5    -X0*X5 
          NZ     X1,PRS12    IF NO ALTERNATE FILE 
          SX4    X5 
          SA5    PRSA 
          BX5    -X0*X5 
          IX7    X4-X5       COMPARE CHECKPOINT NUMBERS 
          NG     X7,PRS11    IF NO NEED TO SWITCH FILES 
          SA2    O           SWITCH FILE NAMES
          SX5    X4 
          SA1    I
          BX6    X1 
          SA6    O
          BX6    X2 
          SA6    A1 
 PRS11    MX3    42 
          SA1    O           FILE NAME
          BX1    X3*X1
          SX4    1R.
          RJ     SFN         GENERATE BIT MASK FOR FILE NAME
          CX7    X7          NUMBER OF BITS IN FILE NAME
          SA2    CKPB 
          BX7    -X7
          SB3    X7+54       SHIFT COUNT TO POSITION PERIOD 
          BX7    X2 
          LX4    X4,B3
          SA7    A2-1        GENERATE DAYFILE MESSAGE 
          BX6    X1+X4
          SA6    A2 
 PRS12    SX6    X5+B1       INCREMENT CHECKPOINT NUMBER
          LX6    47 
          PL     X6,PRS13    IF CHECKPOINT NUMBER LIMIT NOT REACHED 
          MX6    1
          LX6    -12
 PRS13    LX6    -47
          BX1    X6 
          SA6    CKNO        SAVE CHECKPOINT NUMBER 
          RJ     VAL         VALIDATE ACCESS LEVEL
          READ   O
          READO  O
          BX5    X6 
          BKSP   O
          MX0    -59
          BX6    -X0*X5      CLEAR LAST CHECKPOINT FLAG 
          WRITEO  O 
          WRITER  O,R 
          SA1    MDFL        CHECK MODE FLAG
          SX1    X1-CKST
          ZR     X1,PRSX     IF CK FILE, CONTINUE CHECKPOINT AT EOI 
          REWIND O           WRITE OVER NEXT TO LAST CHECKPOINT FILE
          EQ     PRSX        RETURN 
  
 PRS14    REWIND O
 PRS15    SA1    MDFL        MODE FLAG
          SX1    X1-CKST     CHECK FOR CK ON 1 CB FILE
          ZR     X1,PRS16.1  IF CK TYPE FILE
          NG     X1,PRS16.1  IF ONLY 1 CB FILE
          SA1    PRSA 
          SA2    A1+B1
          BX1    X1+X2       CHECK IF EITHER FILE HAS BEEN USED 
          ZR     X1,PRS11    IF NEITHER FILE HAS BEEN USED
          SX5    1           SET CHECKPOINT NUMBER TWO
          JP     PRS11       LOOP 
  
 PRS16    SETFS  O,CKST      SET FILE CCCCCCC STATUS TO CK
 PRS16.1  RJ     VAL         VALIDATE ACCESS LEVEL
          EQ     PRSX 
  
 PRS17    MESSAGE (=C* CHECKPOINT FILE ERROR.*) 
          ABORT 
  
 PRSA     BSSZ   1           TEMPORARY STORAGE FOR FILE I 
 PRSB     BSSZ   1           TEMPORARY STORAGE FOR FILE O 
 PRSC     VFD    38/0,1/1,3/0,18/SBUF  *GETFNT* CONTROL WORD
 VAL      SPACE  4,15 
**        VAL - VALIDATE ACCESS LEVEL.
* 
*         ENTRY  CHECKPOINT FILE CREATED AND NAME IN FET. 
* 
*         EXIT   ABORT, IF SECURE SYSTEM AND CHECKPOINT 
*                FILE ACCESS LEVEL IS NOT JOB ACCESS LEVEL
*                LIMIT. 
* 
*         USES   X - 0, 1, 3, 6, 7. 
*                A - 1, 7.
* 
*         MACROS ABORT, GETJAL, GETSSL, MESSAGE, STATUS.
  
  
 VAL      SUBR               ENTRY/EXIT 
          GETSSL VALA        GET SYSTEM SECURITY MODE 
          SA1    VALA 
          MX0    -3 
          LX1    12 
          BX6    -X0*X1 
          ZR     X6,VALX     IF NOT SECURE SYSTEM 
          GETJAL VALA        GET JOB ACCESS LEVEL LIMIT 
          SA1    VALA 
          LX1    -6 
          BX3    -X0*X1 
          SX6    B1          SET SECURITY PROCESSING BIT
          LX6    39-0 
          SA1    O+1
          BX7    X1+X6
          SA7    A1 
          STATUS O,P         GET FILE ACCESS LEVEL
          SA1    O+4
          LX1    -36
          BX2    -X0*X1 
          IX6    X2-X3
          ZR     X6,VALX     IF ACCESS LEVELS ARE EQUAL 
          MESSAGE (=C* CHECKPOINT FILE ACCESS LEVEL ERROR.*)
          ABORT 
  
 VALA     CON    0           REPLY WORD 
          SPACE  4,10 
          ERRNG  IBUF-*+1 
  
          END 
