*COMDECK  COMACIO - CPU INPUT/OUTPUT MACROS.
          CTEXT  COMACIO - CPU INPUT/OUTPUT MACROS. 
 COMACIO  SPACE  4
***       COMACIO - CPU INPUT/OUTPUT MACROS.
* 
*         G. R. MANSFIELD.   70/09/21.
*         T. R. RAMSEY.      73/01/02. MODIFIED FOR SCOPE 3.4.
* 
*         CONTROL DATA  PROPRIETARY PRODUCT.
*         COPYRIGHT CONTROL DATA SYSTEMS, INC. 1994.
 COMACIO  SPACE  4
***              THE I/O MACROS PROVIDE THE USER WITH PREDEFINED
*         CALLS FOR COMMONLY USED INPUT/OUTPUT OPERATIONS.
* 
*         WHERE A PARAMETER REFERS TO AN ADDRESS EXPRESSION, THE
*         PARAMETER MAY BE A REGISTER NAME, A RELOCATABLE ADDRESS,
*         AN EXTERNAL SYMBOL NAME, OR AN ABSOLUTE ADDRESS.
* 
*         THE PARAMETER *FILE* IS THE ADDRESS OF THE FET WHICH IS USED
*         TO CONTROL THE FILE FOR WHICH THE OPERATION IS REQUESTED. 
* 
*         WHERE A RECALL OPTION IS SPECIFIED, THE PRESENCE OF THE 
*         OPTION CAUSES RECALL OPERATION TO TAKE PLACE. 
* 
*         SOME I/O MACROS USE INTERNAL SYMBOLS, MICRO NAMES AND CALL
*         INTERNAL MACROS WITH NAMES OF THE FORM *'?NAM#XX* WHERE 
*         *NAM* IS ANY 3 CHARACTERS AND *XX* IS ANY 2 CHARACTERS. 
*         USERS SHOULD AVOID THIS FORM OF NAMES BUT MAY USE THE 
*         FORM *'?XXXZXX* WHERE *Z* IS  NOT *#*.
* 
*         ALL NUMERIC CONSTANTS GREATER THAN 7 IN THESE MACROS HAVE 
*         AN EXPLICIT RADIX, SO THE *BASE* MODE IS IMMATERIAL.
* 
*         THIS COMMON DECK CONTAINS NO UNLABELED *ELSE* OR *ENDIF*
*         STATEMENTS, SO IT CAN BE ASSEMBLED CONDITIONALLY. 
 COMACIO  SPACE  4
          BASE   DECIMAL
          TITLE  COMACIO - INTERNAL MACROS. 
**        INTERNAL MACROS FOR COMACIO.
* 
*         THESE MACROS ARE FOR INTERNAL USE BY OTHER COMACIO MACROS 
*         ONLY. THE GENERAL FORMAT OF THE MACRO NAMES IS *'?CIO#XX* 
*         WHERE *XX* IS ANY 2 CHARACTERS. MACRO NAMES WITH THIS FORM
*         SHOULD BE AVOIDED BY THE USER.
 '?CIO#M1 SPACE  4
**        '?CIO#M1 - ISSUE CIO CALL.
  
  
          PURGMAC '?CIO#M1
  
 '?CIO#M1 MACRO  FILE,RCL,OP
  =X2 FILE
*                            (X7) = OPCODE
*                            (X7) = -OPCODE IF RECALL REQUESTED 
  SX7 OP-0R;B/0R;B*2*OP 
*                            PROCESS REQUEST
  RJ =XCIO= 
  ENDM
 '?CIO#M2 SPACE  4
**        '?CIO#M2 - ISSUE CIO CALL WITH RECORD COUNT AND LEVEL NUMBER. 
  
  
          PURGMAC '?CIO#M2
  
 '?CIO#M2 MACRO  FILE,N,LEV,RCL,OP
  =X2 FILE
  IFC NE, N  ,3 
  R= X1,N 
  LX1 18D 
  BX2 X1+X2 
  IFC EQ, LEV  ,2 
  SX7 OP-0R;D/0R;D*2*OP 
  SKIP 11D
'?CIO#1M MICRO 1,1, LEV 
  IF -REG,LEV,3 
  IFLT 1R"'?CIO#1M",1RZ+1,2 
  SX7 -OP 
  SKIP 6
  =X7 LEV 
  SX1 OP
  LX7 14
  BX7 X1+X7 
  IFC NE, RCL  ,1 
  BX7 -X7 
  RJ =XCIO= 
  ENDM
 '?CIO#M3 SPACE  4
