         SYSTEM   BPM
         SYSTEM   SIG7FDP
         REF      M:SI,M:EO
         DEF      ALLFILES,FPTS
FMTCHR   EQU      '?'
ALLFILES EQU      %
M:EI     DSECT    1
M:EI     M:DCB    (FILE,'123456789012345678901234567890'),;
                  INSN,PASS,IN
FNME     EQU      M:EI+22
         USECT    ALLFILES
         PCC      0
         LCF      *X'4F'
         BCR,8    %+2
,FPTS    M:PC     '%'
         PAGE
         M:OPEN   M:SI,IN,(RECL,80)
         LI,3     MAXFORMAT
         LI,1     FORMAT
ALL10    M:READ   M:SI,(BUF,*1),(ABN,SIABN)
         LW,2     M:SI+4
         SLS,2    -17
         AI,2     -1
ALL15    MTW,1    #CARDS
         LB,8     *1,2
         CI,8     X'D'              CR
         BNE      %+2
         LI,8     ' '
         CI,8     X'15'
         BE       %-2
         STB,8    *1,2
         AI,2     1
         LW,4     #CARDS
         STW,2    CRDLN,4           SAVE ARS
         AI,1     20                MOVE TO NEXT CARD
         BDR,3    ALL10
         M:PRINT  (MESS,M5)
         M:EXIT
*
SIABN    LB,15    10                GET ABN CODE
         CI,15    7                 LOST DATA
         BNE      SIABN10           NO, ASSUME EOF
         M:PRINT  (MESS,M7)
         LI,2     80
         B        ALL15
SIABN10  M:CLOSE  M:SI,SAVE
         M:OPEN   M:EO,OUT,SAVE,(KEYM,3)
         M:OPEN   M:EI,IN
         LH,1     M:EI              IF DCB GETS OPEN
         CI,1     X'20'             WE READ THE FILE INSTEAD
         BAZ      ALL19             OF DOINT OPNXT'S
         MTW,1    MODE              GOT OPEN, REMEMBER THIS
ALL18    M:READ   M:EI,(BUF,BUF),(SIZE,80),WAIT,;
                  (ABN,RDABN),(ERR,RDABN)
         B        ALL35
ALL19    EQU      %
         CAL1,1   OPNFSTF           OPEN THE FIRST FILE
         B        ALL30
*
ALL20    MTW,0    MODE
         BNEZ     ALL18
         CAL1,1   OPNNXTF
ALL30    LW,2     *X'4F'            DON'T DO ID* FILES
         AI,2     X'30000'
         SLS,2    8
         LI,3     -X'100'
         CS,2     M:EI+23
         BE       ALL57
ALL35    EQU      %
         LW,2     #CARDS
         LI,3     FORMAT
ALL40    LW,1     CLRBUF
         MBS,0    BLNKS
         LI,4     0                 FORMAT INDEX
         LI,5     0                 OUTPUT INDEX
         LI,9     80                MAX # BYTES IN RECORD
         LCW,1    2
         AW,1     #CARDS
         LW,15    CRDLN+1,1         # CHARS IN FORMAT RECORD
ALL50    LB,8     *3,4
         CI,8     FMTCHR
         BE       ALL60
         STB,8    OBUF,5
         AI,5     1
         BDR,15   ALL53
         B        ALL55
ALL53    AI,4     1
         BDR,9    ALL50
ALL55    M:WRITE  M:EO,(BUF,OBUF),ONEWKEY,(KEY,KEY),(SIZE,*5),(WAIT)
         LI,9     X'64'
         AWM,9    KEY
         AI,3     20
         BDR,2    ALL40
ALL57    MTW,0    MODE
         BNEZ     ALL20
         LH,2     M:EI
         CI,2     X'20'
         BAZ      %+2
         M:CLOSE  M:EI,SAVE
         B        ALL20
*
ALL60    MTW,0    MODE
         BNEZ     ALL70             READ, GO GET ARS
         LB,10    M:EI+23           FNE SIZE IS ARS
         LI,0     M:EI+23
         LI,6     1
