SUB OPEN. (F$,A$,C%,SIGNEDZ%) {FCSCOM.B4S} IF INI%<>-1% THEN CALL FCSINI BY REF \ INI% = -1% LSET A.$=CHR$(1%)+CHR$(2%+4%+8%)+CHR$(2%+4%+64%)+CHR$(2%)+CHR$(2%+4%) ! FO.RD,FO.WRT,FO.APD,FO.MFY,FO.UPD CALL C. (C%) Z% = ABS%(SIGNEDZ%) P% = POS ("RWAMU",A$,1%) IF P%=0% THEN PRINT "INVALID OPEN. ACCESS MODE =";A$ \ CALL FCSDIE A% = ASCII(SEG$(A.$,P%,P%)) ! access mode in binary IF POS(F$,":",1%) THEN DEVICE$ = "" ELSE DEVICE$ = "SY:" F0$ = DEVICE$ + F$ + CHR$(0%) CALL FCSOPN BY REF (FDBADR%(C%-.ZERO.CNL%),C%,A%,F0$,Z%) .DEFINE .F.RSIZ%=2% ! Record size (offset from FDB) CALL WORDAT BY REF (FDBADR%(C%-.ZERO.CNL%)+.F.RSIZ%,ZGOT%) ! record size actually got IF SIGNEDZ%<0% THEN Z% = ZGOT% \ GOTO 50 IF ZGOT%=Z% THEN 50 IF Z%=0% THEN 50 ELSE PRINT "OPEN.WRONG RECORD SIZE" \ CALL FCSDIE 50 SUBEND