|
DataMuseum.dkPresents historical artifacts from the history of: RegneCentralen RC3600/RC7000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RegneCentralen RC3600/RC7000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 19456 (0x4c00) Types: TextFile Notes: RCSL-43-GL-2615, RCSL-43-GL-2618, RCSL-43-GL-8209, RCSL-43-GL-8210, RCSL-43-GL-8211 Names: »M1047«
└─⟦a59f0a452⟧ Bits:30000472 DOMUS disk image └─⟦this⟧ »/M1047«
!A3740▶01◀$▶06◀Ø) RCSL: 43-GL8210 AUTHOR: CAMS/PBP EDITED: 78.12.05 PROGRAM RC36-01047.00 3740 IBM LABEL HANDLER KEYWORDS: MUSIL,FD,LISTING,3751. ABSTRACT: THIS PROGRAM FUNCTIONIZE AS A DRIVER FOR IBM 3740 SERIES DISCETTE. WITH AUTOMATIC CHECK OF LABEL, BAD TRACKS, AND DATASETFILE. RCSL: 43-GL8209 ASCII SOURCE RCSL: 43-GL8211/8212 BINARY TTY «ff» RC36-01047 PAGE 01 ABSTRACT: THIS PROGRAM FUNCTIONIZE AS A DRIVER FOR IBM 3740 SERIES DISCETTE. WITH AUTOMATIC CHECK OF LABEL, BAD TRACK AND DATASETFILE. SIZE: 4676 BYTES. INCLUDING TWO 512 BYTES INPUT BUFFERS. DATE: MARTS 16.TH 76. MODES: OPEN(IN,OPERATION ) JUST FOR TRANSFERING DATASET TO MODULE. OPERATION:=1 FOR READ 3 FOR WRITE. PARAMETERS FOR OPEN FOR DATASET(S) MUST BE MADE IN AN CONVERSION STRING CONNECTED TO THE FILE DESCRIPTION. TO SENSE STATUS FOR DEVICE WITHOUT TESTING CONTENT OF DISKETTE SET FD.ZONV TO ZERO AND MAKE AN OPEN. EXAMPLE: FDZONV:=FD.ZONV; FD.ZCONV:=0; OPEN(FD,READ); COULD BE USED IF READING SHOULD BE DONE AUTOMATICALLY. COMMAND: MODE: STRING(1) FROM 1 , READ=R WRITE=W DUMMY YET. UNIT: STRING(1) FROM 2 ASCII VALUE OF UNIT. ACCEPT: STRING(1) FROM 3 IF SEQUENCE ERROR WAS MET AND READING IS WANTED ANYWAY THEN VALUE DIFFERENT FROM SPACE SHOULD BE INSERTED. VOLID: STRING(6) FROM 4 VOLUME LABEL. DATASET: STRING(8) FROM 10 DATASETNAME. NOTE THAT IF VOLID = SPACES THEN NO CHECK OF LABEL WILL BE DONE. THAT IF DATASETNAME = SPACES THEN ALL LEGAL DATASET WILL BE TRANSFERRED UNTIL A DDR1 MARK IS MET. STATUS: B1: OFF-LINE. B5: SEQUENCE ERROR. B6: DISCETTE CONTAINS ILLEGAL INFORMAITION. B7: DATASET REACHED EOD. B8: BLOCK LENGTH ERROR. B11: DISCETTE FULL / OR END MEDIUM IF DATASET IS CONCECUTIVE. B12: POSITION ERROR. B14: FATAL SYSTEM ERROR. DISC CANNOT BE READ. «ff» RC36-01047 PAGE 02 OUTPUT MESSAGES: VOLUME LABEL MISSING VOLUME LABEL SECTOR NOT FOUND OR VOLUME ID ILLEGAL HEADER LABEL MISSING HEADER LABEL SECTOR NOT FOUND DATASET NAME MISSING THE TRANSFERRED DATASET NAME IS IS NOT FOUND BETWEEN SECTOR 8 AND 26 FILE STARTS IN TRACK 0 THE DATASET IS PLACED ILLEGAL ON DISCETTE FILE ENDS ILLEGAL THE DATASET IS PLACED ILLEGAL ON DISCETTE RECORD LENGTH ERROR THE RECORD IS GREATER THAN 512 OR BETWEEN 128 AND 512 OR LESS THAN 1 CHARACTERS SEQUENCE ERROR THE SEQUENCE ARE NOT CONSECUTIVE DEVICE RESERVED ANOTHER PROGRAM USING FD DRIVER. FD DRIVER MISSING FD DRIVER NOT IN CORE. AFTER ERROR THE LABEL WILL BE DISPLAYED ON THE CONSOLE ******** NOTE ********* IF "PARITY ERROR" OR "POSITION ERROR" OR "TIMEOUT" OCCURS ON SCREEN THEN IT MEANS THAT THE DICETTE WAS IMPOSSIBLE TO READ. CONTACT RC AND GIVE A LOG WITH IF POSSIBLE. AFTER THESE ERRORS : RECORD NR: XXXX OCCURS WHICH MEANS THAT THE SECTOR WITH NUMBER 1 <= SECTOR <= 2002 WAS DEFECT. **** NOTICE **** SPECIAL VERSION USING 512 BYTES BUFFERS USED TOGETHER WITH SPECIAL P&T PROGRAMS P1051 AND P1052. THIS VERSION SHOULD NOT BE USED ANYWHERE ELSE. «ff» RC36-01047 PAGE 03 AUTHOR: DATE: CHANGE: CAMS 76.01.13 EOD IS ALLOWED TO BE 1 > EOE CAMS 76.02.17 CORRECT MODULE TO MANAGE IBM ERMAP FORMAT. CAMS 76.03.16 CHANGE MODULE TO BE USED MORE GENEREL. (SLAKTERIFORBUNDET). CAMS 76.05.20 MODIFIE DELETED RECORDS CAMS 77.12.13 ALLOWED EMPTY DATASET. JSVJ 78.09.25 POSITIONING IMPLEMENTED. PBP 78.11.30 MODIFIED FOR 3751 DRIVER. OPEN STATEMENTS ARE RE- PLACED BY TRANSFER STATEMENTS. THIS MAKES IT POSIBLE TO USE MORE THAN ONE UNIT AT THE SAME TIME. ** OBS ** ** OBS ** THIS PROGRAM IS USING 512 BYTES BUFFERS. ** OBS ** ** OBS ** SPECIAL REQUIREMENTS: CODEPROCEDURE WAITANSWER RCSL: 43-GL2615 CODEPROCEDURE SENDANSWER RCSL: 43-GL2618 ! «ff» ! RC36-01047 PAGE 04 ! CONST ZEROS= '<0><0><0><0><0><0><0><0>", ! BOOLEANS ! TRUE= 1, FALSE= 0, ERMAPONE= -26, ERMAPTWO= -52, READSKIP= 1, READNONSKIP= 17, ERMAP= 5, VOLLABEL= 7, RESET= -1, ENOUGH= 10000, REPEATNUMBER= 10, BOPEN= 8'14, ! BITPATTERN ! B0= 8'100000, B1= 8'040000, B2= 8'020000, B3= 8'010000, B4= 8'004000, B5= 8'002000, B6= 8'001000, B7= 8'000400, B8= 8'000200, B9= 8'000100, B10= 8'000040, B11= 8'000020, B12= 8'000010, B13= 8'000004, B14= 8'000002, B15= 8'000001, ! STATUS ANSWERS ! CLEANBITS= 2'1110001111110010, STATUS= "B0 <0>B1 <0>B2 <0>B3 <0>B4 <0>B5 <0><10>DEVICE RESERVED <0> B7 <0>B8 <0>B9 <0><10>PARITY ERROR<0>B11 <0><10>POSITION ERROR<0> <10>FD DRIVER MISSING<0><10>TIME OUT<0>B15 <0>", VOL1= "VOL1", HDR1= "HDR1", SPACES= " ", VOLERROR= "VOLUME LABEL MISSING<10><0>", HDRERROR= "HEADER LABEL MISSING<10><0>", NAMEERROR= "DATASET NAME MISSING<10><0>", BOEERROR= "FILE STARTS IN TRACK 0<10><0>", EODERROR= "FILE ENDS ILLEGAL<10><0>", RECERROR= "RECORD LENGTH ERROR<10><0>", SEQERROR= "SEQUENCE ERROR<10><0>", C= "C", L= "L", ZERO="0", ONE= "1", READ= "R", RECORDNR= " RECORD: ", U= 0, UB= 1, «ff» ! RC36-01047 PAGE 05 ! ! EBCDIC => ASCII ! KEYOUTTAB = # ! 0 1 2 3 4 5 6 7 ! ! 0 ! 31 31 31 31 31 31 31 31 ! 8 ! 31 31 31 31 31 31 31 31 ! 16 ! 31 31 31 31 31 31 31 31 ! 24 ! 31 31 31 31 31 31 31 31 ! 32 ! 31 31 31 31 31 31 31 31 ! 40 ! 31 31 31 31 31 31 31 31 ! 48 ! 31 31 31 31 31 31 31 31 ! 56 ! 31 31 31 31 31 31 31 31 ! 64 ! 32 31 31 31 31 31 31 31 ! 72 ! 31 31 91 46 60 40 43 94 ! 80 ! 38 31 31 31 31 31 31 31 ! 88 ! 31 31 33 36 42 41 59 92 ! 96 ! 45 47 31 31 31 31 31 31 ! 104 ! 31 31 31 44 37 95 62 63 ! 112 ! 31 31 31 31 31 31 31 31 ! 120 ! 31 31 58 35 64 39 61 34 ! 128 ! 31 65 66 67 68 69 70 71 ! 136 ! 72 73 31 31 31 31 31 31 ! 144 ! 31 74 75 76 77 78 79 80 ! 152 ! 81 82 31 31 31 31 31 31 ! 160 ! 31 31 83 84 85 86 87 88 ! 168 ! 89 90 31 31 31 31 31 31 ! 176 ! 31 31 31 31 31 31 31 31 ! 184 ! 31 31 31 31 31 31 31 31 ! 192 ! 31 65 66 67 68 69 70 71 ! 200 ! 72 73 31 31 31 31 31 31 ! 208 ! 31 74 75 76 77 78 79 80 ! 216 ! 81 82 31 31 31 31 31 31 ! 224 ! 93 31 83 84 85 86 87 88 ! 232 ! 89 90 31 31 31 31 31 31 ! 240 ! 48 49 50 51 52 53 54 55 ! 248 ! 56 57 94 31 31 31 31 31 #; ! END KEYOUTTAB ! «ff» ! RC36-01047 PAGE 06 ! VAR OPSTRING: STRING(42); COM: RECORD TOTAL: STRING(20); MODE: STRING(1) FROM 1; UNIT: STRING(1) FROM 2; ACCEPT: STRING(1) FROM 3; VOLID: STRING(6) FROM 4; DATASET: STRING(8) FROM 10 END; BUF: INTEGER; SENDER: INTEGER; RESERVER: INTEGER; LABELCHECK: INTEGER; LENGTH: INTEGER; BADTRACK: INTEGER; BLOCKNO: INTEGER; SIZE: INTEGER; BOE: INTEGER; EOD: INTEGER; EOE: INTEGER; TRACKREL: INTEGER; SICKONE: INTEGER; SICKTWO: INTEGER; REJECT: INTEGER; COUNT: INTEGER; SEQUENCE: INTEGER; NEXTDATASET: INTEGER; HELP1: INTEGER; HELP2: INTEGER; UNIT : INTEGER; L1: INTEGER; L2: INTEGER; ! THIS SEQUENCE MUST NOT BE MOVED ! MESS0,MESS1,MESS2,MESS3: INTEGER; ANSW0,ANSW1,ANSW2,ANSW3: INTEGER; «ff» ! RC36-01047 PAGE 07 ! IN: FILE "FD0", 14, 2, 512, UB; GIVEUP INERROR, 8'141776 OF STRING(128); ABSCORE: FILE "ABS",2,1,1, U OF STRING(1); ! HANDLING OF ABSOLUT ADRESSES ! PROCEDURE P0039(VAR MESSAGE: INTEGER; SENDER, BUF: INTEGER); CODEBODY; PROCEDURE P0040(VAR ANSWER: INTEGER; VAR BUF: INTEGER); CODEBODY; PROCEDURE SENDOK; BEGIN ANSW0:=0; ANSW1:=0; END; PROCEDURE SETREJECT; BEGIN ANSW0:=B6; ANSW1:=0; END; PROCEDURE NEXTRECORD; BEGIN GETREC(IN,IN.ZSHAREL); CONVERT(IN^,IN^,KEYOUTTAB,80); END; PROCEDURE CHECKSIZE; BEGIN IF MESS1 < 512 THEN BEGIN IF MESS1 > 128 THEN GOTO 65; IN.ZSHAREL:=MESS1; IN.ZREM:=IN.ZSHAREL; IN.ZFORM:=U; END; END; «ff» ! RC36-01047 PAGE 08 ! PROCEDURE CHECKLABEL; BEGIN IN.ZFORM:=UB; IN.ZSHAREL:=128; IN.ZREM:=IN.ZSHAREL; IN.ZMODE:= UNIT * 256 + READNONSKIP + B10; TRANSFER(IN,0,UNIT*256); WAITTRANSFER(IN); SETPOSITION(IN,RESET,VOLLABEL); NEXTRECORD; IF IN^ <> VOL1 THEN BEGIN 4015: OPMESS(VOLERROR); GOTO 4040; END; IF COM.VOLID <> SPACES THEN BEGIN MOVE(IN^,4,OPSTRING,0,6); IF OPSTRING <> COM.VOLID THEN GOTO 4015; END; IF NEXTDATASET > 0 THEN BEGIN SETPOSITION(IN,RESET,NEXTDATASET); NEXTDATASET:=NEXTDATASET+1; END; 4020: NEXTRECORD; IF IN^ <> HDR1 THEN BEGIN IF NEXTDATASET > 9 THEN ! 9 MEANS SECTOR 9 IN CATALOG ! BEGIN NEXTDATASET:=0; GOTO 210; ! EOF FOR WHOLE DISC ! END; IF IN.ZBLOCK > 9 THEN GOTO 4025; OPMESS(HDRERROR); GOTO 4040; END; MOVE(IN^,5,OPSTRING,0,8); IF COM.DATASET <> SPACES THEN IF OPSTRING <> COM.DATASET THEN BEGIN IF IN.ZBLOCK < 27 THEN GOTO 4020; 4025: OPMESS(NAMEERROR); GOTO 4040; END; INSERT(0,OPSTRING,6); MOVE(IN^,22,OPSTRING,0,6); REPEAT MOVE(OPSTRING,1,OPSTRING,0,42) UNTIL BYTE OPSTRING > 32; DECBIN(OPSTRING,SIZE); IF SIZE <= 128 THEN IF SIZE > 0 THEN GOTO 4030; OPMESS(RECERROR); GOTO 4040; «ff» ! RC36-01047 PAGE 09 ! ! LABEL HANDLING CONTINUED ! 4030: INSERT(0,OPSTRING,2); MOVE(IN^,28,OPSTRING,0,2); DECBIN(OPSTRING,BOE ); BOE:=BOE*26 ; MOVE(IN^,31,OPSTRING,0,2); DECBIN(OPSTRING,LENGTH); BOE:=BOE+LENGTH; IF BOE < 27 THEN BEGIN OPMESS(BOEERROR); GOTO 4040; END; MOVE(IN^,74,OPSTRING,0,2); DECBIN(OPSTRING, EOD); EOD:=EOD * 26 ; MOVE(IN^,77,OPSTRING,0,2); DECBIN(OPSTRING, LENGTH); EOD:=EOD + LENGTH; MOVE(IN^,34,OPSTRING,0,2); DECBIN(OPSTRING, EOE); EOE:=EOE * 26 ; MOVE(IN^,37,OPSTRING,0,2); DECBIN(OPSTRING,LENGTH); EOE:=EOE + LENGTH; IF EOD < BOE THEN ! 77.12.13 ! BEGIN 4035: OPMESS(EODERROR); GOTO 4040; END; IF EOE > 2002 THEN GOTO 4035; IF EOE <= BOE THEN GOTO 4035; IF EOD > EOE+1 THEN GOTO 4035; IF NEXTDATASET = 0 THEN BEGIN IF COM.ACCEPT = SPACES THEN BEGIN MOVE(IN^,44,OPSTRING,0,1); IF OPSTRING = C THEN BEGIN SEQUENCE:=1; END; IF OPSTRING = L THEN BEGIN SEQUENCE:=0; END; END ELSE SEQUENCE:=0; IF SEQUENCE > 0 THEN IF OPSTRING <> C THEN GOTO 4070; END; «ff» ! RC36-01047 PAGE 10 ! ! LABEL HANDLING CONTINUED ! IN.ZSHAREL:=128; IN.ZREM:=IN.ZSHAREL; IN.ZMODE:=UNIT*256+READSKIP + B10; TRANSFER(IN,0,UNIT*256); WAITTRANSFER(IN); SICKONE:=0; SICKTWO:=0; BADTRACK:=0; TRACKREL:=RESET; SETPOSITION(IN,RESET,ERMAP); NEXTRECORD; INSERT(0,OPSTRING,2); MOVE(IN^,6,OPSTRING,0,2); DECBIN(OPSTRING,SICKONE); MOVE(IN^,10,OPSTRING,0,2); DECBIN(OPSTRING,SICKTWO); IF SICKONE <> 0 THEN BEGIN SICKONE:= SICKONE * 26+1; IF BOE >= SICKONE THEN BEGIN BOE:=BOE+26; EOD:=EOD+26; TRACKREL:=ERMAPONE; GOTO 4045; END; IF EOD >= SICKONE THEN BEGIN EOD:=EOD+26; BADTRACK:=TRUE; END; END; 4045: IF SICKTWO <> 0 THEN BEGIN SICKTWO:= SICKTWO * 26+1; IF BOE >= SICKTWO THEN BEGIN BOE:=BOE+26; EOD:=EOD+26; TRACKREL:=ERMAPTWO; GOTO 4047; END; IF EOD >= SICKTWO THEN BEGIN EOD:=EOD+26; BADTRACK:=TRUE; END; END; 4047: SETPOSITION(IN,TRACKREL,BOE); ANSW3:=1; LABELCHECK:=TRUE; SENDOK; IN.ZSHAREL:=512; IN.ZREM:=IN.ZSHAREL; IN.ZFORM:=UB; GOTO 4060; ! ********** LABEL WAS NOT CORRECT *******! 4070: OPMESS(SEQERROR); ANSW0:=B5; ! SEQUENCE ERROR ! ANSW1:=0; GOTO 4050; 4040: SETREJECT; 4050: INSERT(13,OPSTRING,40); INSERT(0,OPSTRING,41); SETPOSITION(IN,RESET,IN.ZBLOCK-1); NEXTRECORD; MOVE(IN^,0,OPSTRING,0,40); OPMESS(OPSTRING); MOVE(IN^,40,OPSTRING,0,40); OPMESS(OPSTRING); NEXTDATASET:=FALSE; LABELCHECK:=FALSE; CLOSE(IN,1); 4060: END; «ff» ! RC36-01047 PAGE 11 ! PROCEDURE NEWLABEL; BEGIN END; PROCEDURE UPDATE; BEGIN IF SICKONE <= IN.ZBLOCK THEN BEGIN SETPOSITION(IN,ERMAPONE,SICKONE+26); TRACKREL:=ERMAPONE; SICKONE:=ENOUGH; GOTO 300; END; IF SICKTWO <= IN.ZBLOCK THEN BEGIN SETPOSITION(IN,ERMAPTWO,SICKTWO+26); TRACKREL:=ERMAPTWO; SICKTWO:=ENOUGH; GOTO 300; END; END; PROCEDURE INERROR; BEGIN IF LABELCHECK = TRUE THEN BEGIN IF IN.ZBLOCK > EOD THEN GOTO 210; IF BADTRACK = TRUE THEN UPDATE; END; IF IN.Z0 AND 8'000052 <> 0 THEN BEGIN IF COUNT > 0 THEN BEGIN COUNT:=COUNT-1; REPEATSHARE(IN); END; END; IF IN.Z0 AND 8'137777 <> 0 THEN OPSTATUS(IN.Z0,STATUS); IF IN.Z0 AND 8'001004 <> 0 THEN BEGIN IN.ZMODE:=0; MOVE(ZERO,0,IN.ZNAME,2,1); END; COUNT:=REPEATNUMBER; REJECT:=IN.Z0 AND CLEANBITS; ANSW1:=0; ANSW0:=B6; IF IN.Z0 AND B1 <> 0 THEN ANSW0:=B1; IF IN.Z0 AND 8'000052 <> 0 THEN BEGIN ANSW0:=IN.ZBLOCK; IF IN.Z0 AND B10 <> 0 THEN ANSW0:=ANSW0-1; BINDEC(ANSW0,OPSTRING); OPMESS(RECORDNR); OPMESS(OPSTRING); ANSW0:=B14; END; GOTO 100; END; «ff» ! RC36-01047 PAGE 12 ! BEGIN ABSCORE.ZFIRST:=0; LABELCHECK:=0; RESERVER:=0; SEQUENCE:=0; TRACKREL:=0; HELP1:=0; COUNT:=REPEATNUMBER; 0: P0039(MESS0,SENDER,BUF); IF RESERVER<> 0 THEN IF SENDER <> RESERVER THEN GOTO 110; IF MESS0 AND B15 = 0 THEN BEGIN ! CONTROL MESSAGE ! REJECT:=FALSE; IF MESS0 AND B13 <> 0 THEN BEGIN IF MESS1 = 0 THEN BEGIN RESERVER:=0; IF IN.ZMODE <> 0 THEN CLOSE(IN,1); LABELCHECK:=FALSE; GOTO 205; END; END; IF MESS0 = B10 THEN BEGIN IF LABELCHECK = FALSE THEN GOTO 205; BLOCKNO:=MESS3 + BOE -1; !RELATIVE TO START OF FILE! IF BLOCKNO > EOD THEN BEGIN ANSW0:=B12; ANSW1:=0; GOTO 100; END; SETPOSITION(IN,TRACKREL,BLOCKNO); GOTO 205; END; IF MESS0 = BOPEN THEN IF MESS2 <> 0 THEN BEGIN MOVE(ABSCORE^,MESS2,COM,0,20); 190: LABELCHECK:=FALSE; RESERVER:=SENDER; UNIT:= BYTE COM.UNIT-48; NEXTDATASET:=0; IF COM.DATASET = SPACES THEN NEXTDATASET:=8; 200: CHECKLABEL; GOTO 100; END; IN.ZMODE:= UNIT*256+READSKIP + B10; TRANSFER(IN,0,UNIT*256); WAITTRANSFER(IN); 205: SENDOK; GOTO 100; END; «ff» ! RC36-01047 PAGE 13 ! ! TRANSPUT MESSAGE ! COUNT:=REPEATNUMBER; CHECKSIZE; IF REJECT <> FALSE THEN BEGIN ANSW0:=B15; ANSW1:=0; GOTO 100; END; IF MESS0 EXTRACT 2 = 3 THEN BEGIN ! PUTREC ! IF MESS1 > 512 THEN ! BLOCK LENGTH ERROR ! BEGIN 65: ANSW0:=B8; ANSW1:=0;; GOTO 100; END; IF LABELCHECK= FALSE THEN GOTO 110; IF MESS1 <= 0 THEN GOTO 80; ! PUTREC(OUT,MESS1); ! ! MOVE(ABSCORE^,MESS2,OUT^,0,MESS1); ! 80: SENDOK; GOTO 100; END; «ff» ! RC36-01047 PAGE 14 ! 290: IF LABELCHECK = FALSE THEN BEGIN IF NEXTDATASET > 0 THEN ! ERROR OCCURED DURING SWITCH ! BEGIN ! TO NEXT DATASET ! CHECKLABEL; GOTO 290; END; GOTO 110; END; IF MESS1 < SIZE THEN GOTO 65; ! BLOCK LENGTH ERROR ! 300: ! AS ACCEPT OF ERROR ! GETREC(IN,MESS1); IF IN.ZBLOCK > EOD THEN BEGIN ! ENTRY FOR EOF OR END MEDIUM ! HELP2:=IN.ZBLOCK; IF MESS1>128 THEN BEGIN HELP1:=MESS1-128*(HELP2-EOD); MOVE(IN^,0,ABSCORE^,MESS2,MESS1); END; 210: IF NEXTDATASET>0 THEN BEGIN LABELCHECK:=FALSE; CHECKLABEL; IF LABELCHECK=TRUE THEN BEGIN IF MESS1>128 THEN BEGIN L1:=BOE/26; L2:=BOE-L1*26; L2:=L2+HELP1/128; IF L2>26 THEN BEGIN L1:=L1+1; L2:=L2-26; END; BOE:=L1*26+L2; SETPOSITION(IN,TRACKREL,BOE); ANSW0:=0; ANSW1:=MESS1; GOTO 100; END ELSE BEGIN CHECKSIZE; GOTO 300; END; END; END; ANSW1:=0; REJECT:=B7; IF SEQUENCE > 0 THEN ANSW0:=B11 ELSE ANSW0:=B7; IF HELP1>0 THEN BEGIN ANSW1:=HELP1; HELP1:=0; END; GOTO 100; END; MOVE(IN^,0,ABSCORE^,MESS2,MESS1); ANSW0:=0; ANSW1:=MESS1; 100: ANSW3:=IN.ZBLOCK-BOE+1; ! RELATIVE POSITION ! P0040(ANSW0,BUF); GOTO 0; 110: NEXTDATASET:=0; SETREJECT; GOTO 100; END; «ff» «nul»