*COMDECK COMA7IO                                                         DECK2
          CTEXT  COMA7IO     MACE I/O MACROS FOR SCOPE 2. 
          SPACE  4                                                       DECK2
***       SYMBOLS AND CONSTANTS                                          DECK2
          SPACE  4                                                       DECK2
 #RM      IFEQ   CP#RM,0                                                 DECK2
          SPACE  4,8                                                     DECK2
****                                                                     DECK2
**        FET STRUCTURE AND WORD OFFSETS.                                DECK2
*                                                                        DECK2
*                                                                        DECK2
*              OFFSET        CONTENTS                                    DECK2
*              ------        --------                                    DECK2
                                                                         DECK2
 I.FET    =      0           42/EXTERNAL LFN, 18/CIO CODE AND STATUS     DECK2
 I.FIRST  =      1           36/0, 6/RANDOM FLAG, 18/FIRST               DECK2
 I.IN     =      2           60/IN                                       DECK2
 I.OUT    =      3           60/OUT                                      DECK2
 I.LIMIT  =      4           60/LIMIT                                    DECK2
 I.RAN1   =      6           RANDOM FILE INFORMATION                     DECK2
 I.RAN2   =      7           RANDOM FILE INFORMATION                     DECK2
****                                                                     DECK2
          SPACE  4                                                       DECK2
 #RM      ELSE                                                           DECK2
          SPACE  4                                                       DECK2
****                                                                     DECK2
**        PSEUDO-FET STRUCTURE AND WORD OFFSETS.                         DECK2
*                                                                        DECK2
*                                                                        DECK2
*              OFFSET        CONTENTS                                    DECK2
*              ------        --------                                    DECK2
                                                                         DECK2
 I.FIT    =      0           1/HOLD BUF FLAG, 1/SPILL FLAG, 58/FIT ADDR  DECK2
 I.FIRST  =      1           60/FIRST                                    DECK2
 I.IN     =      2           60/IN                                       DECK2
 I.OUT    =      3           60/OUT                                      DECK2
 I.LIMIT  =      4           60/LIMIT                                    DECK2
 I.HBSET  =      5           HOLDING BUF PASS 1 PARAMS - 42/LEN, 18/FWA  DECK2
****                                                                     DECK2
          SPACE  4                                                       DECK2
 #RM      ENDIF                                                          DECK2
          TITLE  I/O GENERAL MACROS                                      DECK2
          SPACE  4                                                       DECK2
***       GENERAL UTILITY MACROS                                         DECK2
          SPACE  4                                                       DECK2
**        MOVE - MOVE DATA BLOCK.                                        DECK2
*                                                                        DECK2
*                                                                        DECK2
*         MOVE      COUNT,FROM,TO                                        DECK2
*                                                                        DECK2
*         ENTRY  *COUNT* = WORD COUNT OF BLOCK TO BE MOVED               DECK2
*                *FROM*  = ADDRESS OF FIRST WORD OF BLOCK                DECK2
*                *TO*    = ADDRESS OF FIRST WORD OF DESTINATION          DECK2
*                                                                        DECK2
*         USES   X - 1, 2, 3                                             DECK2
*                A - NONE                                                DECK2
*                B - 1                                                   DECK2
*                                                                        DECK2
*         CALLS  MVE= (COMCMVE)                                          DECK2
                                                                         DECK2
                                                                         DECK2
          PURGMAC MOVE
 MOVE     MACRO  C,F,T                                                   DECK2
          R=     X1,C                                                    DECK2
          R=     X2,F                                                    DECK2
          R=     X3,T                                                    DECK2
          IF     -DEF,B1=1,1                                             DECK2
          SB1    1                                                       DECK2
          RJ     =XMVE=                                                  DECK2
 MOVE     ENDM                                                           DECK2
          EJECT                                                          DECK2
***       FET CREATION MACRO                                             DECK2
*                                                                        DECK2
*         FET    FNAME,BUF,BUFL,STATUS,RANDOM                            DECK2
                                                                         DECK2