**        '?CIO#M3 - CALL DATA TRANSFER SUBROUTINE WITH PARAMETERS. 
  
  
          PURGMAC '?CIO#M3
  
 '?CIO#M3 MACRO  FILE,BUF,N,WHO 
  R= B6,BUF 
  R= B7,N 
  R= X2,FILE
  RJ =X;D=
  ENDM
          TITLE  COMACIO - FILE ACTION MACROS.
***              FILE ACTION REQUESTS FORMAT REQUESTS INTO X REGISTERS
*         AND RETURN JUMP TO SUBROUTINE *CIO=* (OR OTHERS AS NOTED) FOR 1553   9
*         PROCESSING.                                                   1553  10
* 
*         FILE ACTION MACROS USE REGISTERS X1, X2, AND X7.
*         SUBROUTINE *CIO=* USES REGISTERS X1, X2, X6, X7, A1, A6.
* 
*         COMPATABILITY IS PROVIDED BETWEEN SCOPE AND KRONOS (MACE) 
*         MACRO CALLS FOR THOSE MACROS USING LEVEL NUMBERS AND A
*         RECALL PARAMETER. THE MACROS CONCERNED ARE -
*                READSKP
*                REWRITER 
*                SKIPB
*                SKIPF
*                WRITER 
* 
*         FOR THESE MACROS, IF LEVEL IS A REGISTER, BEGINS WITH A 
*         NUMERIC, OR IS NULL THEN LEVEL AND RECALL ARE INTERPRETED 
*         AS LEVEL AND RECALL PARAMETERS. 
*         IF LEVEL IS NOT A REGISTER AND BEGINS WITH AN ALPHA THEN
*         THE MACRO CALL IS PROCESSED WITH LEVEL=0 AND AUTO-RECALL. 
 BKSP     SPACE  4
***       BKSP - BACKSPACE 1 LOGICAL RECORD.
* 
*         BKSP   FILE,RECALL
  
  
          PURGMAC BKSP
  
 BKSP     MACRO  FILE,RCL 
  '?CIO#M1 FILE,RCL,40B 
  ENDM
 BKSPRU   SPACE  4
***       BKSPRU - BACKSPACE PHYSICAL RECORDS.
* 
*         BKSPRU FILE,N,RECALL
* 
*         ENTRY  *N* = RECORD COUNT.
  
  
          PURGMAC BKSPRU
  
 BKSPRU   MACRO  FILE,N,RCL 
  =X2 FILE
  IFC NE, N  ,3 
  R= X1,N 
  LX1 18D 
  BX2 X1+X2 
  '?CIO#M1 X2,RCL,44B 
  ENDM
 CHECKF   SPACE  4,8                                                    1553  12
***       CHECKF - CHECK FILE STATUS FOR OWNCODE EXECUTION.             1553  13
*                                                                       1553  14
*         CHECKF FILE                                                   1553  15
*                                                                       1553  16
*         CALLS  CFS=                                                   1553  17
                                                                        1553  18
                                                                        1553  19
          PURGMAC CHECKF                                                1553  20
                                                                        1553  21
 CHECKF   MACRO  FILE                                                   1553  22
  =X2 FILE                                                              1553  23
  RJ =XCFS=                                                             1553  24
  ENDM                                                                  1553  25
 CLOSE    SPACE  4
***       CLOSE - CLOSE FILE. 
* 
*         CLOSE  FILE,TYPE,RECALL 
* 
*         ENTRY  *TYPE* AS FOLLOWS. 
*                (ABSENT) 
*                NR 
*                UNLOAD 
*                RETURN 
  
  
          PURGMAC CLOSE 
  
 CLOSE    MACRO  FILE,TYP,RCL 
'?CIO#FC SET 0
  ECHO 3,B=(,NR,UNLOAD,RETURN),C=(150B,130B,170B,174B)
  IFC EQ, B TYP ,2
'?CIO#FC SET C
  STOPDUP 
  ERRZR '?CIO#FC ILLEGAL CLOSE TYPE - (TYP) 
  '?CIO#M1 FILE,RCL,'?CIO#FC
  ENDM
 CLOSER   SPACE  4
***       CLOSER - CLOSE REEL OR SEQUENTIAL PACK. 
* 
*         CLOSER FILE,TYPE,RECALL 
* 
*         ENTRY  *TYPE* AS FOLLOWS. 
*                (ABSENT) 
*                NR 
*                UNLOAD 
  
  
          PURGMAC CLOSER
  
 CLOSER   MACRO  FILE,TYP,RCL 
