// JOB VSB004,,5B00,5B00
// GBL   LU=30
// GBL   PCH=NO
// GBL PUNCH=NO
// GBL   T=NO
// GBL TAPE=NO
// GBL   C=80
// IF    ('&PCH' EQ 'NO')NOPC
//PUNCH  JSET  &PCH
//NOPC   NOP
// IF    ('&C' EQ '80')C80
//LU     JSET  34
//C80    NOP
// IF    ('&T' EQ 'NO')NOTAP
//TAPE   JSET  &T
//NOTAP  NOP
// OPR '*****VSB004**--VSBAL1-  TEST SAM FILES WITH BAL PROGRAM'
// OPR '*****VSB004A -BEGIN TO ASSEMBLE --VSBAL1--'
// DVC 20  // LFD PRNTR
// WORK1
// WORK2
// OPTION      SUB
// EXEC ASM
/$
VSBAL1   TITLE 'JOB---VSB004    PROGRAM---VSBAL1   ** ASSMB-SAM **     C
               -**** T. GALLETTI/SDI E-TEAM'
VSBAL1   START 0
         PRINT ON,NOGEN
VIA      BALR  2,0
         USING *,2,3
A        L     3,ADR
         L     13,=A(SAVE)
         MVC   VSBMSG(VSBTAPL),VSTAPMSG      . TAPE MSG TO BUFFER
         OPR   VSBMSG,VSBTAPL,,REPLY         .ISSUE  OPR
         CLI   VSBMSG,C'Y'                   . TAPE  WANTED
         BNE   VSB2
         OI    VSBFLGS,X'80'
VSB2     MVC   VSBMSG(VSBPUNL),VSPUNMSG      .PUNCH MSG TO BUFFER
         OPR   VSBMSG,VSBPUNL,,REPLY         .ISSUE OPR
         CLI   VSBMSG,C'Y'                   . PUNCH WANTED?
         BNE   VSB1                          .NO,VSB1
         OI    VSBFLGS,X'40'                 .YES,SET X'40'
VSB1     EQU   *
         OPEN  DISC                          .OPEN DISC FILE
         OPEN  PRNTR,READER                  .OPEN PRINTER
         TM    VSBFLGS,X'80'            .TAPE WANTED?
         BNO   VSB4                     .NO, VSB4
         OPEN  TAPE                     . YES-OPEN TAPE
VSB4     TM    VSBFLGS,X'40'            .PUNCH WANTED?
         BNO   VSB5                     .NO,VSB5
         OPEN  PUNCH                    .YES-OPEN PUNCH
VSB5     EQU   *
         CNTRL PRNTR,SK,7               . HOME PAPER
         MVC   PRAR(VSBTILG1),VSBTITL1      .MOVE TITLE1 TO BUFFER
         PUT   PRNTR                    .ISSUE PRINT
         MVC   PRAR(VSBTILG2),VSBTITL2  .MOVE TITLE2 TO BUFFER
         PUT   PRNTR                    .ISSUE  PRINT
         CNTRL PRNTR,SP,5               .SPACE 5 LINES
         MVI   PRAR,X'40'
         MVC   PRAR+1(119),PRAR         . CLEAR OUT BUFFER
         MVI   INBUF,X'40'
         MVC   INBUF+1(95),INBUF        .CLEAR READER INPUT
VSB6     EQU   *                        .
         GET   READER                   . GET A CARD
         MVC   DWORKA(96),INBUF
         PUT   DISC,DWORKA              . OUTPUT TO DISC
         MVC   PRAR(96),INBUF
         PUT   PRNTR                    . OUTPUT TO PRINTER
         TM    VSBFLGS,X'80'            . TAPE OUTPUT?
         BNO   VSB7                     .NO,VSB7
         PUT   TAPE,DWORKA              . YES, OUTPUT TO TAPE
VSB7     TM    VSBFLGS,X'40'            . PUNCH OUTPUT WANTED?
         BNO   VSB6                     . NO,VSB6
         MVC   OTBUF(80),INBUF
         PUT   PUNCH                    . YES,PUNCH CARD
         B     VSB6                     . B  VSB6