*         FNAME  = FILE NAME MICRO                                       DECK2
*         BUF    = FIRST WORD ADDRESS OF BUFFER (CIO OR HOLDING)         DECK2
*         BUFL   = LENGTH OF BUFFER                                      DECK2
*         STATUS = INITIAL CODE AND STATUS TO BE PLACED INTO CIO FET     DECK2
*         RANDOM = RANDOM FILE FLAG                                      DECK2
*                                                                        DECK2
*                                                                        DECK2
 FET      MACRO  FNAME,BUF,BUFL,STATUS,RANDOM                            DECK2
                                                                         DECK2
 #RM      IFEQ   CP#RM,0                                                 DECK2
                                                                         DECK2
          VFD    42/0L"FNAME",18/STATUS                                  DECK2
          VFD    12/0,1/RANDOM,29/8,18/BUF
          CON    BUF                                                     DECK2
          CON    BUF                                                     DECK2
          CON    BUF+BUFL                                                DECK2
          BSSZ   8
                                                                         DECK2
 #RM      ELSE                                                           DECK2
                                                                         DECK2
          VFD    1/1*BUFL/BUFL,1/1,1/1,57/FI._FNAME                      DECK2
                                                                         DECK2
 .HB      IFNE   BUFL,0                                                  DECK2
                                                                         DECK2
          CON    BUF                                                     DECK2
          CON    BUF                                                     DECK2
          CON    BUF                                                     DECK2
          CON    BUF+BUFL                                                DECK2
          VFD    24/0,18/BUFL,18/BUF                                     DECK2
          BSSZ   2                                                       DECK2
                                                                         DECK2
 .HB      ENDIF                                                          DECK2
                                                                         DECK2
 #RM      ENDIF                                                          DECK2
                                                                         DECK2
 FET      ENDM                                                           DECK2
          EJECT                                                          DECK2
 #RM      IFNE   CP#RM,0                                                 DECK2
          SPACE  4                                                       DECK2
***       FILE ACTION MACROS                                             DECK2
          SPACE  4                                                       DECK2
**        BKSP - BACKSPACE FILE ONE RECORD.                              DECK2
*                                                                        DECK2
*                                                                        DECK2
*         BKSP      FILE                                                 DECK2
*                                                                        DECK2
*         ENTRY  *FILE* = FILE NAME                                      DECK2
*                                                                        DECK2
*         USES   X2, A2                                                  DECK2
*                                                                        DECK2
*         CALLS  RECORD MANAGER                                          DECK2
                                                                         DECK2
                                                                         DECK2
          PURGMAC   BKSP                                                 DECK2
                                                                         DECK2
 BKSP     MACRO  F                                                       DECK2
          R=     A2,F                                                    DECK2
          SKIPBL X2,1                                                    DECK2
          SX2    A0                                                      DECK2
 BKSP     ENDM                                                           DECK2
 CLOSE    SPACE  4,8                                                     DECK2
**        CLOSE - CLOSE FILE.                                            DECK2
*                                                                        DECK2
*         CLOSES *FILE*, USING POSITIONING PARAMETER (CF) CURRENTLY      DECK2
*         IN THE FIT.                                                    DECK2
*                                                                        DECK2
*                                                                        DECK2
*         CLOSE     FILE                                                 DECK2
*                                                                        DECK2
*         ENTRY  *FILE* = FILE NAME                                      DECK2
*                                                                        DECK2
*         USES   X2, A2                                                  DECK2
*                                                                        DECK2
*         CALLS  CLO=                                                    DECK2
                                                                         DECK2
                                                                         DECK2
          PURGMAC   CLOSE                                                DECK2
                                                                         DECK2
 CLOSE    MACRO  F                                                       DECK2
          R=     A2,F                                                    DECK2
          RJ     =XCLO=                                                  DECK2
 CLOSE    ENDM                                                           DECK2
 OPEN     SPACE  4,8                                                     DECK2
**        OPEN - OPEN FILE.                                              DECK2
*                                                                        DECK2
*         OPENS *FILE*, USING PROCESSING DIRECTION (PD) AND POSITIONING  DECK2
*         (OF) PARAMETERS CURRENTLY IN THE FIT.                          DECK2
*                                                                        DECK2
*                                                                        DECK2
*         OPEN      FILE                                                 DECK2
*                                                                        DECK2
*         ENTRY  *FILE* = FILE NAME                                      DECK2
*                                                                        DECK2
*         USES   X2, A2                                                  DECK2
*                                                                        DECK2
*         CALLS OPE=                                                     DECK2
                                                                         DECK2
                                                                         DECK2
          PURGMAC   OPEN                                                 DECK2
                                                                         DECK2
 OPEN     MACRO  F                                                       DECK2
          R=     A2,F                                                    DECK2
          RJ     =XOPE=                                                  DECK2
 OPEN     ENDM                                                           DECK2
 REWIND   SPACE  4,8                                                     DECK2
**        REWIND- REWIND A FILE/BUFFER.                                  DECK2
*                                                                        DECK2
*         REWIND    FILE,RECALL                                          DECK2
*                                                                        DECK2
*         ENTRY  *FILE*    = FILE NAME                                   DECK2
*                *RECALL*  = IGNORED; INCLUDED FOR CIO COMPATIBILITY     DECK2
*                                                                        DECK2
*         USES   X2, A2                                                  DECK2
*                                                                        DECK2
                                                                         DECK2
          PURGMAC  REWIND                                                DECK2
                                                                         DECK2
 REWIND   MACRO  F                                                       DECK2
          R=     A2,F                                                    DECK2
          REWINDM  X2                                                    DECK2
 REWIND   ENDM                                                           DECK2
          SPACE  4                                                       DECK2