'?CIO#FC SET 0
  ECHO 3,B=(,NR,UNLOAD),C=(350B,330B,370B)
  IFC EQ, B TYP ,2
'?CIO#FC SET C
  STOPDUP 
  ERRZR '?CIO#FC ILLEGAL CLOSER TYPE - (TYP)
  '?CIO#M1 FILE,RCL,'?CIO#FC
  ENDM
 EVICT    SPACE  4
***       EVICT - RELEASE FILE SPACE. 
* 
*         EVICT  FILE,RECALL
  
  
          PURGMAC EVICT 
  
 EVICT    MACRO  FILE,RCL 
  '?CIO#M1 FILE,RCL,114B
  ENDM
 OPEN     SPACE  4
***       OPEN - OPEN FILE FOR PROCESSING.
* 
*         OPEN   FILE,TYPE,RECALL 
* 
*         ENTRY  *TYPE* AS FOLLOWS. 
*                (ABSENT) 
*                NR 
*                READ 
*                READNR 
*                WRITE
*                WRITENR
*                ALTER
*                ALTERNR
*                REEL 
*                REELNR 
  
  
          PURGMAC OPEN
  
 OPEN     MACRO  FILE,TYP,RCL 
'?CIO#FC SET 0
  ECHO 3,B=(,NR,READ,READNR,WRITE,WRITENR,ALTER,ALTERNR,REEL,REELNR),C=(
,160B,120B,140B,100B,144B,104B,160B,120B,340B,300B) 
  IFC EQ, B TYP ,2
'?CIO#FC SET C
  STOPDUP 
  ERRZR '?CIO#FC ILLEGAL OPEN TYPE - (TYP)
  '?CIO#M1 FILE,RCL,'?CIO#FC
  ENDM
 POSMF    SPACE  4
***       POSMF - POSITION MULTI-FILE SET.
* 
*         POSITION A MULTI-FILE SET TO A PARTICULAR FILE AND
*         OPEN,REWIND THE FILE. 
* 
*         POSMF  MFILNAM,RECALL 
  
  
          PURGMAC POSMF 
  
 POSMF    MACRO  MFN,RCL
  '?CIO#M1 MFN,RCL,110B 
  ENDM
 READ     SPACE  4
***       READ - READ FILE TO CIO BUFFER. 
* 
*         READ   FILE,RECALL
  
  
          PURGMAC READ
  
 READ     MACRO  FILE,RCL 
  '?CIO#M1 FILE,RCL,10B 
  ENDM
 READEI   SPACE  4
***       READEI - READ FILE TO END OF INFORMATION. 
* 
*         READEI FILE,RECALL
*         MASS STORAGE FILES ONLY.
  
  
          PURGMAC READEI
  
 READEI   MACRO  FILE,RCL 
  '?CIO#M1 FILE,RCL,220B
  ENDM
 READLS   SPACE  4
***       READLS - READ FILE WITH LIST. 
* 
*         READLS FILE,RECALL
*         MASS STORAGE FILES ONLY.
  
  
          PURGMAC READLS
  
 READLS   MACRO  FILE,RCL 
  '?CIO#M1 FILE,RCL,210B
  ENDM
 READN    SPACE  4
***       READN - READ FILE NON-STOP FOR TAPES. 
* 
*         READN  FILE,RECALL
*         MAGNETIC TAPES IN S OR L FORMAT ONLY. 
  
  
          PURGMAC READN 
  
 READN    MACRO  FILE,RCL 
  '?CIO#M1 FILE,RCL,260B
  ENDM
 READNS   SPACE  4
***       READNS - READ FILE NON-STOP. (READ TO EOF)
* 
*         READNS FILE,RECALL
*         MASS STORAGE FILES ONLY.
  
  
          PURGMAC READNS
  
 READNS   MACRO  FILE,RCL 
  '?CIO#M1 FILE,RCL,250B
  ENDM
 READSKP  SPACE  4
***       READSKP - READ SKIP.
* 
*         READSKP FILE,LEVEL,RECALL 
* 
*         ENTRY  *LEVEL* = RECORD LEVEL.
  
  
          PURGMAC READSKP 
  
 READSKP  MACRO  FILE,LEV,RCL 
  '?CIO#M2 FILE,,LEV,RCL,20B
  ENDM
 RETURN   SPACE  4
