|
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 - download
Length: 22528 (0x5800) Types: TextFile Notes: RCSL-43-GL-8228, RCSL-43-GL-8229, RCSL-43-GL-8230 Names: »INCOD«
└─⟦a59f0a452⟧ Bits:30000472 DOMUS disk image └─⟦this⟧
«ff» MUSIL COMPILER 11 MAIN 0001 ! S1053 RCSL: 43-GL8229 0002 0003 AUTHOR: PBP 0004 0005 EDITED: 78.12.05 0006 0007 0008 0009 0010 0011 0012 0013 0014 0015 0016 0017 0018 0019 0020 0021 0022 0023 0024 0025 0026 0027 0028 0029 0030 PROGRAM RC36-01053.00 0031 0032 IBM 3740 DISKETTE PRINT IMAGE 0033 0034 0035 0036 0037 0038 0039 0040 0041 0042 0043 0044 0045 0046 0047 0048 0049 0050 KEYWORDS: MUSIL,CONVERSION,FD0,A3740,SP,LISTING 0051 0052 ABSTRACT: THIS PROGRAM HANDLES IBM 3740 FORMATTED DISKETTES. 0053 EACH SECTOR IS PRINTED AS ONE LINE. 0054 OUTPUT ON SERIAL PRINTER. 0055 THE PROGRAM MUST BE OPERATED FROM TTY. 0056 0057 RCSL 43-GL8228: ASCII SOURCE TAPE 0058 RCSL 43-GL8230: REL/BIN ! 0059 «ff» 0060 ! RC36-01053 PAGE 01 0061 0062 0063 TITLE: IBM 3740 DISKETTE PRINT IMAGE 0064 0065 ABSTRACT: THIS PROGRAM HANDLES IBM 3740 FORMATTED DISKETTES. 0066 EACH SECTOR IS PRINTED AS ONE LINE. 0067 OUTPUT ON SERIAL PRINTER. 0068 THE PROGRAM MUST BE OPERATED FROM TTY. 0069 0070 SIZE: 04152 BYTES. INCLUDING TWO 128 BYTES INPUT BUFFERS AND 0071 THREE 133 BYTES OUTPUT BUFFERS. 0072 0073 DATE: 78.12.05 0074 0075 RUNTIME PARAMETERS: 0076 0077 DATASET NAME : NAME OF DATASET TO BE PRINTED. 0078 IF THIS PARAMETER IS EMPTY ALL DATASETS ON 0079 THE DISKETTE WILL BE LISTED. 0080 0081 BLOCK NO : 1 NEXT BLOCK TO BE READ FROM DISKETTE. 0082 0083 LABELPRINT : - INDICATES IF DISKETTE LABELS SHOULD 0084 BE PRINTED OR NOT. 0085 0086 FD UNIT : UNIT NUMBER (0 - 1). 0087 0088 0089 OTHER OUTPUT MESSAGES: 0090 0091 PROG NO : 1053 PROGRAM EXECUTION IS STOPPED. 0092 0093 RUNNING PROGRAM EXECUTION IS STARTED. 0094 0095 SUSPENDED DRIVERS RELEASED, PROGRAM EXECUTION IS STOPPED. 0096 0097 SP ERROR NNNNN CONSULT THE RC3600 OPERATOR MANUAL. 0098 0099 FD ERROR NNNNN CONSULT THE RC3600 OPERATOR MANUAL. 0100 0101 MOUNT DISKETTE DISKETTE UNIT IS OFFLINE OR EMPTY. 0102 0103 MOUNT NEXT DISKETTE THE DATASET IS CONTINUING ON NEXT DISKETTE. 0104 0105 END JOB PROGRAM EXECUTION IS TERMINATED. 0106 0107 INPUT MESSAGES: 0108 0109 STOP STOPS EXECUTION WRITING PROG NO : 1053. 0110 0111 SUSPEND STOPS EXECUTION RELEASING DRIVERS (TTY ONLY). 0112 0113 <ESC> NEXT PARAMETER IS DISPLAYED 0114 0115 STATE ALL PARAMETERS ARE DISPLAYED (TTY ONLY). 0116 0117 "VALUE" CURRENTLY DISPLAYED PAPAMETER IS CHANGED 0118 TO "VALUE". 0119 0120 "TEXT"="VALUE" THE PARAMETER IDENTIFIED BY "TEXT" IS 0121 CHANGED TO "VALUE". 0122 0123 START PROGRAM EXECUTION IS STARTED. 0124 NOTE: AFTER A DEVICE ERROR STOP HAS NO 0125 EFFECT. 0126 0127 SPECIAL REQUIREMENTS: NONE. ! 0128 «ff» 0129 ! RC36-01053 PAGE 02 ! 0130 0131 CONST 0132 0133 NOQ= 5, 0134 0135 OPTXTS= 0136 '<10>PROG NO : 1053<0> 0137 <10>DATASET NAME : <0> 0138 <10>BLOCK NO : <0> 0139 <10>LABELPRINT : <0> 0140 <10>FDUNIT : <0>', 0141 0142 START= 'START', 0143 STOP= 'STOP', 0144 SUSPEND= 'SUSPEND', 0145 STATE= 'STATE', 0146 MINUS= '-', 0147 PLUS= '+', 0148 FIVE= '<5><0>', 0149 FIFTEEN= '<15><0>', 0150 NL= '<10><0>', 0151 NEXTPARAM= '<27>', 0152 ENDLINE= '<13><0>', 0153 BELL= '<7><7><7>', 0154 0155 RUNTXT= '<8><4><10>RUNNING<13><0>', 0156 SUSTXT= '<7><10>SUSPENDED<13><10>', 0157 FDTXT= '<7><10>FD ERROR ', 0158 LPTXT= '<7><10>SP ERROR ', 0159 EOJTXT= '<14><7><10>END JOB<13><0>', 0160 MOUNTDISK= '<7><10>MOUNT DISKETTE<13><0>', 0161 FDEOF= '<7><10>MOUNT NEXT DISKETTE<13><0>', 0162 WRONGUNIT= '<7><10>FD UNIT CONFLICT<13><0>', 0163 INITINF= '<0><0><0><0><0><0><0><0><0><0><0><0><0><0><0><0><0><0><0><0>', 0164 0165 0166 READ= 8'122, 0167 ZERO= 8'60, 0168 0169 D3740= 'A3740', 0170 FD0= 'FD0<0><0>', 0171 TRUE= -1, 0172 FALSE= -2, 0173 0174 FF= '<143>', 0175 SP1A= '<9>', 0176 SP2A= '<17>', 0177 0178 ASCIISPS= ' ', 0179 «ff» 0180 0181 ! SPECIAL TABLE POST & TELEGRAFVAESNET ! 0182 ! RC36-01053 PAGE 03 ! 0183 LPTABLE=# 0184 0185 32 32 32 32 32 32 32 32 0186 32 32 32 32 32 32 32 32 0187 32 32 32 32 32 32 32 32 0188 32 32 32 32 32 32 32 32 0189 32 32 32 32 32 32 32 32 0190 32 32 32 32 32 32 32 32 0191 32 32 32 32 32 32 32 32 0192 32 32 32 32 32 32 32 32 0193 32 32 32 32 32 32 32 32 0194 32 32 32 46 60 40 43 85 0195 38 32 32 32 32 32 32 32 0196 32 32 33 93 42 41 59 32 0197 45 47 32 32 32 32 32 32 0198 32 32 32 44 37 95 62 63 0199 32 32 32 32 32 32 32 32 0200 32 32 58 91 92 39 61 34 0201 32 65 66 67 68 69 70 71 0202 72 73 32 32 32 32 32 32 0203 32 74 75 76 77 78 79 80 0204 81 82 32 32 32 32 32 32 0205 32 32 83 84 85 86 87 88 0206 89 90 32 32 32 32 32 32 0207 32 32 32 32 32 32 32 32 0208 32 32 32 32 32 32 32 32 0209 32 65 66 67 68 69 70 71 0210 72 73 32 32 32 32 32 32 0211 32 74 75 76 77 78 79 80 0212 81 82 32 32 32 32 32 32 0213 32 32 83 84 85 86 87 88 0214 89 90 32 32 32 32 32 32 0215 48 49 50 51 52 53 54 55 0216 56 57 94 32 32 32 32 32 0217 0218 #, 0219 «ff» 0220 ! RC36-01053 PAGE 04 ! 0221 0222 0223 ! ASCII TO EBCDIC CONVERSION TABLE : ! 0224 0225 AETAB= ! 0 1 2 3 4 5 6 7! 0226 # 0227 ! 0 ! 64 64 64 64 64 64 64 64 0228 ! 8 ! 64 64 64 64 64 64 64 64 0229 ! 16 ! 64 64 64 64 64 64 64 64 0230 ! 24 ! 64 64 64 64 64 64 64 64 0231 ! 32 ! 64 90 127 123 91 108 80 125 0232 ! 40 ! 77 93 92 78 107 96 75 97 0233 ! 48 ! 240 241 242 243 244 245 246 247 0234 ! 56 ! 248 249 122 94 76 126 110 111 0235 ! 64 ! 124 193 194 195 196 197 198 199 0236 ! 72 ! 200 201 209 210 211 212 213 214 0237 ! 80 ! 215 216 217 226 227 228 229 230 0238 ! 88 ! 231 232 233 173 224 189 250 109 0239 ! 96 ! 121 129 130 131 132 133 134 135 0240 ! 104 ! 136 137 145 146 147 148 149 150 0241 ! 112 ! 151 152 153 162 163 164 165 166 0242 ! 120 ! 167 168 169 192 106 208 161 7 0243 #; 0244 «ff» 0245 ! RC36-01053 PAGE 05 ! 0246 0247 VAR 0248 0249 0250 OPDUMMY: STRING(2); ! RUNTIME PARAMETERS ! 0251 PROGNO: INTEGER; 0252 TPAR1: INTEGER; 0253 INBLOK: INTEGER; 0254 LABELPRINT: INTEGER; 0255 FDUNIT: INTEGER; 0256 0257 OPTEXT: STRING(80); ! COMMUNICATION AREA ! 0258 OPSTRING: STRING(80); 0259 OPDEC: STRING(10); 0260 0261 OPCONT: STRING(2); ! INTERNAL VARIABLES ! 0262 NEXTCONT: STRING(1); ! USED BY STANDARD ! 0263 GLCONT: STRING(1); ! PROCEDURES. ! 0264 ERRORNO: INTEGER; 0265 MASK: INTEGER; 0266 TOM: INTEGER; 0267 SIGN: INTEGER; 0268 Q: INTEGER; 0269 PAR: INTEGER; 0270 LENGTH: INTEGER; 0271 P1: INTEGER; 0272 P2: INTEGER; 0273 P3: INTEGER; 0274 S1: STRING(2); 0275 S2: STRING(2); 0276 0277 NEXTLP: INTEGER; 0278 SAVEZCONV: INTEGER; 0279 BLOCKNO: INTEGER; 0280 STOPPED: INTEGER; 0281 RECLENGTH: INTEGER; 0282 SEQCHECK: INTEGER; 0283 INDEX: INTEGER; 0284 OFFLINE: INTEGER; 0285 0286 STR3740: STRING(18); 0287 0288 0289 DATASETNAME: STRING(9); 0290 «ff» 0291 ! RC36-01053 PAGE 06 ! 0292 0293 IN: FILE ! INPUT FILE DESCRIPTION ! 0294 'A3740', ! NAME OF INPUT DRIVER ! 0295 14, ! KIND= BLOCKED, ! 0296 ! REPEATABLE, ! 0297 ! POSITIONABLE, ! 0298 2, ! BUFFERS ! 0299 128, ! SHARESIZE ! 0300 U; ! UNDEFINED ! 0301 CONV STR3740; 0302 GIVEUP 0303 RDERROR, ! FD ERROR PROCEDURE ! 0304 2'1110001111111110 ! GIVE UP MASK ! 0305 0306 OF STRING(128); ! RECORD STRUCTURE ! 0307 0308 0309 OUT: FILE ! OUTPUT FILE DESCRIPTION ! 0310 'SP', ! NAME OF OUTPUT DRIVER ! 0311 2, ! KIND= BLOCKED ! 0312 3, ! BUFFERS ! 0313 133, ! SHARESIZE ! 0314 U; ! UNDEFINED ! 0315 0316 CONV LPTABLE; 0317 0318 GIVEUP 0319 LPERROR, ! LP ERROR PROCEDURE ! 0320 2'1100001011110110 ! GIVE UP MASK ! 0321 0322 OF RECORD ! RECORD STRUCTURE ! 0323 CCW: STRING(1); 0324 DATA: STRING(132) 0325 END; 0326 0327 «ff» 0328 ! RC36-01053 PAGE 07 ! 0329 0330 0331 PROCEDURE OPSTOP; 0332 BEGIN 0333 OPWAIT(LENGTH); 0334 OPTEXT:=OPSTRING; 0335 OPIN(OPSTRING); 0336 STOPPED:= 0; 0337 IF OPTEXT=STOP THEN STOPPED:= 1; 0338 IF OPTEXT=START THEN STOPPED:= 2; 0339 IF OPTEXT=SUSPEND THEN STOPPED:=3; 0340 END; 0341 0342 0343 PROCEDURE OPEN3740; 0344 BEGIN 0345 ! TRANSFER VOL-ID + DATASETNAME + INFORMATION ! 0346 ! ABOUT CHECK OF SEQUENCE-NUMBER ON ! 0347 ! MULTI-VOLUME-DATASETS ! 0348 0349 0350 STR3740:=ASCIISPS; 0351 INSERT(READ,STR3740,0); 0352 INSERT(FDUNIT+48,STR3740,1); 0353 MOVE(ASCIISPS,0,STR3740,3,6); 0354 MOVE(DATASETNAME,0,STR3740,9,8); 0355 CONVERT(STR3740,STR3740,AETAB,18); 0356 CONVERT(STR3740,STR3740,LPTABLE,18); 0357 0358 OPEN(IN,1); 0359 END; 0360 0361 «ff» 0362 ! RC 36-01053 PAGE 08 ! 0363 0364 PROCEDURE DIRECTUPDATE; 0365 BEGIN 0366 P1:=0; ! INDEX IN INPUT STRING ! 0367 P2:=0; ! INDEX IN CONSTANT STRING ! 0368 P3:=1; ! PARAMETER NUMBER IN CONSTANT STRING ! 0369 REPEAT BEGIN 0370 MOVE(OPTEXT,P1,S1,0,1); 0371 MOVE(OPTXTS,P2,S2,0,1); 0372 WHILE BYTE S1 <> BYTE S2 DO 0373 BEGIN 0374 IF BYTE S2 = 0 THEN P3:=P3+1; 0375 P2:=P2+1; 0376 MOVE(OPTXTS,P2,S2,0,1); 0377 IF P3>NOQ THEN S2:=S1; 0378 END; 0379 IF P3<=NOQ THEN 0380 BEGIN 0381 WHILE BYTE S1 = BYTE S2 DO 0382 BEGIN 0383 P1:=P1+1; 0384 P2:=P2+1; 0385 MOVE(OPTEXT,P1,S1,0,1); 0386 MOVE(OPTXTS,P2,S2,0,1); 0387 IF BYTE S1 = 61 THEN 0388 BEGIN 0389 MOVE(OPTEXT,P1+1,OPTEXT,0,20); 0390 LENGTH:=LENGTH-P1-1; 0391 Q:=P3; 0392 MOVE(OPDUMMY,Q*2,OPDUMMY,0,2); 0393 PAR:= WORD OPDUMMY; 0394 P3:=NOQ; 0395 END; 0396 END; 0397 P2:=P2-P1+1; 0398 P1:=0; 0399 END; 0400 END UNTIL P3>=NOQ; 0401 END; 0402 «ff» 0403 ! RC36-001053 PAGE 09 ! 0404 PROCEDURE OPCOM; 0405 BEGIN 0406 1000: Q:=0; 0407 1010: REPEAT BEGIN 0408 IF OPTEXT=STATE THEN 0409 BEGIN Q:=1; 0410 GOTO 1040; 0411 END; 0412 1015: Q:=Q+1; 0413 1020: OPSTATUS(1 SHIFT(16-Q),OPTXTS); IF Q<>1 THEN BEGIN 0414 MOVE(OPDUMMY,Q*2,OPDUMMY,0,2); 0415 PAR:= WORD OPDUMMY; 0416 IF PAR = -1 THEN OPMESS(PLUS); 0417 IF PAR = -2 THEN OPMESS(MINUS); 0418 IF PAR = -3 THEN OPMESS(DATASETNAME); 0419 IF PAR >= 0 THEN 0420 BEGIN BINDEC(PAR,OPDEC); OPMESS(OPDEC); END; END; 0421 IF OPTEXT=STATE THEN GOTO 1060; 0422 1040: OPMESS(ENDLINE); 0423 OPWAIT(LENGTH); 0424 OPTEXT:=OPSTRING; 0425 OPIN(OPSTRING); 0426 IF OPTEXT=STATE THEN BEGIN Q:=0; GOTO 1015; END; 0427 IF OPTEXT=SUSPEND THEN GOTO 12; 0428 IF LENGTH > 6 THEN DIRECTUPDATE; 0429 IF OPTEXT = START THEN GOTO 1070; 0430 IF OPTEXT = STOP THEN GOTO 1000; 0431 IF OPTEXT = NEXTPARAM THEN GOTO 1060; 0432 IF OPTEXT = NL THEN GOTO 1020; 0433 IF OPTEXT = ENDLINE THEN GOTO 1020; 0434 IF PAR = -3 THEN 0435 BEGIN 0436 IF LENGTH >9 THEN LENGTH:=9; 0437 DATASETNAME:=INITINF; 0438 MOVE(OPTEXT,0,DATASETNAME,0,LENGTH-1); 0439 GOTO 1055; 0440 END; 0441 SIGN:=0; 0442 IF OPTEXT = MINUS THEN SIGN:=-1; 0443 IF OPTEXT = PLUS THEN SIGN:=+1; 0444 IF SIGN <> 0 THEN INSERT(48,OPTEXT,0); 0445 DECBIN(OPTEXT,TOM); 0446 IF PAR < 0 THEN 0447 BEGIN IF SIGN=0 THEN GOTO 1020; PAR:=-2; 0448 IF SIGN=1 THEN PAR:=-1; GOTO 1050; 0449 END; 0450 IF SIGN=0 THEN 0451 BEGIN SIGN:=1; PAR:=0; END; 0452 PAR:=PAR+TOM*SIGN; 0453 IF PAR<0 THEN GOTO 1020; 0454 1050: INSERT(PAR SHIFT(-8),OPDUMMY,0); 0455 INSERT(PAR, OPDUMMY,1); 0456 MOVE(OPDUMMY,0,OPDUMMY,Q*2,2); 0457 1055: IF OPTEST <> 0 THEN GOTO 1040; 0458 GOTO 1020; 0459 1060: IF OPTEXT=STATE THEN IF Q<NOQ THEN GOTO 1015; 0460 END UNTIL Q>=NOQ; GOTO 1000; 0461 1070: OPMESS(RUNTXT); 0462 END; 0463 «ff» 0464 0465 ! RC36-01053 PAGE 10 ! 0466 0467 PROCEDURE SHOWERROR; 0468 BEGIN 0469 ERRORNO:=20; 0470 WHILE MASK>0 DO 0471 BEGIN 0472 MASK:=MASK SHIFT 1; 0473 ERRORNO:=ERRORNO+1 0474 END; 0475 BINDEC(ERRORNO,OPTEXT); 0476 OPMESS(OPTEXT); OPMESS(ENDLINE); 0477 END; 0478 0479 0480 PROCEDURE RDERROR; 0481 BEGIN 0482 IF IN.Z0 AND 8'4000 <> 0 THEN OPMESS(PLUS); 0483 IF IN.Z0 SHIFT 1 < 0 THEN 0484 BEGIN 0485 OFFLINE:=OFFLINE-1; 0486 IF OFFLINE > 0 THEN REPEATSHARE(IN); 0487 OPMESS(MOUNTDISK); 0488 OFFLINE:=5; 0489 END; 0490 IF IN.Z0 AND 8'400 <> 0 THEN GOTO 9; 0491 IF IN.Z0 AND 8'20 <> 0 THEN GOTO 10; 0492 0493 IF IN.Z0 SHIFT 1 > 0 THEN 0494 BEGIN 0495 OPMESS(FDTXT); 0496 MASK:=IN.Z0; 0497 SHOWERROR; 0498 END; 0499 REPEAT OPSTOP; 0500 IF OPTEXT = STOP THEN GOTO 1; 0501 IF OPTEXT = SUSPEND THEN GOTO 12 0502 UNTIL OPTEXT = START; 0503 100: OPMESS(RUNTXT); 0504 REPEATSHARE(IN); 0505 0506 END; 0507 «ff» 0508 0509 ! RC36-01053 PAGE 11 ! 0510 0511 PROCEDURE LPERROR; 0512 BEGIN 0513 NEXTLP:= OUT.Z0 AND 8'000020; 0514 OUT.Z0:= OUT.Z0 - NEXTLP; 0515 IF OUT.Z0 SHIFT 1 < 0 THEN OUT.Z0:= OUT.Z0 AND 8'041342; 0516 IF OUT.Z0 = 8'040000 THEN IF NEXTLP <> 0 THEN 0517 OUT.Z0:= NEXTLP; 0518 IF OUT.Z0 AND 8'001342 <> 0 THEN 0519 OUT.Z0:= OUT.Z0 AND 8'001342; 0520 IF OUT.Z0 <> 0 THEN 0521 BEGIN 0522 OPMESS(LPTXT); 0523 MASK:=OUT.Z0; 0524 SHOWERROR; 0525 NEXTLP:=0; 0526 REPEAT OPSTOP UNTIL STOPPED > 1; 0527 IF STOPPED = 3 THEN GOTO 12; 0528 OPMESS(RUNTXT); 0529 IF OUT.Z0 AND 8'141362 <> 0 THEN 0530 REPEATSHARE(OUT); 0531 END; 0532 END; 0533 0534 PROCEDURE INITPOSITION; 0535 BEGIN 0536 IF OUT.ZMODE = 0 THEN 0537 BEGIN 0538 OPEN(OUT,7); 0539 PUTREC(OUT,1); 0540 OUT^.CCW:=FF; 0541 END; 0542 IF FDUNIT >=0 THEN IF FDUNIT <=1 THEN GOTO 200; 0543 OPMESS(WRONGUNIT); 0544 REPEAT OPSTOP UNTIL STOPPED <>0; 0545 IF STOPPED = 1 THEN GOTO 1; 0546 IF STOPPED = 3 THEN GOTO 12; 0547 0548 0549 200: END; 0550 0551 0552 «ff» 0553 0554 ! RC36-01053 PAGE 12 ! 0555 0556 0557 BEGIN 0558 0559 !INITIALIZATION ! 0560 0561 OPIN(OPSTRING); 0562 DATASETNAME:=INITINF; 0563 TPAR1:=-3; 0564 INBLOK:=1; 0565 BLOCKNO:=1; 0566 LABELPRINT:=FALSE; 0567 OFFLINE:=5; 0568 SAVEZCONV:=IN.ZCONV; 0569 FDUNIT:=0; 0570 0571 0572 1: OPCOM; 0573 0574 2: INITPOSITION; 0575 ! MAIN LOOP ! 0576 IF LABELPRINT = TRUE THEN 0577 BEGIN 0578 IF IN.ZMODE = 0 THEN 0579 BEGIN 0580 IN.ZNAME:=FD0; 0581 IN.ZCONV:=0; 0582 OPEN(IN,FDUNIT*256+17); 0583 SETPOSITION(IN,0,7); 0584 0585 0586 REPEAT 0587 BEGIN 0588 GETREC(IN,RECLENGTH); 0589 BLOCKNO:=IN.ZBLOCK; 0590 PUTREC(OUT,81); 0591 OUT^.CCW:=SP2A; 0592 MOVE(IN^,0,OUT^.DATA,0,80); 0593 END 0594 UNTIL BLOCKNO > 26; 0595 0596 0597 CLOSE(IN,1); 0598 CLOSE(OUT,0); 0599 END; 0600 END; ! LABELPRINT ! 0601 0602 0603 «ff» 0604 0605 ! RC36-01053 PAGE 13 ! 0606 0607 0608 ! DATA PRINT ! 0609 0610 3: IN.ZNAME := D3740; 0611 IN.ZCONV:=SAVEZCONV; 0612 IF IN.ZMODE = 0 THEN OPEN3740; 0613 0614 SETPOSITION(IN, 0, INBLOK); 0615 INITPOSITION; 0616 0617 7: REPEAT 0618 BEGIN 0619 IF IN.Z0 AND 8'4000 <> 0 THEN OPMESS(START): 0620 GETREC(IN,RECLENGTH); *** ERR: 000064 0621 INBLOK:=IN.ZBLOCK; 0622 PUTREC(OUT,RECLENGTH+1); 0623 OUT^.CCW:=SP1A; 0624 MOVE(IN^,0,OUT^.DATA,0,RECLENGTH); 0625 END 0626 UNTIL OPTEST <> 0; 0627 0628 OPSTOP; 0629 IF STOPPED = 1 THEN GOTO 1; 0630 IF STOPPED = 3 THEN GOTO 12; 0631 GOTO 7; 0632 0633 ! END OF FILE HANDELING ! 0634 0635 10: CLOSE(IN,1); 0636 OPMESS(FDEOF); 0637 REPEAT OPSTOP UNTIL STOPPED <> 0; 0638 IF STOPPED = 1 THEN GOTO 1; 0639 IF STOPPED = 3 THEN GOTO 12; 0640 OPMESS(RUNTXT); 0641 INBLOK:=1; 0642 GOTO 3; 0643 0644 0645 9: OPMESS(EOJTXT); 0646 GOTO 13; 0647 0648 12: OUT.ZMODE:=0; 0649 OPMESS(SUSTXT); 0650 0651 13: CLOSE(IN,1); 0652 CLOSE(OUT,1); 0653 BLOCKNO:=1; 0654 INBLOK:=1; 0655 OFFLINE:=5; 0656 0657 REPEAT OPSTOP UNTIL STOPPED <> 0; 0658 IF STOPPED = 1 THEN GOTO 1; 0659 IF STOPPED = 3 THEN GOTO 12; 0660 OPMESS(RUNTXT); 0661 GOTO 2; 0662 0663 END; ERRORS: 00001 «ff» «eof»