**        WRITEF - WRITE END-OF-FILE/PARTITION ON FILE.                  DECK2
*                                                                        DECK2
*         WRITES END-OF-FILE/PARTITION ON *FILE*.  IF *FILE* IS DOUBLE   DECK2
*         BUFFERED, IT IS FLUSHED BEFORE WRITING THE EOR.                DECK2
*                                                                        DECK2
*                                                                        DECK2
*         WRITEF    FILE                                                 DECK2
*                                                                        DECK2
*         ENTRY  *FILE* = FILE NAME                                      DECK2
*                                                                        DECK2
*         USES   X2, A2                                                  DECK2
*                                                                        DECK2
*         CALLS EOF=,FLSH=,RECORD MANAGER                                DECK2
                                                                         DECK2
                                                                         DECK2
          PURGMAC   WRITEF                                               DECK2
                                                                         DECK2
 WRITEF   MACRO  F                                                       DECK2
          R=     A2,F                                                    DECK2
          RJ     =XEOF=                                                  DECK2
 WRITEF   ENDM                                                           DECK2
 WRITER   SPACE  4,8                                                     DECK2
**        WRITER - WRITE END-OF-RECORD/SECTION ON FILE.                  DECK2
*                                                                        DECK2
*         WRITES LEVEL 0 END-OF-RECORD/SECTION ON *FILE*.  IF *FILE* IS  DECK2
*         DOUBLE BUFFERED, IT IS FLUSHED BEFORE WRITING THE EOR.         DECK2
*                                                                        DECK2
*                                                                        DECK2
*         WRITER    FILE                                                 DECK2
*                                                                        DECK2
*         ENTRY  *FILE* = FILE NAME                                      DECK2
*                                                                        DECK2
*         USES   X2, A2                                                  DECK2
*                                                                        DECK2
*         CALLS EOR=,FLSH=,RECORD MANAGER                                DECK2
                                                                         DECK2
                                                                         DECK2
          PURGMAC   WRITER                                               DECK2
                                                                         DECK2
 WRITER   MACRO  F                                                       DECK2
          R=     A2,F                                                    DECK2
          RJ     =XEOR=                                                  DECK2
 WRITER   ENDM                                                           DECK2
          SPACE  4                                                       DECK2
***       DATA   TRANSFER MACROS                                         DECK2
          SPACE  4                                                       DECK2
*                                                                        DECK2
**        READC - READ ONE CODED LINE IN -C- FORMAT.                     DECK2
*                                                                        DECK2
*                                                                        DECK2
*         READC     FILE,TO,WORDS                                        DECK2
*                                                                        DECK2
*         ENTRY  *FILE*  = FILE NAME                                     DECK2
*                *TO*    = WSA ADDRESS                                   DECK2
*                *WORDS* = WSA LENGTH (WORDS)                            DECK2
*                                                                        DECK2
*         USES   X2, A2, B6, B7                                          DECK2
*                                                                        DECK2
*         CALLS RDC=                                                     DECK2
                                                                         DECK2
                                                                         DECK2
          PURGMAC   READC                                                DECK2
                                                                         DECK2
 READC    MACRO  F,S,N                                                   DECK2
          R=     B6,S                                                    DECK2
          R=     B7,N                                                    DECK2
          R=     A2,F                                                    DECK2
          RJ     =XRDC                                                   DECK2
 READC    ENDM                                                           DECK2
 READW    SPACE  4,8                                                     DECK2
**        WRITEC - WRITE ONE CODED LINE IN -C- FORMAT.                   DECK2
*                                                                        DECK2
*                                                                        DECK2
*         WRITEC    FILE,FROM,WORDS                                      DECK2
*                                                                        DECK2
*         ENTRY  *FILE*  = FILE NAME                                     DECK2
*                *FROM*  = WSA ADDRESS                                   DECK2
*                *WORDS* = WSA LENGTH (WORDS)                            DECK2
*                                                                        DECK2
*         USES   X2, A2, B6, B7                                          DECK2
*                                                                        DECK2
*         CALLS WTC=                                                     DECK2
                                                                         DECK2
                                                                         DECK2
          PURGMAC   WRITEC                                               DECK2
                                                                         DECK2
 WRITEC   MACRO  F,S,N                                                   DECK2
          R=     B6,S                                                    DECK2
          R=     B7,N                                                    DECK2
          R=     A2,F                                                    DECK2
          RJ     =XWTC=                                                  DECK2
 WRITEC   ENDM                                                           DECK2
 WRITEW   SPACE  4,8                                                     DECK2