***       RETURN - RETURN FILE TO SYSTEM. 
* 
*         RETURN FILE,RECALL
  
  
          PURGMAC RETURN
  
 RETURN   MACRO  FILE,RCL 
  '?CIO#M1 FILE,RCL,70B 
  ENDM
 REWIND   SPACE  4
***       REWIND - REWIND FILE. 
* 
*         REWIND FILE,RECALL
  
  
          PURGMAC REWIND
  
 REWIND   MACRO  FILE,RCL 
  '?CIO#M1 FILE,RCL,50B 
  ENDM
 REWRITE  SPACE  4
***       REWRITE - REWRITE DATA FROM CIO BUFFER. 
* 
*         REWRITE FILE,RECALL 
*         MASS STORAGE FILES ONLY.
  
  
          PURGMAC REWRITE 
  
 REWRITE  MACRO  FILE,RCL 
  '?CIO#M1 FILE,RCL,214B
  ENDM
 REWRITEF SPACE  4
***       REWRITEF - REWRITE END OF FILE. 
* 
*         REWRITEF FILE,RECALL
*         MASS STORAGE FILES ONLY.
  
  
          PURGMAC REWRITEF
  
 REWRITEF MACRO  FILE,RCL 
  '?CIO#M1 FILE,RCL,234B
  ENDM
 REWRITER SPACE  4
***       REWRITER - REWRITE END OF RECORD. 
* 
*         REWRITER FILE,LEVEL,RECALL
*         MASS STORAGE FILES ONLY.
* 
*         ENTRY  *LEVEL* = RECORD LEVEL.
  
  
          PURGMAC REWRITER
  
 REWRITER MACRO  FILE,LEV,RCL 
  '?CIO#M2 FILE,,LEV,RCL,224B 
  ENDM
 RPHR     SPACE  4
***       RPHR - READ PHYSICAL RECORD TO CIO BUFFER.
* 
*         RPHR   FILE,RECALL
*         MAGNETIC TAPES IN SCOPE FORMAT ONLY.
  
  
          PURGMAC RPHR
  
 RPHR     MACRO  FILE,RCL 
  =X2 FILE
  IFC EQ, RCL  ,2 
  SX7 B0
  SKIP 1
  MX7 60D 
  RJ =XCIO= 
  ENDM
 SKIPB    SPACE  4
***       SKIPB - SKIP RECORDS BACKWARDS. 
* 
*         SKIPB  FILE,N,LEVEL,RECALL
* 
*         ENTRY  *N* = RECORD COUNT.
*                *LEVEL* = RECORD LEVEL.
  
  
          PURGMAC SKIPB 
  
 SKIPB    MACRO  FILE,N,LEV,RCL 
  '?CIO#M2 FILE,N,LEV,RCL,640B
  ENDM
 SKIPEI   SPACE  4
***       SKIPEI - SKIP TO END OF INFORMATION.
* 
*         SKIPEI FILE,RECALL
*         MASS STORAGE FILES ONLY.
  
  
          PURGMAC SKIPEI
  
 SKIPEI   MACRO  FILE,RCL 
  =X2 FILE
  MX1 -18D
  LX1 18D 
  BX2 -X1+X2
  SX7 240B-0R;B/0R;B*2*240B 
  RJ =XCIO= 
  ENDM
 SKIPF    SPACE  4
***       SKIPF - SKIP RECORDS FORWARD. 
* 
*         SKIPF  FILE,N,LEVEL,RECALL
* 
*         ENTRY  *N* = RECORD COUNT.
*                *LEVEL* = RECORD LEVEL.
  
  
          PURGMAC SKIPF 
  
 SKIPF    MACRO  FILE,N,LEV,RCL 
  '?CIO#M2 FILE,N,LEV,RCL,240B
  ENDM
 SKIPFB   SPACE  4
***       SKIPFB - SKIP FILES BACKWARD. 
* 
*         SKIPFB FILE,N,RECALL
* 
*         ENTRY  *N* = RECORD COUNT.
  
  
          PURGMAC SKIPFB
  
 SKIPFB   MACRO  FILE,N,RCL 
  =X2 FILE
  IFC NE, N  ,3 
  R= X1,N 
  LX1 18D 
  BX2 X1+X2 
  SX7 74064B-0R;C/0R;C*2*74064B 
  LX7 3 
  RJ =XCIO= 
  ENDM
 SKIPFF   SPACE  4
