|
|
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-1519, RCSL-43-GL-8808, RCSL-43-GL-8809, RCSL-43-GL-8810
Names: »S699«
└─⟦a59f0a452⟧ Bits:30000472 DOMUS disk image
└─⟦this⟧ »/S699«
S699! RCSL: 43-GL8809
AUTHOR: PBP
EDITED: 79.03.20
PROGRAM RC36-00699.01
HEXADECIMAL PRINT
KEYWORDS: MUSIL,CONVERSION,MTA,LPT,LISTING
ABSTRACT: THIS PROGRAM HANDLES UNDEFINED LENGTH FORMAT
INPUT, WITH A MAXIMUM BLOCK SIZE OF 4096 BYTES.
OUTPUT ON SERIAL PRINTER.
THE PROGRAM USES CODEPROCEDURE CHANGETABLE.
THE PROGRAM MAY BE OPERATED FROM EITHER OCP OR TTY.
RCSL: 43-GL8808 ASCII SOURCE
RCSL: 43-GL8810 REL.BIN/TTY
!
«ff»
! RC36-00699 PAGE 01
TITLE: HEXADECIMAL PRINT
ABSTRACT: THIS PROGRAM HANDLES UNDEFINED LENGTH FORMAT INPUT,
WITH A MAXIMUM BLOCK SIZE OF 4096 BYTES. OUTPUT ON
SERIAL PRINTER.
THE PROGRAM USES CODEPROCEDURE CHANGETABLE.
THE PROGRAM MAY BE OPERATED FROM EITHER OCP OR TTY.
SIZE: 9606 BYTES. INCLUDING ONE 4096 BYTES INPUT BUFFER
AND EIGHT 134 BYTES OUTPUT BUFFER.
DATE: NOVEMBER 1ST 1977.
RUNTIME PARAMETERS:
BLOCK NO : 00001 NEXT BLOCK TO BE READ FROM CURRENT FILE.
FILE NO : 00001 THE FILE FROM WHICH THE BLOCK IS READ.
REWIND : + INDICATES IF REWIND AT TAPEMARK.
RECSIZE : 00080 LENGTH OF INPUT RECORD.
PRINT LGT: 00120 LENGTH OF OUTPUT RECORD WITHOUT THE PROGRAM
GENERATED STANDARD TEXTS OF 12 BYTES.
00001 <= PRINT LGT <= 120.
NEWPAGE : 00000 INDICATES PAGE SHIFT AFTER EACH
"NEWPAGE" PRINTED LINES.
00000 <= NEWPAGE <= 00099.
NEWPAGE = 0 MEANS NO PAGE SHIFT.
MARGIN : 00000 SPACES TO THE LEFT OF THE PRINT LINE.
OTHER OUTPUT MESSAGES:
CONTSTATE: +/- STATE OF CONTINUE SWITCH (TTY ONLY).
PROG NO : 699 PROGRAM EXECUTION IS STOPPED.
RUNNING PROGRAM EXECUTION IS STARTED.
SUSPENDED DRIVERS RELEASED, PROGRAM EXECUTION IS STOPPED.
MOUNT DATA TAPE MT-UNIT IS NOT ON-LINE.
MT ERROR NNNNN CONSULT THE RC3600 OPERATORS MANUAL.
LP ERROR NNNNN CONSULT THE RC3600 OPERATORS MANUAL.
END JOB PROGRAM EXECUTION IS TERMINATED.
INPUT MESSAGES:
STOP STOPS EXECUTION WRITING PROG NO : 699.
SUSPEND STOPS EXECUTION RELEASING DRIVERS (TTY ONLY).
INT NEXT PARAMETER IS DISPLAYED
(ESCAPE BUTTON ON TTY HAS SAME EFFECT).
STATE ALL PARAMETERS ARE DISPLAYED (TTY ONLY).
"VALUE" CURRENTLY DISPLAYED PARAMETER IS CHANGED
TO "VALUE".
"TEXT"="VALUE" THE PARAMETER IDENTIFIED BY "TEXT" IS
CHANGED TO "VALUE".
CONT STATE OF CONTINUE SWITCH IS INVERTED.
START PROGRAM EXECUTION IS STARTED.
NOTE: AFTER MT ERROR, START MEANS ACCEPTING
THE ERRONEOUS INPUT, AFTER LP ERROR, START
MEANS REPEATING THE PRINT OPERATION.
SPECIAL REQUIREMENTS: CODEPROCEDURE CHANGETABLE RCSL: 43-GL1519
!
«ff»
! RC36-00699 PAGE 02 !
CONST
NOQ= 8,
OPTXTS=
'<14><6>
<10>PROG NO : 699<0>
<10>BLOCK NO : <0>
<10>FILE NO : <0>
<10>REWIND : <0>
<10>RECSIZE : <0>
<10>PRINT LGT: <0>
<10>NEWPAGE : <0>
<10>MARGIN : <0>',
START= 'START',
STOP= 'STOP',
SUSPEND= 'SUSPEND',
CONT= 'CONT',
INT= 'INT',
STATE= 'STATE',
TABNAME= 'IBMLP',
MINUS= '-',
PLUS= '+',
FIVE= '<5><0>',
FIFTEEN= '<15><0>',
NL= '<10>',
NEXTPARAM= '<27>',
SK1B= '<143>',
SP1B= '<15>',
SP2B= '<23>',
ENDLINE= '<13><0>',
RETURN= '<13>',
RUNTXT= '<16><4><10>RUNNING<13><0>',
MTTXT= '<7><10>MT ERROR ',
LPTXT= '<7><10>LP ERROR ',
EOJTXT= '<14><7><10>END JOB<13><0>',
SUSTXT= '<7><10>SUSPENDED<13><0>',
MTMOUNTTAPE= '<14><7><10>MOUNT DATA TAPE<13><0>',
CONTSTATE= '<10>CONTSTATE: <0>',
«ff»
! RC36-00699 PAGE 03 !
HEADING=
'<217><195><243><246><240><240><64><64>
<200><197><231><193><196><197>
<195><201><212><193><211><64><215><217><201><213>
<227><64><64><64><64><64>',
PAGETXT=
'<215><193><199><197>',
BLOCKTXT=
'<194><211><214><195><210><226><201><233><197><64><64>
<64><64><64><64><64><64><64><64><64><64><64><64>
<194><211><214><195><210><213><228><212><194><197><217>
<64><64><64><64><64><64><64><64><64><64><64><64><64><64>
<198><201><211><197><213><228><212><194><197><217>
<64><64><64><64><64><64>',
RECTXT=
'<217><197><195><211><197><213><199><227><200>',
POSTXT=
'<64><64><64><64><64><64><64><64><64><64><64><64>
<241><75><75><75><92><75><75><75><241><240>
<075><75><75><75><92><75><75><75><242><240>
<075><75><75><75><92><75><75><75><243><240>
<075><75><75><75><92><75><75><75><244><240>
<075><75><75><75><92><75><75><75><245><240>
<075><75><75><75><92><75><75><75><246><240>
<075><75><75><75><92><75><75><75><247><240>
<075><75><75><75><92><75><75><75><248><240>
<075><75><75><75><92><75><75><75><249><240>
<075><75><75><75><92><75><75><241><240><240>
<075><75><75><75><92><75><75><241><241><240>
<075><75><75><75><92><75><75><241><242><240>',
ZONETXT=
'<64><64><64><64><64><64><64><233><214><213><197><64>',
NUMRTXT=
'<64><64><64><64><64><64><64><213><228><212><217><64>',
CHARTXT=
'<64><64><64><64><64><64><64><195><200><193><217><64>',
«ff»
! RC36-00699 PAGE 04 !
ZONETAB=
! 0 1 2 3 4 5 6 7 8 9 !
#
! 0 ! 240 240 240 240 240 240 240 240 240 240
! 10 ! 240 240 240 240 240 240 241 241 241 241
! 20 ! 241 241 241 241 241 241 241 241 241 241
! 30 ! 241 241 242 242 242 242 242 242 242 242
! 40 ! 242 242 242 242 242 242 242 242 243 243
! 50 ! 243 243 243 243 243 243 243 243 243 243
! 60 ! 243 243 243 243 244 244 244 244 244 244
! 70 ! 244 244 244 244 244 244 244 244 244 244
! 80 ! 245 245 245 245 245 245 245 245 245 245
! 90 ! 245 245 245 245 245 245 246 246 246 246
! 100 ! 246 246 246 246 246 246 246 246 246 246
! 110 ! 246 246 247 247 247 247 247 247 247 247
! 120 ! 247 247 247 247 247 247 247 247 248 248
! 130 ! 248 248 248 248 248 248 248 248 248 248
! 140 ! 248 248 248 248 249 249 249 249 249 249
! 150 ! 249 249 249 249 249 249 249 249 249 249
! 160 ! 193 193 193 193 193 193 193 193 193 193
! 170 ! 193 193 193 193 193 193 194 194 194 194
! 180 ! 194 194 194 194 194 194 194 194 194 194
! 190 ! 194 194 195 195 195 195 195 195 195 195
! 200 ! 195 195 195 195 195 195 195 195 196 196
! 210 ! 196 196 196 196 196 196 196 196 196 196
! 220 ! 196 196 196 196 197 197 197 197 197 197
! 230 ! 197 197 197 197 197 197 197 197 197 197
! 240 ! 198 198 198 198 198 198 198 198 198 198
! 250 ! 198 198 198 198 198 198
#,
NUMRTAB=
! 0 1 2 3 4 5 6 7 8 9 !
#
! 0 ! 240 241 242 243 244 245 246 247 248 249
! 10 ! 193 194 195 196 197 198 240 241 242 243
! 20 ! 244 245 246 247 248 249 193 194 195 196
! 30 ! 197 198 240 241 242 243 244 245 246 247
! 40 ! 248 249 193 194 195 196 197 198 240 241
! 50 ! 242 243 244 245 246 247 248 249 193 194
! 60 ! 195 196 197 198 240 241 242 243 244 245
! 70 ! 246 247 248 249 193 194 195 196 197 198
! 80 ! 240 241 242 243 244 245 246 247 248 249
! 90 ! 193 194 195 196 197 198 240 241 242 243
! 100 ! 244 245 246 247 248 249 193 194 195 196
! 110 ! 197 198 240 241 242 243 244 245 246 247
! 120 ! 248 249 193 194 195 196 197 198 240 241
! 130 ! 242 243 244 245 246 247 248 249 193 194
! 140 ! 195 196 197 198 240 241 242 243 244 245
! 150 ! 246 247 248 249 193 194 195 196 197 198
! 160 ! 240 241 242 243 244 245 246 247 248 249
! 170 ! 193 194 195 196 197 198 240 241 242 243
! 180 ! 244 245 246 247 248 249 193 194 195 196
! 190 ! 197 198 240 241 242 243 244 245 246 247
! 200 ! 248 249 193 194 195 196 197 198 240 241
! 210 ! 242 243 244 245 246 247 248 249 193 194
! 220 ! 195 196 197 198 240 241 242 243 244 245
! 230 ! 246 247 248 249 193 194 195 196 197 198
! 240 ! 240 241 242 243 244 245 246 247 248 249
! 250 ! 193 194 195 196 197 198
#;
«ff»
! RC36-00699 PAGE 05 !
VAR
OPDUMMY: STRING(2); ! RUNTIME PARAMETERS !
PROGNO: INTEGER;
BLOCKNO: INTEGER;
FILENO: INTEGER;
REWIND: INTEGER;
RECSIZE: INTEGER;
PRINTLENGTH: INTEGER;
NEWPAGE: INTEGER;
MARGIN: INTEGER;
OPTEXT: STRING(20); ! COMMUNICATION AREA !
OPSTRING: STRING(20);
OPDEC: STRING(10);
OPCONT: STRING(2); ! INTERNAL VARIABLES !
NEXTCONT: STRING(2);
GLCONT: STRING(2);
ERRORNO: INTEGER;
MASK: INTEGER;
TOM: INTEGER;
SIGN: INTEGER;
Q: INTEGER;
PAR: INTEGER;
LENGTH: INTEGER;
LPLENGTH: INTEGER;
P1: INTEGER;
P2: INTEGER;
P3: INTEGER;
S1: STRING(2);
S2: STRING(2);
NEXTLP: INTEGER;
STOPPED: INTEGER;
BLOCKREM: INTEGER;
BLOCKCHANGE: INTEGER;
RECREM: INTEGER;
RECCHANGE: INTEGER;
LINES: INTEGER;
PAGE: INTEGER;
COUNT: INTEGER;
PARAM: INTEGER;
NOBY: INTEGER;
REMAIN: INTEGER;
DIGITS: STRING(6);
«ff»
! RC36-00699 PAGE 06 !
IN: FILE ! INPUT FILE DESCRIPTION !
'MT0', ! NAME OF INPUT DRIVER !
14, ! KIND= REPEATABLE, !
! POSITIONABLE, !
! BLOCKED. !
1, ! BUFFERS !
4096, ! SHARESIZE !
U; ! UNDEFINED !
GIVEUP
MTERROR, ! MT ERROR PROCEDURE !
2'0110001111011011 ! GIVE UP MASK !
! ALL REPEATABLE BITS OFF !
! AND BIT 15 ON !
OF RECORD
INPUT: STRING(4096)
END;
OUT: FILE ! OUTPUT FILE DESCRIPTION !
'SP', ! NAME OF OUTPUT DRIVER !
2, ! KIND= BLOCKED !
8, ! BUFFERS !
134, ! SHARESIZE !
U; ! UNDEFINED !
GIVEUP
LPERROR, ! LP ERROR PROCEDURE !
2'1100001011110010 ! GIVE UP MASK !
OF RECORD ! RECORD STRUCTURE !
CCW: STRING(1);
DATA: STRING(132);
LINE: STRING(120) FROM 14;
BSIZE: STRING(5) FROM 12;
BNUMBER: STRING(5) FROM 37;
FNUMBER: STRING(5) FROM 61
END;
«ff»
! RC36-00699 PAGE 07 !
PROCEDURE CHANGETABLE
(FILE OUT;
CONST TABNAME: STRING(6));
CODEBODY;
PROCEDURE INITPOSITION;
BEGIN
IF IN.ZMODE=0 THEN OPEN(IN,1);
IF BLOCKNO <> IN.ZBLOCK THEN GOTO 2000;
IF FILENO <> IN.ZFILE THEN
BEGIN
2000: OUT.ZMODE:= 0;
WAITZONE(OUT);
END;
SETPOSITION(IN,FILENO,BLOCKNO);
IF OUT.ZMODE=0 THEN
BEGIN
CHANGETABLE(OUT,TABNAME);
OPEN(OUT,7);
END;
SETPOSITION(OUT,MARGIN,0);
NEWPAGE:= NEWPAGE - (NEWPAGE / 100 * 100);
IF PRINTLENGTH > 120 THEN PRINTLENGTH:= 120;
END;
PROCEDURE CONTINUE;
BEGIN
GLCONT:=OPCONT;
OPCONT:=NEXTCONT;
NEXTCONT:=GLCONT;
OPMESS(OPCONT);
END;
PROCEDURE BINTOEBCDIC;
BEGIN
COUNT:= 0;
REPEAT
BEGIN
COUNT:= COUNT + 1;
REMAIN:= PARAM / 10 * 10;
INSERT(PARAM-REMAIN+240, DIGITS, 5-COUNT);
PARAM:= PARAM / 10;
END UNTIL PARAM = 0;
END;
«ff»
! RC36-00699 PAGE 08 !
PROCEDURE DIRECTUPDATE;
BEGIN
P1:=0; ! INDEX IN INPUT STRING !
P2:=0; ! INDEX IN CONSTANT STRING !
P3:=1; ! PARAMETER NUMBER IN CONSTANT STRING !
REPEAT BEGIN
MOVE(OPTEXT,P1,S1,0,1);
MOVE(OPTXTS,P2,S2,0,1);
WHILE BYTE S1 <> BYTE S2 DO
BEGIN
IF BYTE S2 = 0 THEN P3:=P3+1;
P2:=P2+1;
MOVE(OPTXTS,P2,S2,0,1);
IF P3>NOQ THEN S2:=S1;
END;
IF P3<=NOQ THEN
BEGIN
WHILE BYTE S1 = BYTE S2 DO
BEGIN
P1:=P1+1;
P2:=P2+1;
MOVE(OPTEXT,P1,S1,0,1);
MOVE(OPTXTS,P2,S2,0,1);
IF BYTE S1 = 61 THEN
BEGIN
MOVE(OPTEXT,P1+1,OPTEXT,0,10);
LENGTH:=LENGTH-P1-1;
Q:=P3;
MOVE(OPDUMMY,Q*2,OPDUMMY,0,2);
PAR:= WORD OPDUMMY;
P3:=NOQ;
END;
END;
P2:=P2-P1+1;
P1:=0;
END;
END UNTIL P3>=NOQ;
END;
«ff»
! RC36-00699 PAGE 09 !
PROCEDURE OPCOM;
BEGIN
1000: Q:=0;
1010: REPEAT BEGIN
IF OPTEXT=STATE THEN
BEGIN Q:=1; OPMESS(CONTSTATE); IF OPCONT=FIVE THEN
OPMESS(PLUS); IF OPCONT=FIFTEEN THEN
OPMESS(MINUS); GOTO 1040;
END;
1015: Q:=Q+1;
1020: OPSTATUS(1 SHIFT(16-Q),OPTXTS); IF Q<>1 THEN BEGIN
MOVE(OPDUMMY,Q*2,OPDUMMY,0,2);
PAR:= WORD OPDUMMY;
IF PAR = -1 THEN OPMESS(PLUS);
IF PAR = -2 THEN OPMESS(MINUS);
IF PAR >= 0 THEN
BEGIN BINDEC(PAR,OPDEC); OPMESS(OPDEC); END; END;
IF OPTEXT=STATE THEN GOTO 1060;
1040: OPMESS(ENDLINE);
OPWAIT(LENGTH);
OPTEXT:=OPSTRING;
OPIN(OPSTRING);
IF OPTEXT=STATE THEN BEGIN Q:=0; GOTO 1015; END;
IF OPTEXT=SUSPEND THEN GOTO 10;
IF LENGTH > 6 THEN DIRECTUPDATE;
IF LENGTH > 6 THEN GOTO 1020;
IF OPTEXT = START THEN GOTO 1070;
IF OPTEXT = STOP THEN GOTO 1000;
IF OPTEXT = CONT THEN
BEGIN CONTINUE; GOTO 1040; END;
IF OPTEXT = INT THEN GOTO 1060;
IF OPTEXT = NEXTPARAM THEN GOTO 1060;
IF OPTEXT = NL THEN GOTO 1020;
IF OPTEXT = ENDLINE THEN GOTO 1020;
IF OPTEXT = RETURN THEN GOTO 1020;
SIGN:=0;
IF OPTEXT = MINUS THEN SIGN:=-1;
IF OPTEXT = PLUS THEN SIGN:=+1;
IF SIGN <> 0 THEN INSERT(48,OPTEXT,0);
DECBIN(OPTEXT,TOM);
IF PAR < 0 THEN
BEGIN IF SIGN=0 THEN GOTO 1020; PAR:=-2;
IF SIGN=1 THEN PAR:=-1; GOTO 1050;
END;
IF SIGN=0 THEN
BEGIN SIGN:=1; PAR:=0; END;
PAR:=PAR+TOM*SIGN;
IF PAR<0 THEN GOTO 1020;
1050: INSERT(PAR SHIFT(-8),OPDUMMY,0);
INSERT(PAR, OPDUMMY,1);
MOVE(OPDUMMY,0,OPDUMMY,Q*2,2);
IF OPTEST <> 0 THEN GOTO 1040;
GOTO 1020;
1060: IF OPTEXT=STATE THEN IF Q<NOQ THEN GOTO 1015;
END UNTIL Q>=NOQ; GOTO 1000;
1070: OPMESS(RUNTXT);
END;
«ff»
! RC36-00699 PAGE 10 !
PROCEDURE OPSTOP;
BEGIN
OPWAIT(LENGTH);
OPTEXT:=OPSTRING;
OPIN(OPSTRING);
STOPPED:= 0;
IF OPTEXT=CONT THEN CONTINUE;
IF OPTEXT=STOP THEN STOPPED:= 1;
IF OPTEXT=SUSPEND THEN
BEGIN
STOPPED:= 1;
GOTO 10;
END;
IF OPTEXT=START THEN STOPPED:= 2;
END;
PROCEDURE SHOWERROR;
BEGIN
ERRORNO:=20;
WHILE MASK>0 DO
BEGIN
MASK:=MASK SHIFT 1;
ERRORNO:=ERRORNO+1
END;
BINDEC(ERRORNO,OPTEXT);
OPMESS(OPTEXT); OPMESS(ENDLINE);
END;
«ff»
! RC36-00699 PAGE 11 !
PROCEDURE MTERROR;
BEGIN
IF IN.Z0 AND 256 <> 0 THEN !EOF! GOTO 9;
IF IN.Z0 AND 8'041000 = 0 THEN BLOCKNO:= IN.ZBLOCK;
IF IN.Z0 SHIFT 1 < 0 THEN OPMESS(MTMOUNTTAPE);
IF IN.Z0 SHIFT 1 >= 0 THEN
BEGIN
IF OPTEST <> 0 THEN OPSTOP;
OPMESS(MTTXT);
MASK:=IN.Z0;
SHOWERROR;
END;
REPEAT OPSTOP UNTIL STOPPED <> 0;
IF STOPPED = 1 THEN GOTO 1;
OPMESS(RUNTXT);
END;
PROCEDURE LPERROR;
BEGIN
NEXTLP:= OUT.Z0 AND 8'000020;
OUT.Z0:= OUT.Z0 - NEXTLP;
IF OUT.Z0 SHIFT 1 < 0 THEN OUT.Z0:= OUT.Z0 AND 8'041342;
IF OUT.Z0 = 8'040000 THEN IF NEXTLP <> 0 THEN
OUT.Z0:= NEXTLP;
IF OUT.Z0 AND 8'001342 <> 0 THEN
OUT.Z0:= OUT.Z0 AND 8'001342;
IF OUT.Z0 <> 0 THEN
BEGIN
OPMESS(LPTXT);
BLOCKNO:= IN.ZBLOCK;
MASK:=OUT.Z0;
SHOWERROR;
NEXTLP:=0;
REPEAT OPSTOP UNTIL STOPPED <> 0;
IF STOPPED = 1 THEN GOTO 1;
OPMESS(RUNTXT);
IF OUT.Z0 AND 8'141342 <> 0 THEN
REPEATSHARE(OUT);
END;
END;
«ff»
! RC36-00699 PAGE 12 !
BEGIN
!**************************
* PROGRAM INITIALIZATION *
**************************!
BLOCKNO:= 1;
FILENO:= 1;
REWIND:= -1;
MARGIN:= 0;
RECSIZE:= 80;
PRINTLENGTH:= 120;
NEWPAGE:= 0;
NEXTLP:= 0;
OPCONT:= FIFTEEN;
NEXTCONT:= FIVE;
LINES:= 100;
PAGE:= 0;
OPIN(OPSTRING);
1: OPCOM;
2: INITPOSITION;
!*************
* MAIN LOOP *
*************!
3: IF OPTEST <> 0 THEN
BEGIN
OPSTOP;
IF STOPPED = 1 THEN
BEGIN
WAITZONE(OUT);
BLOCKNO:= IN.ZBLOCK;
GOTO 1;
END;
END;
GETREC(IN, BLOCKREM);
BLOCKCHANGE:= 1;
4: RECCHANGE:= 1;
RECREM:= RECSIZE;
IF BLOCKREM < RECSIZE THEN RECREM:= BLOCKREM;
5: IF NEWPAGE = 0 THEN GOTO 6;
IF LINES >= NEWPAGE THEN
BEGIN
LPLENGTH:= PRINTLENGTH + 13;
IF PRINTLENGTH < 60 THEN LPLENGTH:= 73;
PUTREC(OUT, LPLENGTH);
OUT^.CCW:= SK1B;
LINES:= 1;
OUT^.DATA:= HEADING;
MOVE(OUT^, 28, OUT^, 30, 104);
MOVE(PAGETXT, 0, OUT^, LPLENGTH-10, 4);
PAGE:= PAGE + 1;
PARAM:= PAGE;
BINTOEBCDIC;
MOVE(DIGITS, 5-COUNT, OUT^, LPLENGTH-5, COUNT);
END;
«ff»
! RC36-00699 PAGE 13 !
6: IF BLOCKCHANGE = 1 THEN
BEGIN
PUTREC(OUT, 65);
OUT^.CCW:= SP2B;
LINES:= LINES + 2;
OUT^.DATA:= BLOCKTXT;
PARAM:= BLOCKREM;
BINTOEBCDIC;
MOVE(DIGITS, 5-COUNT, OUT^.BSIZE, 0, COUNT);
PARAM:= IN.ZBLOCK - 1;
BINTOEBCDIC;
MOVE(DIGITS, 5-COUNT, OUT^.BNUMBER, 0, COUNT);
PARAM:= IN.ZFILE;
BINTOEBCDIC;
MOVE(DIGITS, 5-COUNT, OUT^.FNUMBER, 0, COUNT);
BLOCKCHANGE:= 0;
END;
NOBY:= PRINTLENGTH;
IF RECREM < PRINTLENGTH THEN NOBY:= RECREM;
LPLENGTH:= NOBY + 13;
PUTREC(OUT, LPLENGTH);
OUT^.CCW:= SP2B;
LINES:= LINES + 2;
MOVE(POSTXT, 0, OUT^.DATA, 0, NOBY+12);
IF RECCHANGE = 1 THEN OUT^.DATA:= RECTXT;
PUTREC(OUT, LPLENGTH);
OUT^.CCW:= SP1B;
LINES:= LINES + 1;
OUT^.DATA:= ZONETXT;
IF RECCHANGE = 1 THEN
BEGIN
PARAM:= RECREM;
BINTOEBCDIC;
MOVE(DIGITS, 5-COUNT, OUT^.DATA, 0, COUNT);
RECCHANGE:= 0;
END;
CONVERT(IN^, OUT^.LINE, ZONETAB, NOBY);
PUTREC(OUT, LPLENGTH);
OUT^.CCW:= SP1B;
LINES:= LINES + 1;
OUT^.DATA:= NUMRTXT;
CONVERT(IN^, OUT^.LINE, NUMRTAB, NOBY);
PUTREC(OUT, LPLENGTH);
OUT^.CCW:= SP1B;
LINES:= LINES + 1;
OUT^.DATA:= CHARTXT;
MOVE(IN^, 0, OUT^.LINE, 0, NOBY);
IN.ZFIRST:= IN.ZFIRST + NOBY;
RECREM:= RECREM - NOBY;
BLOCKREM:= BLOCKREM - NOBY;
IF RECREM <> 0 THEN GOTO 5;
IF BLOCKREM <> 0 THEN GOTO 4;
GOTO 3;
«ff»
! RC36-00699 PAGE 14 !
!***********
* END JOB *
***********!
9: OPMESS(EOJTXT);
10: CLOSE(OUT, 1);
IF OPTEXT=SUSPEND THEN
BEGIN
CLOSE(IN,1);
OPMESS(SUSTXT);
GOTO 11;
END;
CLOSE(IN, REWIND + 2);
BLOCKNO:= 1;
FILENO:= FILENO + 1;
IF REWIND = -1 THEN FILENO:= 1;
PAGE:= 0;
LINES:= 100;
11: REPEAT OPSTOP UNTIL STOPPED <> 0;
IF STOPPED = 1 THEN GOTO 1;
OPMESS(RUNTXT);
GOTO 2;
END;
«ff»
«nul»