**        READW - READ WORDS TO WORKING STORAGE AREA.                    DECK2
*                                                                        DECK2
*                                                                        DECK2
*         READW     FILE,TO,WORDS                                        DECK2
*                                                                        DECK2
*         ENTRY  *FILE*  = FILE NAME                                     DECK2
*                *TO*    = WSA ADDRESS                                   DECK2
*                *WORDS* = WSA LENGTH (WORDS)                            DECK2
*                                                                        DECK2
*         USES   X2, A2, B6, B7                                          DECK2
*                                                                        DECK2
*         CALLS RDW=                                                     DECK2
                                                                         DECK2
                                                                         DECK2
          PURGMAC   READW                                                DECK2
                                                                         DECK2
 READW    MACRO  F,S,N                                                   DECK2
          R=     B6,S                                                    DECK2
          R=     B7,N                                                    DECK2
          R=     A2,F                                                    DECK2
          RJ     =XRDW=                                                  DECK2
 READW    ENDM                                                           DECK2
 WRITEC   SPACE  4,8                                                     DECK2
**        WRITEW - WRITE WORDS FROM WORKING STORAGE AREA.                DECK2
*                                                                        DECK2
*                                                                        DECK2
*         WRITEW    FILE,FROM,WORDS                                      DECK2
*                                                                        DECK2
*         ENTRY  *FILE*  = FILE NAME                                     DECK2
*                *FROM*  = WSA ADDRESS                                   DECK2
*                *WORDS* = WSA LENGTH (WORDS)                            DECK2
*                                                                        DECK2
*         USES   X2, A2, B6, B7                                          DECK2
*                                                                        DECK2
*         CALLS WTW=                                                     DECK2
                                                                         DECK2
                                                                         DECK2
          PURGMAC   WRITEW                                               DECK2
                                                                         DECK2
 WRITEW   MACRO  F,S,N                                                   DECK2
          R=     B6,S                                                    DECK2
          R=     B7,N                                                    DECK2
          R=     A2,F                                                    DECK2
          RJ     =XWTW=                                                  DECK2
 WRITEW   ENDM                                                           DECK2
          SPACE  4                                                       DECK2
***       READS - READ CODED LINE TO CHARACTER BUFFER.                   DECK2
*                                                                        DECK2
*                                                                        DECK2
*         READS  FILE,BUF,N                                              DECK2
*                                                                        DECK2
*         WORDS ARE UNPACKED AND STORED IN THE WORKING BUFFER 1          DECK2
*         CHARACTER/WORD UNTIL THE END OF LINE (0000) BYTE IS SENSED.    DECK2
*         00 CHARACTERS ARE STORED AS SPACE (55) CODES.                  DECK2
*         IF THE CODED LINE TERMINATES BEFORE *N* CHARACTERS ARE         DECK2
*         STORED, THE WORKING BUFFER IS FILLED WITH SPACE CODES.         DECK2
*                                                                        DECK2
*         ENTRY  *FILE* = FILE NAME                                      DECK2
*                *BUF* = STRING BUFFER                                   DECK2
*                *N* = NUMBER OF CHARACTERS                              DECK2
*                                                                        DECK2
*         CALLS RDS=                                                     DECK2
                                                                         DECK2
          PURGMAC  READS                                                 DECK2
                                                                         DECK2
 READS    MACRO  F,S,N                                                   DECK2
          R=     B6,S                                                    DECK2
          R=     B7,N                                                    DECK2
          R=     A2,F                                                    DECK2
          RJ     =XRDS=                                                  DECK2
 READS    ENDM                                                           DECK2
          SPACE  4                                                       DECK2
***       WRITES - WRITE CODED LINE FROM CHARACTER BUFFER.               DECK2
*                                                                        DECK2
*                                                                        DECK2
*         WRITES FILE,BUF,N                                              DECK2
*                                                                        DECK2
*         CHARACTERS ARE PACKED FROM THE WORKING BUFFER 10 CHARACTERS    DECK2
*         PER WORD.                                                      DECK2
*         TRAILING SPACES ARE DELETED BEFORE CHARACTERS ARE PACKED.      DECK2
*                                                                        DECK2
*         ENTRY  *FILE* = FILE NAME                                      DECK2
*                *BUF* = STRING BUFFER                                   DECK2
*                *N* = NUMBER OF CHARACTERS                              DECK2
*                                                                        DECK2
*         CALLS WTS=                                                     DECK2
                                                                         DECK2
          PURGMAC  WRITES                                                DECK2
                                                                         DECK2
 WRITES   MACRO  F,S,N                                                   DECK2
          R=     B6,S                                                    DECK2
          R=     B7,N                                                    DECK2
          R=     A2,F                                                    DECK2
          RJ     =XWTS=                                                  DECK2
 WRITES   ENDM                                                           DECK2
          SPACE  4                                                       DECK2
 #RM      ENDIF                                                          DECK2
          SPACE  4                                                       DECK2
          ENDX                                                           DECK2
