000100$$ SET LINEINFO BINDINFO 000200$$ FEDLEVEL=5 000300$$ SET BINARYEXTENDED 001000 001100 IDENTIFICATION DIVISION. 001200 PROGRAM-ID. UNITE-C85-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/COBOL85/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 UNITE/COBOL74/STREAMLIST. 099900****************************************************************** 100000/ 100100 ENVIRONMENT DIVISION. 100200****************************************************************** 100300 CONFIGURATION SECTION. 100400****************************************************************** 100500 SOURCE-COMPUTER. 100550 UNISYS-MCP-AS. 100600 OBJECT-COMPUTER. 100700 UNISYS-MCP-AS. 102000 102100 SPECIAL-NAMES. 103000 SYMBOLIC CHARACTERS 103100 EBCDIC-FF IS 13 103200 EBCDIC-CR IS 14 103300 EBCDIC-LF IS 38 104000 104100 CLASS LINE-DELIM IS 104200 13, 14, 38 107900 . 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. 321620 05 WBS-LINE-INDEX PIC S9(4) BINARY. 321700 05 WBS-LINE-STATE PIC S9(2) BINARY. 321720 88 WBS-LINE-MOVE-CHAR VALUE 1. 321740 88 WBS-LINE-CHECK-LF VALUE 2. 321760 88 WBS-LINE-CHECK-FF VALUE 3. 321780 88 WBS-LINE-END VALUE 4. 321800 05 WBS-FOLD-COUNT PIC S9(2) BINARY. 321900 05 WBS-FOLD-RESIDUE PIC S9(4) BINARY. 322000 05 WBS-FOLD-SIZE 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). 325000 05 WBS-STREAM-LINE. 325100 10 WBS-LC PIC X(1) 325200 OCCURS 1240 INDEXED WBS-LCX. 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 "C85 StreamList". 011015PK 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 502500 MOVE 2 TO WPC-HEADS 502600 502700 PERFORM 1000-LIST-STREAM-FILE THRU 1000-EXIT 502800 505600 PERFORM 0995-CLOSE-PRINT THRU 0995-EXIT 505620 . 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 = W-TRUE 590380 IF WPC-PAGE-SIZE > ZERO 590400 IF WPC-LEFT < WPC-SPACING 590420 PERFORM 0920-HEADING THRU 0920-EXIT 590425 END-IF 590430 END-IF 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 590530 END-IF 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 = W-TRUE 590760 MOVE PF-DATA TO WPC-SAVE 590780 ADD 1 TO WPC-PAGE-NR 590800 IF WPC-HEADS < 1 590820 MOVE SPACE TO PF-REC 590840 MOVE WPC-PAGE-SIZE TO WPC-LEFT 590860 WRITE PF-REC BEFORE PAGE 590880 ELSE 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 MOVE WPC-CC (1) TO WPC-SPACING 591040 PERFORM VARYING WPC-X FROM 2 BY 1 591060 UNTIL WPC-X > WPC-HEADS 591120 MOVE WPC-LINE (WPC-X) TO PF-DATA 591140 WRITE PF-REC AFTER WPC-SPACING LINES 591160 SUBTRACT WPC-SPACING FROM WPC-LEFT 591170 MOVE WPC-CC (WPC-X) TO WPC-SPACING 591180 END-PERFORM 591200 END-IF 591220 591240 MOVE WPC-SAVE TO PF-DATA 591250 END-IF 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 NOT = W-TRUE 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 591570 END-IF 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 = W-TRUE 591800 CLOSE PF-PRINT 591820 MOVE W-FALSE TO WPC-PRINT-OPEN-FLAG 591830 END-IF 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 601820 ELSE 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 602900 CHANGE ATTRIBUTE STATUS OF MYSELF TO TERMINATED 602920 ELSE 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 603720 END-IF 603740 603900 CLOSE BSF-BYTE-STREAM WITH RELEASE 603920 END-IF 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. 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 ELSE 611600 ADD 1 TO WBS-LINE-NR 611700 MOVE WBS-LINE-NR TO PF-D-LINE-NR 611800 COMPUTE WBS-FOLD-COUNT = 611900 (WBS-LINE-SIZE + WBS-FOLD-MAX - 1) / WBS-FOLD-MAX 612000 IF WBS-FOLD-COUNT > WPC-LEFT 612100 PERFORM 0900-NEW-PAGE THRU 0900-EXIT 612200 END-IF 612300 612400 MOVE 1 TO WBS-LINE-INDEX 612500 MOVE WBS-LINE-SIZE TO WBS-FOLD-RESIDUE 612600 612700 PERFORM TEST AFTER UNTIL WBS-FOLD-RESIDUE <= ZERO 612800 COMPUTE WBS-FOLD-SIZE = 612900 FUNCTION MIN (WBS-FOLD-RESIDUE, WBS-FOLD-MAX) 613000 IF WBS-FOLD-SIZE > ZERO 613100 MOVE WBS-STREAM-LINE (WBS-LINE-INDEX:WBS-FOLD-SIZE) TO 613200 PF-D-TEXT 613300 END-IF 613400 PERFORM 0910-PRINT THRU 0910-EXIT 613500 SUBTRACT WBS-FOLD-SIZE FROM WBS-FOLD-RESIDUE 613600 ADD WBS-FOLD-SIZE TO WBS-LINE-INDEX 613700 END-PERFORM 613800 613900 IF WBS-FORM-FEED = W-TRUE 614000 PERFORM 0900-NEW-PAGE THRU 0900-EXIT 614100 END-IF 614200 END-IF 614300 . 614400 1010-EXIT. 614500 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 622100 IF WBS-STREAM-EOF = W-TRUE 622200 MOVE W-TRUE TO WBS-LINE-EOF 622300 ELSE 622400 SET WBS-LCX TO 1 622500 SET BSF-CX TO WBS-BUFFER-INDEX 622600 SET WBS-LINE-MOVE-CHAR TO TRUE 622700 622800 PERFORM UNTIL WBS-LINE-END 622900 IF BSF-CX > WBS-BUFFER-SIZE 623000 PERFORM 1030-READ-STREAM-BUFFER THRU 1030-EXIT 623100 IF WBS-STREAM-EOF = W-TRUE 623200 SET WBS-LINE-END TO TRUE 623300 END-IF 623400 END-IF 623500 623600 EVALUATE TRUE 623700 WHEN WBS-LINE-MOVE-CHAR 623800 IF BSF-C (BSF-CX) IS LINE-DELIM 623900 EVALUATE BSF-C (BSF-CX) 624000 WHEN EBCDIC-CR 624100 SET BSF-CX UP BY 1 624200 SET WBS-LINE-CHECK-LF TO TRUE 624300 WHEN EBCDIC-LF 624400 SET BSF-CX UP BY 1 624500 SET WBS-LINE-CHECK-FF TO TRUE 624600 WHEN EBCDIC-FF 624700 SET BSF-CX UP BY 1 624800 MOVE W-TRUE TO WBS-FORM-FEED 624900 SET WBS-LINE-END TO TRUE 625000 WHEN OTHER 625100 CHANGE ATTRIBUTE STATUS OF MYSELF TO TERMINATED 625200 END-EVALUATE 625300 ELSE 625400 IF WBS-LCX > WBS-LINE-MAX 625500 SET WBS-LINE-END TO TRUE 625600 ELSE 625700 MOVE BSF-C (BSF-CX) TO WBS-LC (WBS-LCX) 625800 ADD 1 TO WBS-LINE-SIZE 625900 SET BSF-CX, WBS-LCX UP BY 1 626000 END-IF 626100 END-IF 626200 626300 WHEN WBS-LINE-CHECK-LF 626400 IF BSF-C (BSF-CX) = EBCDIC-LF 626500 SET BSF-CX UP BY 1 626600 END-IF 626700 SET WBS-LINE-CHECK-FF TO TRUE 626800 626900 WHEN WBS-LINE-CHECK-FF 627000 IF BSF-C (BSF-CX) = EBCDIC-FF 627100 MOVE W-TRUE TO WBS-FORM-FEED 627200 SET BSF-CX UP BY 1 627300 END-IF 627400 SET WBS-LINE-END TO TRUE 627500 627600 WHEN WBS-LINE-END 627700 CONTINUE 627800 627900 WHEN OTHER 628000 CHANGE ATTRIBUTE STATUS OF MYSELF TO TERMINATED 628100 END-EVALUATE 628200 END-PERFORM 628300 628400 SET WBS-BUFFER-INDEX TO BSF-CX 628500 END-IF 628600 . 628700 1020-EXIT. 628800 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 NOT AT END 631200 MOVE WBS-REC-SIZE TO WBS-BUFFER-SIZE 631300 END-READ 631400 . 631500 1030-EXIT. 631600 EXIT. 999800 999900 END PROGRAM UNITE-C85-STREAMLIST.