VSBAL10  EQU   *
         CLOSE DISC                . CLOSE DISC FILE
         CLOSE PRNTR               .CLOSE  PRINTER FILE
         CLOSE READER              .CLOSE  READER
         TM    VSBFLGS,X'80'       . TAPE ?
         BNO   VSB9                .NO, VSB9
         CLOSE TAPE                . YES-CLOSE TAPE FILE
VSB9     TM    VSBFLGS,X'40'       . PUNCH?
         BNO   VSB10               . NO,VSB10
         CLOSE PUNCH               . YES, CLOSE PUNCH FILE
RERR     EQU   *
VSB10    EOJ                       . END OF JOB
DISC     DTFSD BLKSIZE=192,ERROR=RERR,IOAREA1=DAR,RECFORM=FIXBLK,      C
               RECSIZE=96,TYPEFLE=OUTPUT,WORKA=YES
PRNTR    DTFPR BLKSIZE=120,CONTROL=YES,IOAREA1=PRAR,RECFORM=FIXUNB,    C
               PRINTOV=SKIP,PRAD=1
TAPE     DTFMT BLKSIZE=192,ERROR=RERR,IOAREA1=TAREA,RECFORM=FIXBLK,    C
               RECSIZE=96,TYPEFLE=OUTPUT,WORKA=YES,CLRW=RWD
READER   DTFCD IOAREA1=INBUF,BLKSIZE=&C,TYPEFLE=INPUT,EOFADDR=VSBAL10
PUNCH    DTFCD IOAREA1=OTBUF,BLKSIZE=80,TYPEFLE=OUTPUT
         EJECT
ADR      DC    A(A+4096)
SAVE     DS    18F
VSBTITL1 DC    C'***************JOB-----VSB004 - BAL PROGRAM'
VSBTILG1 EQU   *-VSBTITL1
VSBTITL2 DC    C'***************PROGRAM - VSBAL1 - LOAD BAL-SAM FILE'
VSBTILG2 EQU   *-VSBTITL2
VSTAPMSG DC    C'VSB004 TAPE OUTPUT WANTED ANS Y OR N'
VSBTAPL  EQU   *-VSTAPMSG
VSPUNMSG DC    C'VSB004 PUNCH OUTPUT WANTED ANS Y OR N'
VSBPUNL  EQU   *-VSPUNMSG
VSNTAP   DC    C'VSB004 TAPE NOT SUPPORTED'
VSNTAPL  EQU   *-VSNTAP
VSBFLGS  DC    X'00'               .VSB FLAG BYTE
         CNOP  0,4
VSBMSG   DC    CL60' '             .OPR-REPLY BUFFER
DAR      DC    CL96' '                   .DISC BUFFER
TAREA    DC    CL96' '                   .TAPE BUFFER
OTBUF    DC    CL80' '             .PUNCH BUFFER
INBUF    DC    CL96' '                   .READER BUFFER
DWORKA   DC    CL96' '                   .WORKA FOR DISC
PRAR     DC    CL120' '            .PRINTER
         LTORG
         END   VSBAL1
/*
// OPR '*****VSB004B -BEGIN TO LINK AND CATALOG --VSBAL1--'
// DVC 20  // LFD PRNTR
// DVC 50  // VOL SDIVSB  // LBL VSBLIB  // LFD LOAD,1
// DVC 50  // VOL SDIVSB  // LBL VSBWORK1  // LFD $SCR1,6,INIT
// EXEC LNKEDT
/$
 LINKOP OUT=LOAD
 LOADM VSBAL1
/*
// OPR '*****VSB004C -BEGIN TO EXECUTE --VSBAL1--'
// DVC 20  // LFD PRNTR
// IF ('&TAPE' EQ 'NO')NOTAPE
// DVC 90 // VOL TORBEN(NOV) // LFD TAPE
//NOTAPE NOP
// IF ('&PUNCH' EQ 'NO')NOPCH
// DVC 40  // LFD PUNCH
//NOPCH NOP
// DVC &LU     // LFD READER
// DVC 50  // VOL SDIVSB  // LBL VSBLIB  // LFD LOAD,1
// DVC 50  // VOL SDIVSB  // LBL BALSAM   // LFD DISC,1,INIT
// EXEC VSBAL1,LOAD
// OPR '*****VSB004C -END --VSBAL1--'
// OPR '*****VSB004**-DISC LOADED VSN=SDIVSB FNAME=BAL-SAM'
/&
