001000$CONTROL USLINIT, NOLIST, POST85
001100 IDENTIFICATION DIVISION.
001200 PROGRAM-ID. ESIS.
002600 AUTHOR. MARK WONSIL.
002700 INSTALLATION. 4M.
002800 DATE-WRITTEN. FRI, FEB 16, 2001.
002900 DATE-COMPILED.
003000 ENVIRONMENT DIVISION.
003100 CONFIGURATION SECTION.
003200 SOURCE-COMPUTER. HP-3000.
003300 OBJECT-COMPUTER. HP-3000.
003400 INPUT-OUTPUT SECTION.
003500 FILE-CONTROL.
003600 SELECT ESISIN ASSIGN TO "ESISIN".
003700 DATA DIVISION.
003800 FILE SECTION.
003900
004000 FD ESISIN
004100 RECORDING MODE IS F
004200 RECORD CONTAINS 1024 CHARACTERS.
004300 01 SRCREC PIC X(1024).
004400
004500 WORKING-STORAGE SECTION.
004600 77 ILEN PIC S9(4) COMP.
004700 77 SITEM PIC S9(4) COMP.
004800
004900 01 I PIC S9(4) COMP.
005000 01 SP PIC S9(4) COMP.
005100 01 ELEMENT-ARRAY.
005200 03 ELEMENT-STACK PIC X(80) OCCURS 100 TIMES.
005300 01 RECCNT PIC 9999999.
005400
005500 01 ESISREC.
005600 03 ESIS-TYPE PIC X.
005700 88 IS-ATTR VALUE "A".
005800 88 IS-DATA VALUE "-".
005900 88 IS-START-TAG VALUE "(".
006000 88 IS-END-TAG VALUE ")".
006100 88 IS-PI VALUE "?".
006200 03 ESIS-DATA PIC X(1023).
006300
006400 01 EOF-STAT PIC X(1) VALUE SPACES.
006500 88 EOF-INPUT VALUE "Y".
006600
006700 PROCEDURE DIVISION.
006800 ESIS.
006900
007000 OPEN INPUT ESISIN.
007100
007200 MOVE ZEROS TO RECCNT.
007300 PERFORM UNTIL EOF-INPUT
007400 READ ESISIN
007500 AT END
007600 MOVE "Y" TO EOF-STAT
007700 NOT AT END
007800 PERFORM PROCESS-RECORD
007900 END-READ
008000 END-PERFORM.
008100
008200 CLOSE ESISIN.
008300
008400 STOP RUN.
008500
008600******************************************************************
008700
008800 PROCESS-RECORD.
008900
009000 IF IS-START-TAG
009100 IF (SP = 100)
009200 DISPLAY "ELEMENT STACK OVERFLOW"
009300* EXIT PROGRAM
009400 ELSE
009500 ADD 1 TO SP
009600 MOVE ESIS-DATA TO ELEMENT-STACK (SP)
009700 END-IF
009800 END-IF.
009900
010000 IF IS-END-TAG
010100 SUBTRACT 1 FROM SP
010200 END-IF.