000100$$ SET LINEINFO BINDINFO 000200$$ FEDLEVEL=5 001000 001100 IDENTIFICATION DIVISION. 001200 PROGRAM-ID. UNITE-C74-STREAMLIST. 001300 AUTHOR. P.KIMPEL. 001400 INSTALLATION. PARADIGM CORPORATION, SAN DIEGO CA 92126. 001500 DATE-WRITTEN. OCTOBER 2001. 001600 DATE-COMPILED. 002000 002100****************************************************************** 002110* * 002120* UNITE/STREAMFILES/COBOL74/STREAMLIST * 002130* * 002140****************************************************************** 002150* * 002160* Copyright (C) 2001: * 002170* Paradigm Corporation * 002180* 9625 Black Mountain Road, Suite 218 * 002190* San Diego, CA 92126-4598 * 002200* 858-536-5533; fax 858-536-5545 * 002210* http://www.digm.com * 002220* * 002230* This material may be copied and used for any purpose * 002240* providing this copyright notice is preserved and that * 002250* appropriate credit is given. * 002260* * 002270* This material is offered AS-IS WITH NO WARRANTY. * 002280* Paradigm hereby disclaims all warranties respecting this * 002290* material, expressed or implied, including without limita- * 002300* tion warranty of design, merchantability, fitness for a * 002310* particular purpose and against infringement. * 005000* * 005100****************************************************************** 005200* 005300* STREAMLIST READS A BYTE STREAM FILE AND FORMATS IT INTO 005400* LINES FOR OUTPUT TO A STANDARD PRINTER FILE. 005500* 005600* LINES IN THE FILE ARE ASSUMED TO BE DELIMITED BY CARRIAGE- 005700* RETURN (CR), LINE-FEED (LF), FORM-FEED (FF), OR THE MULTI- 005800* BYTE SEQUENCES CR-LF, CR-FF, LF-FF, OR CR-LF-FF. A FORM-FEED 005820* IN THE DELIMITER SEQUENCE CAUSES A PAGE SKIP ON THE PRINTER 006000* LISTING BEFORE THE NEXT LINE IS PRINTED. 006100* 006200* NOTE THAT THIS PROGRAM WORKS ONLY WITH CLEARPATH MCP BYTE 006300* STREAM FILES. THAT IS, THE FILES MUST HAVE THE FOLLOWING 006400* PHYSICAL ATTRIBUTES: 006500* 006600* FILESTRUCTURE = STREAM 006700* BLOCKSTRUCTURE = FIXED 006800* FILEORGANIZATION = NOTRESTRICTED 006900* MAXRECSIZE = 1 007000* FRAMESIZE = 8 007100* EXTMODE = (ANY 8-BIT CHARACTER REPRESENTATION). 007200* 007300* THE PROGRAM ASSUMES INTMODE=EBCDIC, AND EXPECTS THAT THE 007400* LOGICAL I/O SUBSYSTEM WILL TRANSLATE FOREIGN CHARACTER SETS 007500* TO NATIVE MCP EBCDIC. FOR THIS REASON, THE PROGRAM IS NOT 007600* NORMALLY APPROPRIATE FOR USE WITH BINARY STREAM FILES OR 007700* FILES WITH MIXED BINARY AND TEXT DATA. 007800* 007900* THIS PROGRAM IS CURRENTLY CAPABLE OF PROCESSING FILES WITH 008000* LOGICAL LINES UP TO 1240 CHARACTERS IN LENGTH. LONGER LINES 008100* WILL BE SPLIT AFTER 1240 CHARACTERS AND INTERPRETED AS 008200* MULTIPLE LOGICAL LINES. 008300* 008400* THIS PROGRAM MAY BE USED WITH THE MCP FILE REDIRECTOR TO 008500* DIRECTLY LIST FILES FROM MICROSOFT NETWORKING SHARES. 050000* 050010****************************************************************** 050020* MODIFICATION LOG. 050030* ----------------- 050040* 2001-10-14 P.KIMPEL 050050* ORIGINAL VERSION, CLONED FROM SCPD FALLBACK/TRAFFIC/DUMP. 099900****************************************************************** 100000/ 100100 ENVIRONMENT DIVISION. 100200****************************************************************** 100300 CONFIGURATION SECTION. 100400****************************************************************** 100500 SOURCE-COMPUTER. 100550 UNISYS-MCP-AS. 100600 OBJECT-COMPUTER. 100700 UNISYS-MCP-AS. 110000 110100****************************************************************** 110200 INPUT-OUTPUT SECTION. 110300****************************************************************** 110400 FILE-CONTROL. 110500 SELECT BSF-BYTE-STREAM 110600 ASSIGN TO DISK 110700 ORGANIZATION SEQUENTIAL 110800 ACCESS SEQUENTIAL 110900 FILE STATUS WBS-FILE-STATUS. 111700 SELECT PF-PRINT 111800 ASSIGN TO PRINTER. 150000 150100 DATA DIVISION. 150200****************************************************************** 150300 FILE SECTION. 150400****************************************************************** 160000 160100 FD BSF-BYTE-STREAM 160200 RECORD CONTAINS 1 TO 4096 CHARACTERS 160300 DEPENDING ON WBS-REC-SIZE 160400 VALUE OF DEPENDENTSPECS TRUE 160500 VALUE OF INTMODE EBCDIC 160600 VALUE OF ANYSIZEIO TRUE 161000 LABEL RECORDS STANDARD. 161100 01 BSF-REC. 161200 05 BSF-C PIC X(1) 161300 OCCURS 4096 INDEXED BSF-CX. 200000 200100 FD PF-PRINT 200200 RECORD CONTAINS 132 CHARACTERS 200300 VALUE OF TITLE "STREAMLIST" 200400 LABEL RECORDS STANDARD. 200500 01 PF-REC. 200600 05 PF-DATA PIC X(132). 200700 05 PF-DETAIL-LINE REDEFINES PF-DATA. 200800 10 PF-D-LINE-NR PIC ZZZZZ9. 200900 10 FILLER PIC X(2). 201200 10 PF-D-TEXT PIC X(124). 300000 300100****************************************************************** 300200 WORKING-STORAGE SECTION. 300300****************************************************************** 300400 77 W-COPYRIGHT PIC X(60) VALUE 300500 "[Copyright (C) 2001, Paradigm Corporation]". 300600 77 W-TRUE PIC 9(1) VALUE 1 BINARY. 300700 77 W-FALSE PIC 9(1) VALUE ZERO BINARY. 310000 310100 01 WMC-MISCELLANEOUS. 310200 05 WMC-SYS-DATE PIC 9(8). 310300 05 WMC-SYS-DATE-FIELDS REDEFINES WMC-SYS-DATE. 310400 10 WMC-SYS-YEAR PIC 9(4). 310500 10 WMC-SYS-MONTH PIC 9(2). 310600 10 WMC-SYS-DAY PIC 9(2). 310700 05 WMC-SYS-TIME PIC 9(8). 310800 05 WMC-SYS-TIME-FIELDS REDEFINES WMC-SYS-TIME. 310900 10 WMC-SYS-HOUR PIC 9(2). 311000 10 WMC-SYS-MINUTE PIC 9(2). 311100 10 WMC-SYS-SECOND PIC 99V99. 320000 320100 01 WBS-BYTE-STREAM-CTL. 320200 05 WBS-BUFFER-MAX PIC 9(4) VALUE 4096 BINARY. 320300 05 WBS-LINE-MAX PIC 9(4) VALUE 1240 BINARY. 320400 05 WBS-FOLD-MAX PIC 9(4) VALUE 124 BINARY. 321000 05 WBS-REC-SIZE PIC S9(4) BINARY. 321100 05 WBS-STREAM-EOF PIC 9(1) BINARY. 321120 05 WBS-LINE-EOF PIC 9(1) BINARY. 321200 05 WBS-FORM-FEED PIC 9(1) BINARY. 321300 05 WBS-BUFFER-SIZE PIC S9(4) BINARY. 321400 05 WBS-BUFFER-INDEX PIC S9(4) BINARY. 321500 05 WBS-LINE-NR PIC S9(6) BINARY. 321600 05 WBS-LINE-SIZE PIC S9(4) BINARY. 321700 05 WBS-LINE-STATE PIC S9(2) BINARY. 321800 05 WBS-FOLD-COUNT PIC S9(2) BINARY. 321900 05 WBS-FOLD-RESIDUE PIC S9(4) BINARY. 323000 05 WBS-FILE-STATUS. 323100 10 WBS-FILE-STATUS-1 PIC X(1). 323200 10 WBS-FILE-STATUS-2 PIC X(1). 323300 05 WBS-LINE-DELIMITERS. 323400 10 WBS-FF PIC X(1) VALUE @0C@. 323500 10 WBS-CR PIC X(1) VALUE @0D@. 323600 10 WBS-LF PIC X(1) VALUE @25@. 325000 05 WBS-STREAM-LINE. 325100 10 WBS-LC PIC X(1) 325200 OCCURS 1240 INDEXED WBS-LCX. 325300 05 WBS-LINE-FOLD REDEFINES WBS-STREAM-LINE. 325400 10 WBS-FOLD PIC X(124) 325500 OCCURS 10 INDEXED WBS-LFX. 330000 330100 01 WPC-PRINT-CTL. 330200 05 WPC-PAGE-SIZE PIC 9(2) VALUE 80 BINARY. 330300 05 WPC-PAGE-NR PIC 9(6) VALUE ZERO BINARY. 330400 05 WPC-LEFT PIC S9(3) VALUE -1 BINARY. 330500 05 WPC-SPACING PIC 9(2) VALUE 1 BINARY. 330600 05 WPC-HEADS PIC 9(2) VALUE 2 BINARY. 330700 05 WPC-PRINT-OPEN-FLAG PIC 9(1) VALUE ZERO BINARY. 330900 05 WPC-SAVE PIC X(132). 331000 05 WPC-HEAD-VALUES. 331100 10 WPC-1. 331200 15 FILLER PIC 9(1) VALUE 1. 331400 15 WPC-1-REPORT-ID PIC X(48) VALUE 331420 "C74 StreamList". 331700 15 WPC-1-TITLE PIC X(74) VALUE 331800 "Paradigm Byte Stream Listing Utility". 331900 15 FILLER PIC X(4) VALUE "Page". 332000 15 WPC-1-PAGE-NR PIC Z(5)9. 332100 10 WPC-2. 332200 15 FILLER PIC 9(1) VALUE 2. 332300 15 FILLER PIC X(6) VALUE "File:". 333300 15 WPC-2-TITLE PIC X(98) VALUE SPACE. 333400 15 FILLER PIC X(2) VALUE SPACE. 333500 15 FILLER PIC X(9) VALUE "Printed:". 333600 15 WPC-2-TIME. 333700 20 WPC-2-HOUR PIC 9(2). 333800 20 FILLER PIC X(1) VALUE ":". 333900 20 WPC-2-MINUTE PIC 9(2). 334000 15 FILLER PIC X(2) VALUE SPACE. 334100 15 WPC-2-DATE. 334200 20 WPC-2-YEAR PIC 9(4). 334300 20 FILLER PIC X(1) VALUE "-". 334400 20 WPC-2-MONTH PIC 9(2). 334500 20 FILLER PIC X(1) VALUE "-". 334600 20 WPC-2-DAY PIC 9(2). 339000 05 WPC-HEADING REDEFINES WPC-HEAD-VALUES 339100 OCCURS 2 INDEXED WPC-X. 339200 10 WPC-CC PIC 9(1). 339300 10 WPC-LINE PIC X(132). 500000/ 500100 PROCEDURE DIVISION. 500200****************************************************************** 500300 0000-MAIN-SECTION SECTION. 500400****************************************************************** 500500 0000-MAIN-LINE. 500600* MAINLINE INITIALIZATION & DRIVER ROUTINE. 500700 501200 ACCEPT WMC-SYS-DATE FROM DATE YYYYMMDD. 501300 ACCEPT WMC-SYS-TIME FROM TIME. 501400 MOVE WMC-SYS-YEAR TO WPC-2-YEAR. 501500 MOVE WMC-SYS-MONTH TO WPC-2-MONTH. 501600 MOVE WMC-SYS-DAY TO WPC-2-DAY. 501700 MOVE WMC-SYS-HOUR TO WPC-2-HOUR. 501800 MOVE WMC-SYS-MINUTE TO WPC-2-MINUTE. 501900 502000 PERFORM 0990-OPEN-PRINT THRU 0990-EXIT. 502600 502700 PERFORM 1000-LIST-STREAM-FILE THRU 1000-EXIT. 502800 505600 PERFORM 0995-CLOSE-PRINT THRU 0995-EXIT. 505700 505800 0000-EXIT. 505900 STOP RUN. 590000 590010****************************************************************** 590020 0900-SECTION SECTION. 590030****************************************************************** 590040 0900-NEW-PAGE. 590060* TRIGGERS THE PRINT-FILE TO START A NEW PAGE THE 590080* NEXT TIME A LINE IS PRINTED. 590100 590120 MOVE -1 TO WPC-LEFT. 590140 590160 0900-EXIT. 590180 EXIT. 590200 590220****************************************************************** 590240 0910-PRINT. 590260* PRINTS ONE LINE TO THE PRINT-FILE, ADVANCING TO 590280* A NEW PAGE IF NECESSARY. 590300 590320 IF WPC-PRINT-OPEN-FLAG NOT = W-TRUE 590340 GO TO 0910-EXIT. 590360 590380 IF WPC-PAGE-SIZE > ZERO 590400 IF WPC-LEFT < WPC-SPACING 590420 PERFORM 0920-HEADING THRU 0920-EXIT. 590440 590460 SUBTRACT WPC-SPACING FROM WPC-LEFT. 590480 WRITE PF-REC AFTER WPC-SPACING LINES. 590500 MOVE 1 TO WPC-SPACING. 590520 MOVE SPACE TO PF-REC. 590540 590560 0910-EXIT. 590580 EXIT. 590600 590620****************************************************************** 590640 0920-HEADING. 590660* FORMATS PAGE HEADINGS FOR THE PRINT-FILE. 590680 590700 IF WPC-PRINT-OPEN-FLAG NOT = W-TRUE 590720 GO TO 0920-EXIT. 590740 590760 MOVE PF-DATA TO WPC-SAVE. 590780 ADD 1 TO WPC-PAGE-NR. 590800 IF WPC-HEADS NOT > ZERO 590820 MOVE SPACE TO PF-REC 590840 MOVE WPC-PAGE-SIZE TO WPC-LEFT 590860 WRITE PF-REC BEFORE PAGE 590880 GO TO 0920-RESTORE. 590900 590920 MOVE WPC-PAGE-NR TO WPC-1-PAGE-NR. 590940 COMPUTE WPC-LEFT = WPC-PAGE-SIZE - 1. 590960 MOVE WPC-LINE (1) TO PF-DATA. 590980 WRITE PF-REC AFTER PAGE. 591000 SET WPC-X TO 1. 591020 591040 0920-HEAD-LOOP. 591060 MOVE WPC-CC (WPC-X) TO WPC-SPACING. 591080 IF WPC-X < WPC-HEADS 591100 SET WPC-X UP BY 1 591120 MOVE WPC-LINE (WPC-X) TO PF-DATA 591140 WRITE PF-REC AFTER WPC-SPACING LINES 591160 SUBTRACT WPC-SPACING FROM WPC-LEFT 591180 GO TO 0920-HEAD-LOOP. 591200 591220 0920-RESTORE. 591240 MOVE WPC-SAVE TO PF-DATA. 591260 591280 0920-EXIT. 591300 EXIT. 591320 591340****************************************************************** 591360 0990-OPEN-PRINT. 591380* OPENS THE REPORT FILE PF-PRINT. 591400 591420 IF WPC-PRINT-OPEN-FLAG = W-TRUE 591440 GO TO 0990-EXIT. 591460 591480 OPEN OUTPUT PF-PRINT. 591500 MOVE SPACE TO PF-REC. 591520 PERFORM 0900-NEW-PAGE THRU 0900-EXIT. 591540 MOVE W-TRUE TO WPC-PRINT-OPEN-FLAG. 591560 MOVE ZERO TO WPC-PAGE-NR. 591580 591600 0990-EXIT. 591620 EXIT. 591640 591660****************************************************************** 591680 0995-CLOSE-PRINT. 591700* CLOSES THE REPORT FILE PF-PRINT. 591720 591740 IF WPC-PRINT-OPEN-FLAG NOT = W-TRUE 591760 GO TO 0995-EXIT. 591780 591800 CLOSE PF-PRINT. 591820 MOVE W-FALSE TO WPC-PRINT-OPEN-FLAG. 591840 591860 0995-EXIT. 591880 EXIT. 600000 600100****************************************************************** 600200 1000-SECTION SECTION. 600300****************************************************************** 600400 1000-LIST-STREAM-FILE. 600500* DRIVER FOR PARSING LINES FROM A STREAM FILE AND LISTING THEM 600600* TO THE PRINTER. 600700 600800 CHANGE ATTRIBUTE ANYSIZEIO OF BSF-BYTE-STREAM TO TRUE. 600900 OPEN INPUT BSF-BYTE-STREAM. 601000 MOVE ATTRIBUTE LTITLE OF BSF-BYTE-STREAM TO WPC-2-TITLE. 601100 IF WBS-FILE-STATUS-1 NOT = ZERO 601200 STRING "File open error -- FILESTATUS=", 601300 WBS-FILE-STATUS DELIMITED BY SIZE INTO PF-DATA 601400 PERFORM 0910-PRINT THRU 0910-EXIT 601500 MOVE 2 TO WPC-SPACING 601600 MOVE "Probably not a byte stream file." TO PF-DATA 601700 PERFORM 0910-PRINT THRU 0910-EXIT 601800 CHANGE ATTRIBUTE STATUS OF MYSELF TO TERMINATED. 601900 602000 IF ATTRIBUTE FILESTRUCTURE OF BSF-BYTE-STREAM NOT = 602100 VALUE STREAM OR 602200 ATTRIBUTE BLOCKSTRUCTURE OF BSF-BYTE-STREAM NOT = 602300 VALUE FIXED OR 602400 ATTRIBUTE MAXRECSIZE OF BSF-BYTE-STREAM NOT = 1 OR 602500 ATTRIBUTE FRAMESIZE OF BSF-BYTE-STREAM NOT = 8 602600 MOVE "This is not a byte stream file." TO PF-DATA 602700 PERFORM 0910-PRINT THRU 0910-EXIT 602800 CLOSE BSF-BYTE-STREAM WITH RELEASE 602900 CHANGE ATTRIBUTE STATUS OF MYSELF TO TERMINATED. 603000 603100 MOVE ZERO TO WBS-LINE-NR. 603200 MOVE 1 TO WBS-BUFFER-INDEX. 603300 MOVE ZERO TO WBS-BUFFER-SIZE. 603400 MOVE W-FALSE TO WBS-LINE-EOF, WBS-STREAM-EOF. 603500 603600 PERFORM 1010-FORMAT-STREAM-LINE THRU 1010-EXIT UNTIL 603700 WBS-LINE-EOF = W-TRUE. 603800 603900 CLOSE BSF-BYTE-STREAM WITH RELEASE. 604000 604100 1000-EXIT. 604200 EXIT. 610000 610100****************************************************************** 610200 1010-FORMAT-STREAM-LINE. 610300* EXTRACTS ONE LOGICAL LINE FROM THE STREAM FILE AND FORMATS 610400* INTO ONE OR MORE FOLDED LINES ON THE PRINTER LISTING. IF 610500* THE LINE IS LONGER THAN WILL FIT ON ONE PRINTER LINE (THE 610600* "FOLD-MAX"), ALL BUT THE LAST FOLD ARE SIMPLY MOVED INTO 610700* THE PRINT RECORD. THE LAST INCREMENT WILL USUALLY BE SHORTER 610800* THAN THE FOLD-MAX, SO IT IS UNSTRUNG INTO THE PRINT RECORD. 610900 611000 PERFORM 1020-READ-STREAM-LINE THRU 1020-EXIT. 611100 IF WBS-LINE-EOF = W-TRUE 611200 MOVE "** EOF **" TO PF-DATA 611300 MOVE 2 TO WPC-SPACING 611400 PERFORM 0910-PRINT THRU 0910-EXIT 611500 GO TO 1010-EXIT. 611600 611700 ADD 1 TO WBS-LINE-NR. 611800 MOVE WBS-LINE-NR TO PF-D-LINE-NR. 611900 612000 COMPUTE WBS-FOLD-COUNT = 612100 (WBS-LINE-SIZE + WBS-FOLD-MAX - 1) / WBS-FOLD-MAX. 612200 MOVE WBS-LINE-SIZE TO WBS-FOLD-RESIDUE. 612300 SET WBS-LFX TO 1. 612320 IF WBS-FOLD-COUNT > WPC-LEFT 612340 PERFORM 0900-NEW-PAGE THRU 0900-EXIT. 612400 612500 1010-PRINT-FOLD-LOOP. 612600 IF WBS-FOLD-RESIDUE > WBS-FOLD-MAX 612700 MOVE WBS-FOLD (WBS-LFX) TO PF-D-TEXT 612800 PERFORM 0910-PRINT THRU 0910-EXIT 612900 SUBTRACT WBS-FOLD-MAX FROM WBS-FOLD-RESIDUE 613000 SET WBS-LFX UP BY 1 613100 GO TO 1010-PRINT-FOLD-LOOP. 613200 613300 UNSTRING WBS-FOLD (WBS-LFX) INTO PF-D-TEXT 613400 FOR WBS-FOLD-RESIDUE. 613500 PERFORM 0910-PRINT THRU 0910-EXIT. 613600 613700 IF WBS-FORM-FEED = W-TRUE 613800 PERFORM 0900-NEW-PAGE THRU 0900-EXIT. 613900 614000 1010-EXIT. 614100 EXIT. 620000 620100****************************************************************** 620200 1020-READ-STREAM-LINE. 620300* READS ONE LOGICAL LINE, DELIMITED BY CR, LF, FF, CR-LF, 620400* CR-FF, LF-FF, OR CR-LF-FF INTO WBS-STREAM-LINE. IF A 620500* FORM-FEED IS DETECTED IN THE DELIMITER STRING, WBS-FORM-FEED 620600* IS SET TO TRUE. ON EXIT, THE LENGTH OF THE LINE IS IN 620700* WBS-LINE-SIZE. THE LINE IS NOT BLANK-FILLED. IF THE MAXIMUM 620800* LINE SIZE IS REACHED BEFORE A LINE DELIMITER IS ENCOUNTERED, 620900* THE LINE IS CONSIDERED COMPLETE, AND THE REST OF THE LOGICAL 621000* LINE FROM THE FILE WILL BE RETURNED IN THE NEXT CALL TO THIS 621100* ROUTINE. 621200* 621300* BECAUSE LINES CAN BE TERMINATED WITH MULTIPLE DELIMITER 621400* CHARACTERS, AND THE DELIMITER STRINGS CAN SPAN BUFFER 621500* BOUNDARIES, THIS ROUTINE USES A FOUR-STATE AUTOMATON TO 621600* PARSE THE LINES ONE CHARACTER AT A TIME. THIS IS NOT VERY 621700* EFFICIENT, BUT IT GETS THE JOB DONE. 621800 621900 MOVE ZERO TO WBS-LINE-SIZE. 622000 MOVE W-FALSE TO WBS-FORM-FEED. 622020 IF WBS-STREAM-EOF = W-TRUE 622040 MOVE W-TRUE TO WBS-LINE-EOF 622060 GO TO 1020-EXIT. 622080 622100 SET WBS-LCX TO 1. 622200 SET BSF-CX TO WBS-BUFFER-INDEX. 622300 MOVE 1 TO WBS-LINE-STATE. 622400 622500 1020-STATE-LOOP. 622600 IF BSF-CX > WBS-BUFFER-SIZE 622700 PERFORM 1030-READ-STREAM-BUFFER THRU 1030-EXIT 622800 IF WBS-STREAM-EOF = W-TRUE 622900 MOVE 4 TO WBS-LINE-STATE. 623000 623100 GO TO 623200 1020-1-MOVE-CHAR 623300 1020-2-CHECK-FOR-LF 623400 1020-3-CHECK-FOR-FF 623500 1020-4-END-LINE 623600 DEPENDING ON WBS-LINE-STATE. 623700 623800 1020-0-INVALID. 623900 CHANGE ATTRIBUTE STATUS OF MYSELF TO TERMINATED. 624000 624100 1020-1-MOVE-CHAR. 624200 IF BSF-C (BSF-CX) = WBS-CR 624300 SET BSF-CX UP BY 1 624400 MOVE 2 TO WBS-LINE-STATE 624500 ELSE IF BSF-C (BSF-CX) = WBS-LF 624600 SET BSF-CX UP BY 1 624700 MOVE 3 TO WBS-LINE-STATE 624800 ELSE IF BSF-C (BSF-CX) = WBS-FF 624900 SET BSF-CX UP BY 1 625000 MOVE W-TRUE TO WBS-FORM-FEED 625100 MOVE 4 TO WBS-LINE-STATE 625200 ELSE 625300 IF WBS-LCX > WBS-LINE-MAX 625400 MOVE 4 TO WBS-LINE-STATE 625500 ELSE 625600 MOVE BSF-C (BSF-CX) TO WBS-LC (WBS-LCX) 625700 ADD 1 TO WBS-LINE-SIZE 625800 SET BSF-CX, WBS-LCX UP BY 1. 625900 626000 GO TO 1020-NEXT-STATE. 626100 626200 1020-2-CHECK-FOR-LF. 626300 IF BSF-C (BSF-CX) = WBS-LF 626400 SET BSF-CX UP BY 1. 626500 626600 MOVE 3 TO WBS-LINE-STATE. 626700 GO TO 1020-NEXT-STATE. 626800 626900 1020-3-CHECK-FOR-FF. 627000 IF BSF-C (BSF-CX) = WBS-FF 627100 MOVE W-TRUE TO WBS-FORM-FEED 627200 SET BSF-CX UP BY 1. 627300 627400 MOVE 4 TO WBS-LINE-STATE. 627500 GO TO 1020-NEXT-STATE. 627600 627700 1020-4-END-LINE. 627800 SET WBS-BUFFER-INDEX TO BSF-CX. 627900 GO TO 1020-EXIT. 628000 628100 1020-NEXT-STATE. 628200 GO TO 1020-STATE-LOOP. 628300 628400 1020-EXIT. 628500 EXIT. 630000 630100****************************************************************** 630200 1030-READ-STREAM-BUFFER. 630300* READS ONE BUFFER OF BYTES FROM THE STREAM FILE. 630400 630500 MOVE 1 TO WBS-BUFFER-INDEX. 630600 SET BSF-CX TO 1. 630700 MOVE WBS-BUFFER-MAX TO WBS-REC-SIZE. 630800 READ BSF-BYTE-STREAM AT END 630900 MOVE ZERO TO WBS-BUFFER-SIZE 631000 MOVE W-TRUE TO WBS-STREAM-EOF 631100 GO TO 1030-EXIT. 631200 631300 MOVE WBS-REC-SIZE TO WBS-BUFFER-SIZE. 631400 631500 1030-EXIT. 631600 EXIT.