***       SKIPFF - SKIP FILES FORWARD.
* 
*         SKIPFF FILE,N,RECALL
* 
*         ENTRY  *N* = RECORD COUNT.
  
  
          PURGMAC SKIPFF
  
 SKIPFF   MACRO  FILE,N,RCL 
  =X2 FILE
  IFC NE, N  ,3 
  R= X1,N 
  LX1 18D 
  BX2 X1+X2 
  SX7 74024B-0R;C/0R;C*2*74024B 
  LX7 3 
  RJ =XCIO= 
  ENDM
 UNLOAD   SPACE  4
***       UNLOAD - UNLOAD FILE. 
* 
*         UNLOAD FILE,RECALL
  
  
          PURGMAC UNLOAD
  
 UNLOAD   MACRO  FILE,RCL 
  '?CIO#M1 FILE,RCL,60B 
  ENDM
 WPHR     SPACE  4
***       WPHR - WRITE 1 PHYSICAL RECORD FROM CIO BUFFER. 
* 
*         WPHR   FILE,RECALL
*         MAGNETIC TAPES IN SCOPE FORMAT ONLY.
  
  
          PURGMAC WPHR
  
 WPHR     MACRO  FILE,RCL 
  '?CIO#M1 FILE,RCL,4 
  ENDM
 WRITE    SPACE  4
***       WRITE - WRITE DATA FROM CIO BUFFER. 
* 
*         WRITE  FILE,RECALL
  
  
          PURGMAC WRITE 
  
 WRITE    MACRO  FILE,RCL 
  '?CIO#M1 FILE,RCL,14B 
  ENDM
 WRITEF   SPACE  4
***       WRITEF - WRITE END OF FILE. 
* 
*         WRITEF FILE,RECALL
  
  
          PURGMAC WRITEF
  
 WRITEF   MACRO  FILE,RCL 
  '?CIO#M1 FILE,RCL,34B 
  ENDM
 WRITEN   SPACE  4
***       WRITEN - WRITE FILE NON-STOP FOR TAPES. 
* 
*         WRITEN FILE,RECALL
*         MAGNETIC TAPES IN S OR L FORMAT ONLY. 
  
  
          PURGMAC WRITEN
  
 WRITEN   MACRO  FILE,RCL 
  '?CIO#M1 FILE,RCL,264B
  ENDM
 WRITER   SPACE  4
***       WRITER - WRITE END OF RECORD. 
* 
*         WRITER FILE,LEVEL,RECALL
* 
*         ENTRY  *LEVEL* = RECORD LEVEL.
  
  
          PURGMAC WRITER
  
 WRITER   MACRO  FILE,LEV,RCL 
  '?CIO#M2 FILE,,LEV,RCL,24B
  ENDM
          TITLE  COMACIO - DATA TRANSFER MACROS.
***              DATA TRANSFER MACROS FORMAT REQUESTS INTO X REGISTERS
*         AND RETURN JUMP TO PROCESSING SUBROUTINES. DATA IS TRANSFERRED
*         TO OR FROM WORKING BUFFERS AND THE SELECTED FILE IN FORMATS 
*         SPECIFIED.
* 
*         MACROS WHICH READ DATA FROM A FILE RETURN STATUS INFORMATION
*         AS FOLLOWS -
*         (X1) = 0 FOR TRANSFER COMPLETE. 
*         (X1) = -1 FOR EOF DETECTED ON FILE. 
*         (X1) = (B6) IF EOR WAS DETECTED ON FILE BEFORE TRANSFER WAS 
*                     COMPLETE. 
*         (B6) = ADDRESS +1 OF LAST WORD TRANSFERRED TO WORKING BUFFER. 
*         (X7) = LEVEL NUMBER ON EOR. 
*         DATA WILL NOT BE TRANSFERRED AFTER AN EOR/EOF IS SENSED.
* 
*         ENTRY  *BUF* = ADDRESS OF WORKING BUFFER. 
*                *N* = WORD COUNT OF WORKING BUFFER.
*         DATA TRANSFER MACROS USE REGISTERS B6, B7, X2.
*         DATA TRANSFER SUBROUTINES SAVE REGISTERS X0, X5, A0, A5.
 READC    SPACE  4
***       READC - READ CODED LINE IN *C* FORMAT.
* 
*         READC  FILE,BUF,N 
*         TRANSFERS DATA UNTIL THE END OF LINE 0000 IS SENSED.
* 
*         CALLS  RDC=.
  
  
          PURGMAC READC 
  
 READC    MACRO  FILE,BUF,N 
  '?CIO#M3 FILE,(BUF),N,RDC                                             1553  27
  ENDM
 WRITEC   SPACE  4
