MACRO 00001000
&LABEL FSOPEN &FILEID,&FSCB=,&RECFM=,&BUFFER=,&BSIZE=,&RECNO=,&NOREC=X00002000
,&ERROR=*+34,&FORM= 00003100
GBLC &DMSNAME,&DMSTYPE,&DMSMODE 00004000
AIF (T'&FORM EQ 'O').NOFORM 00004100
AIF ('&FORM' EQ 'E').FORME 00004200
MNOTE 8,'Error: FSOPEN FORM=&FORM parameter not valid' 00004300
MEXIT 00004400
.FORME ANOP 00004500
MNOTE 4,'Warning: FSOPEN FORM=E accepted but not implemented' 00004600
.NOFORM ANOP 00004700
AIF (T'&FILEID EQ 'O' AND T'&FSCB EQ 'O').ERR1 00005000
AIF (T'&FILEID EQ 'O').NOID 00006000
AIF ('&FILEID'(1,1) NE '''' AND '&FILEID'(1,1) NE '(').ERR2 00007000
AIF ('&FILEID'(1,1) EQ '(' AND '&FILEID(1)' EQ '0').ERR3 00008000
AIF ('&FILEID'(1,1) EQ '(' AND '&FILEID(1)' EQ '1').ERR3 00009000
&DMSNAME SETC ' ' 00010000
&DMSTYPE SETC ' ' 00011000
&DMSMODE SETC ' ' 00012000
AIF ('&FILEID'(1,1) EQ '(').NPID 00013000
&DMSMODE SETC 'A1' 00014000
DMSPID &FILEID 00015000
AIF ('&DMSNAME' EQ ' ' OR '&DMSTYPE' EQ ' ').ERR2 00016000
.NPID AIF (T'&FSCB EQ 'O').NOCB 00017000
.NOID AIF (T'&LABEL EQ 'O').NLBL 00018000
&LABEL DS 0H 00019000
.NLBL ANOP 00020000
AIF ('&FSCB'(1,1) EQ '(').REG1 00021000
LA 1,&FSCB 00022000
AGO .CONT1 00023000
.REG1 AIF ('&FSCB(1)' EQ '1').CONT1 00024000
LR 1,&FSCB(1) 00025000
.CONT1 ANOP 00026000
AIF (T'&FILEID EQ 'O').CONT2 00027000
AIF ('&FILEID'(1,1) EQ '(').REG2 00028000
MVC 8(8,1),=CL8'&DMSNAME' 00029000
MVC 16(8,1),=CL8'&DMSTYPE' 00030000
MVC 24(2,1),=CL2'&DMSMODE' 00031000
AGO .CONT2 00032000
.REG2 ANOP 00033000
MVC 8(18,1),0(&FILEID(1)) 00034000
.CONT2 ANOP 00035000
AIF (T'&RECNO EQ 'O').SKIP1 00036000
AIF ('&RECNO'(1,1) EQ '(').STOR1 00037000
AIF ('&RECNO' GT '65533').ERR10 00038100
MVC 26(2,1),=AL2(&RECNO) 00038200
AGO .SKIP1 00039000
.STOR1 ANOP 00040000
AIF ('&RECNO(1)' EQ '1').ERR4 00041000
STH &RECNO(1),26(,1) 00042000
.SKIP1 AIF (T'&BUFFER EQ 'O').SKIP2 00043000
AIF ('&BUFFER'(1,1) EQ '(').STOR2 00044000
MVC 28(4,1),=A(&BUFFER) 00045000
AGO .SKIP2 00046000
.STOR2 ANOP 00047000
AIF ('&BUFFER(1)' EQ '1').ERR5 00048000
ST &BUFFER(1),28(,1) 00049000
.SKIP2 AIF (T'&BSIZE EQ 'O').SKIP3 00050000
AIF ('&BSIZE'(1,1) EQ '(').STOR3 00051000
MVC 32(4,1),=F'&BSIZE' 00052000
AGO .SKIP3 00053000
.STOR3 ANOP 00054000
AIF ('&BSIZE(1)' EQ '1').ERR6 00055000
ST &BSIZE(1),32(,1) 00056000
.SKIP3 AIF (T'&RECFM EQ 'O').SKIP4 00057000
AIF ('&RECFM'(1,1) EQ '(').STOR4 00058000
AIF ('&RECFM' NE 'F' AND '&RECFM' NE 'V').ERR9 00059000
MVC 36(2,1),=CL2'&RECFM' 00060000
AGO .SKIP4 00061000
.STOR4 ANOP 00062000
AIF ('&RECFM(1)' EQ '1').ERR7 00063000
STC &RECFM(1),36(,1) 00064000
.SKIP4 AIF (T'&NOREC EQ 'O').SKIP5 00065000
AIF ('&NOREC'(1,1) EQ '(').STOR5 00066000
AIF ('&NOREC' GT '65533').ERR11 00067100
MVC 38(2,1),=AL2(&NOREC) 00067200
AGO .SKIP5 00068000
.STOR5 ANOP 00069000
AIF ('&NOREC(1)' EQ '1').ERR8 00070000
STH &NOREC(1),38(,1) 00071000
.SKIP5 ANOP 00072000
MVC 40(4,1),28(1) 00073000
MVC 0(8,1),=CL8'STATE' 00074000
SVC 202 00075000
DC AL4(&ERROR) 00076000
L 15,28(,1) 00077000
MVC 28(4,1),40(1) 00078000
MVC 24(2,1),24(15) 00079000
MVC 32(4,1),32(15) 00080000
MVC 36(1,1),30(15) 00081000
SR 15,15 00082000
MEXIT 00083000
.NOCB ANOP 00084000
CNOP 0,4 00085000
&LABEL BAL 1,DMS&SYSNDX.A 00086000
FSCB &FILEID 00087000
DMS&SYSNDX.A EQU * 00088000
AIF ('&FILEID'(1,1) EQ '(').REG2 00089000
AGO .CONT2 00090000
.ERR1 MNOTE 8,'NEITHER FILEID OF FSCB SPECIFIED' 00091000
MEXIT 00092000
.ERR2 MNOTE 8,'INVALID FILEID SPECIFICATION' 00093000
MEXIT 00094000
.ERR3 MNOTE 8,'REGISTERS 0 AND 1 INVALID FOR FILEID' 00095000
MEXIT 00096000
.ERR4 MNOTE 8,'REGISTER 1 INVALID FOR RECNO' 00097000
MEXIT 00098000
.ERR5 MNOTE 8,'REGISTER 1 INVALID FOR BUFFER' 00099000
MEXIT 00100000
.ERR6 MNOTE 8,'REGISTER 1 INVALID FOR BSIZE' 00101000
MEXIT 00102000
.ERR7 MNOTE 8,'REGISTER 1 INVALID FOR RECFM' 00103000
MEXIT 00104000
.ERR8 MNOTE 8,'REGISTER 1 INVALID FOR NOREC' 00105000
MEXIT 00106000
.ERR9 MNOTE 8,'INVALID RECFM SPECIFICATION' 00107000
MEXIT 00107100
.ERR10 MNOTE 8,'RECNO (&RECNO) EXCEEDS MAX (65533)' 00107200
MEXIT 00107300
.ERR11 MNOTE 8,'NOREC (&NOREC) EXCEEDS MAX (65533)' 00107400
MEND 00108000