|
|
Below is a sample BSAM program. You may download the program here.
TITLE 'BSAM I/O EXAMPLE' 00010000 BSAMIO CSECT 00020000 XSAVE 00030000 SPACE 5 00040000 *********************************************************************** 00050000 * OPEN ALL DCBS, CARDCB TO READ DATA, PRNTDCB TO ALLOW * 00060000 * WRITE TO THE PRINTER, AND THE INTERMEDIATE DISK * 00070000 * STORAGE. OUTIN OPTION IN OPEN MACRO ALLOWS A WRITE * 00080000 * OPERATION FOLLOWED BY A READ OPERATION WITHOUT AN * 00090000 * ADDITIONAL OPEN-CLOSE SET. * 00100000 *********************************************************************** 00110000 SPACE 5 00120000 *********************************************************************** 00130000 * REGISTERS USED * 00140000 * R0 SYSTEM * 00150000 * R1 SYSTEM - PARM POINTER * 00160000 * R2 AVAILABLE * 00170000 * R3 AVAILABLE * 00180000 * R4 AVAILABLE * 00190000 * R5 CARD COUNTER * 00200000 * R6 AVAILABLE * 00210000 * R7 AVAILABLE * 00220000 * R8 AVAILABLE * 00230000 * R9 AVAILABLE * 00240000 * R10 AVAILABLE * 00250000 * R11 AVAILABLE * 00260000 * R12 AVAILABLE * 00270000 * R13 SYSTEM - SAVE AREA * 00280000 * R14 SYSTEM - RETURN ADDRESS * 00290000 * R15 SYSTEM - ENTRY POINT * 00300000 *********************************************************************** 00310000 OPENDCBS OPEN (CARDCB,(INPUT),PRNTDCB,(OUTPUT),DISKDCB,(OUTIN)) 00320000 * 00330000 * TEST THE OPEN, IF OPENS DID NOT GO, TERMINATE WITH ABEND 00340000 * GIVE THE USER A 500 ABEND CODE 00350000 * 00360000 TM CARDCB+48,X'10' DID THE CARD READER OPEN OK? 00370000 BNO ABTERM NO GO ABEND THE JOB 00380000 TM PRNTDCB+48,X'10' DID PRINTER OPEN OK? 00390000 BNO ABTERM NO GO ABEND THE JOB 00400000 TM DISKDCB+48,X'10' DID THE DISK OPEN OK? 00410000 BNO ABTERM NO GO ABEND THE JOB 00420000 * 00430000 * READ A CARD FROM THE READER 00440000 * 00450000 * 00460000 * READ A CARD FROM THE READER 00470000 * 00480000 XR R5,R5 SET CARD COUNTER TO ZERO 00490000 READ READ CARDECB,SF,CARDCB,BLOCK READ A CARD IMAGE INTO BLOCK 00500000 CHECK CARDCB CHECK FOR I/O COMPLETION 00510000 LA R5,1(R5) ADD ONE TO THE CARD COUNTER 00520000 * 00530000 * WRITE THE CARD IMAGE TO THE DISK FILE 00540000 * 00550000 WRITE DISKDECB,SF,DISKDCB,BLOCK WRITE TO DISK 00560000 CHECK DISKDECB 00570000 WRITE PRNTDECB,SF,PRNTDCB,BLOCK-1 00580000 CHECK PRNTDCB 00590000 B READ 00600000 * 00610000 * PRINT A LITERAL INDICATING EOD ON CARD READER, BEGIN 00620000 * READING FROM THE DISK 00630000 * 00640000 ENDATA WRITE PRNTDEC1,SF,PRNTDCB,LITERAL 00650000 CHECK PRNTDEC1 00660000 * 00670000 * SINCE DISK DCB WAS NOT CLOSED AT EOD A POINT MACRO MUST 00680000 * BE ISSUED TO REPOSITION THE DISK AT THE FRIST RECORD. 00690000 * 00700000 POINT DISKDCB,POINT 00710000 * 00720000 * NOW READ FROM DISK AND WRITE TO PRINTER, USING SAME DATA 00730000 * 00740000 DISKRD READ DISKDEC1,SF,DISKDCB,BLOCK 00750000 CHECK DISKDEC1 00760000 * 00770000 * WRITE TO PRINTER 00780000 * 00790000 WRITE PRNTDEC2,SF,PRNTDCB,BLOCK-1 00800000 CHECK PRNTDEC2 00810000 BCT R5,DISKRD REDUCE COUNTER TILL ZERO AND LOOP 00820000 END CLOSE (CARDCB,,PRNTDCB,,DISKDCB) CLOSE ALL ACTIVE DCBS 00830000 XRETURN 00840000 * 00850000 * ABEND ROUTINE WITH A DUMP 00860000 * 00870000 ABTERM ABEND 500,DUMP 00880000 DC 0F'0' 00890000 POINT DC X'00000100' 00900000 DC C' ' ASA CARRIAGE CONTROL CHARACTER 00910000 BLOCK DC 80C' ' 00920000 LITERAL DC C'-REPEAT READ DATA FROM DISK',80C' ' 00930000 SPACE 5 00940000 CARDCB DCB RECFM=F, X00950000 BLKSIZE=80, X00960000 DDNAME=SYSIN, X00970000 EODAD=ENDATA, X00980000 SYNAD=ABTERM, X00990000 MACRF=(R), X01000000 DSORG=PS 01010000 PRNTDCB DCB RECFM=FA, X01020000 BLKSIZE=80, X01030000 LRECL=80, X01040000 DDNAME=SYSPRINT, X01050000 SYNAD=ABTERM, X01060000 DSORG=PS, X01070000 MACRF=(W) 01080000 DISKDCB DCB RECFM=F, X01090000 BLKSIZE=80, X01100000 LRECL=80, X01110000 DDNAME=DISK, X01120000 EODAD=END, X01130000 SYNAD=ABTERM, X01140000 DSORG=PS, X01150000 MACRF=(RP,W) 01160000 * 01170000 * END OF DCBS FOR I/O OPERATIONS 01180000 * 01190000 REGEQU 01200000 END BSAMIO 01210000
|
The information on this site is the combined effort of a lot of people,
please credit the authors if you use their information.
|