***       WRITEC - WRITE CODED LINE IN *C* FORMAT.
* 
*         WRITEC FILE,BUF 
*         TRANSFERS DATA UNTIL THE END OF LINE 0000 IS SENSED.
* 
*         CALLS  WTC=.
  
  
          PURGMAC WRITEC
  
 WRITEC  MACRO  FILE,BUF
  R= B6,BUF 
  R= X2,FILE
  RJ =XWTC= 
  ENDM
 READH    SPACE  4
***       READH - READ CODED LINE IN *H* FORMAT.
* 
*         READH  FILE,BUF,N 
*         TRANSFERS DATA UNTIL THE END OF LINE 0000 IS SENSED.
*         FILLS TRAILING SPACES INTO THE WORKING BUFFER.
* 
*         CALLS  RDH=.
  
  
          PURGMAC READH 
  
 READH    MACRO  FILE,BUF,N 
  '?CIO#M3 FILE,(BUF),N,RDH                                             1553  29
  ENDM
 WRITEH   SPACE  4
***       WRITEH - WRITE CODED LINE IN *H* FORMAT.
* 
*         WRITEH FILE,BUF,N 
*         TRANSFERS ONE LINE OF DATA. 
*         DELETES TRAILING SPACES.
* 
*         CALLS  WTH=.
  
  
          PURGMAC WRITEH
  
 WRITEH   MACRO  FILE,BUF,N 
  '?CIO#M3 FILE,(BUF),N,WTH                                             1553  31
  ENDM
 READO    SPACE  4
***       READO - READ ONE WORD.
* 
*         READO  FILE 
* 
*         ENTRY  NONE.
* 
*         EXIT   (X6) = WORD READ.
* 
*         CALLS  RDO=.
  
  
          PURGMAC READO 
  
 READO    MACRO  FILE 
  SA1 FILE+2
  RJ =XRDO= 
  ENDM
 WRITEO   SPACE  4
***       WRITEO - WRITE ONE WORD.
* 
*         WRITEO FILE 
* 
*         ENTRY  (X6) = WORD TO WRITE.
* 
*         CALLS  WTO=.
  
  
          PURGMAC WRITEO
  
 WRITEO   MACRO  FILE 
  SA1 FILE+2
  RJ =XWTO= 
  ENDM
 READS    SPACE  4
***       READS - READ CODED LINE TO CHARACTER BUFFER.
* 
*         READS  FILE,BUF,N 
*         UNPACKS WORDS AND STORES THEM IN THE WORKING BUFFER 1 
*         CHARACTER/WORD UNTIL THE END OF LINE (0000) BYTE IS SENSED. 
*         FILLS THE WORKING BUFFER WITH SPACE CODES IF THE CODED LINE 
*         TERMINATES BEFORE *N* CHARACTERS ARE STORED.
* 
*         CALLS  RDS=.
  
  
          PURGMAC READS 
  
 READS    MACRO  FILE,BUF,N 
  '?CIO#M3 FILE,(BUF),N,RDS                                             1553  33
  ENDM
 WRITES   SPACE  4
***       WRITES - WRITE CODED LINE FROM CHARACTER BUFFER.
* 
*         WRITES FILE,BUF,N 
*         PACKS CHARACTERS FROM THE WORKING BUFFER 10 CHARACTERS/WORD.
*         DELETES TRAILING SPACE CODES BEFORE PACKING CHARACTERS. 
* 
*         CALLS  WTS=.
  
  
          PURGMAC WRITES
  
 WRITES   MACRO  FILE,BUF,N 
  '?CIO#M3 FILE,(BUF),N,WTS                                             1553  35
  ENDM
 READW    SPACE  4
***       READW - READ DATA TO WORKING BUFFER.
* 
*         READW  FILE,BUF,N 
* 
*         CALLS  RDW=.
  
  
          PURGMAC READW 
  
 READW    MACRO  FILE,BUF,N 
  '?CIO#M3 FILE,(BUF),N,RDW                                             1553  37
  ENDM
 WRITEW   SPACE  4
***       WRITEW - WRITE DATA FROM WORKING BUFFER.
* 
*         WRITEW FILE,BUF,N 
* 
*         CALLS  WTW=.
  
  
          PURGMAC WRITEW
  
 WRITEW   MACRO  FILE,BUF,N 
  '?CIO#M3 FILE,(BUF),N,WTW                                             1553  39
  ENDM
  
  
 COMACIO  ENDX