ALL65    LB,8     *0,6
         STB,8    OBUF,5
         AI,6     1
         AI,5     1
         BDR,10   %+2
         B        ALL53
         BDR,9    ALL65
ALL67    M:PRINT  (MESS,M1)
         B        ALL55
*
ALL70    LW,6     M:EI+4
         SLS,6    -17               GET ARS
         AI,6     -1
         LB,8     BUF,6             GET LAST CHAR
         CI,8     X'D'              & THROW AWAY IF CR
         BE       %+4
         CI,8     X'15'             CHECK FOR OTHER KIND TOO
         BE       %+2
         AI,6     1                 NOT, USE PROPER ARS
         LW,10    6                 SET UP REGS
         LI,6     0
         LI,0     BUF
         B        ALL65
*
FSTE     EQU      %                 ERROR ON OPEN !ST FILE
         LW,1     FNME
         CI,1     X'FF00'           ANY USEFUL WORDS
         BAZ      FSTE10            NO
         LI,8     ALL20+1
         B        NXTF
FSTE10   M:PRINT  (MESS,M2)
         M:ERR
*
NXTF     EQU      %                 ERROR OPENING NEXT FILE
         LB,1     10                ERROR CODE
         CI,1     2
         BE       ALLDONE           END OF ALL FILES, QUIT
         CI,1     X'14'
         BE       *8                PASSWORD, FILENAME OK
         CI,1     8
         BE       ALL20             SYNON, IGNORE IT
         CI,1     X'75'             BADFILE
         BNE      NXTF20
         M:PRINT  (MESS,M3)
NXTF10   M:PRINT  (MESS,FNME+1)
         B        ALL57
NXTF20   M:PRINT  (MESS,M4)
         B        NXTF10
*
RDABN    LB,2     10                GET ABN CODE
         CI,2     6                 EOF
         BE       ALLDONE           IS OK
         CI,2     5                 AS IS EOD
         BE       ALLDONE
         CI,2     7                 LOST DATA GETS SPECIAL MSG
         BE       ALL67
         B        NXTF20            AND UNKNOWN KIND GETS CRIPTIC MSG
*
ALLDONE  M:CLOSE  M:EO,SAVE
         LH,1     M:EI
         CI,1     X'20'
         BAZ      %+2
         M:CLOSE  M:EI,SAVE
         M:PRINT  (MESS,M6)
         M:EXIT
         PAGE
*
*        CONSTANTS, FPTS, TABLES ETC
*
MAXFORMAT EQU     20
FORMAT   EQU      %
         LIST     0
         DO1      20*MAXFORMAT
         DATA     '    '
         LIST     1
CRDLN    RES      MAXFORMAT
#CARDS   PZE
CLRBUF   GEN,8,24 80,BA(OBUF)
BLNKS    DATA     '    '
OBUF     RES      20
BUF      RES      20
MODE     PZE
KEY      GEN,8,24 3,X'3E8'
OPNFSTF  GEN,8,24 X'14',M:EI
         DATA     X'C0000401'
         DATA     FSTE
         DATA     FSTE
         DATA     X'01010001'
         DATA     0
*
OPNNXTF  GEN,8,24 X'14',M:EI
         DATA     X'C0000401'
         DATA     NXTF,NXTF
         DATA     X'00010001'
         DATA     0
*
M1       TEXTC    'FORMAT + FILENAME TOO LONG'
M2       TEXTC    'CAN''T OPEN 1ST FILE OF ACCOUNT'
M3       TEXTC    'BAD FILE, ERROR CODE 75/XX, FILE BELOW IGNORED'
M4       TEXTC    'UNEXPECTED ABNORMAL, FILE BELOW IGNORED'
M5       TEXTC    'TOO MANY FORMAT CARDS, JOB ABORTED'
M6       TEXTC    'PROCESSING COMPLETED'
M7       TEXTC    'INPUT RECORD EXCEEDS 80 CHARS, IT HAS ',;
                  'BEEN TRUNCATED.'
         END      ALLFILES
