![]() |
Department of
Mathematics and Computer Science |
|
SELECT INPUT-INFO ASSIGN TO DSK.
FD INPUT-INFO LABEL RECORDS ARE STANDARD VALUE OF ID IS "SAMPLE.INP" DATA RECORD IS INPUT-LINE. 01 INPUT-LINE. ...NOTE: Because of the VALUE OF ID line, the internal file name, "INPUT-INFO" is associated with the VAX directory file name "SAMPLE.INP".
[JDOE]> COBOL MPCOB [JDOE]> LINK MPCOB [JDOE]> RUN MPCOBYou may also use EXECUTE MPCOB to combine the above 3 steps into one.
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE.
AUTHOR. DENNIS SMOLARSKI SJ.
DATE-WRITTEN. SEPTEMBER, 1978
* THE PROGRAM IS STRAIGHT FORWARD. IT READS ONE LINE AT A
* TIME AND SCANS IT. DURING THE SCAN A COUNTER IS KEPT OF THE
* UNMATCHED LEFT PARENS. IF THE COUNT GOES NEGATIVE THE LOOP IS
* IMMEDIATELY TERMINATED, AND "NOT MATCHED" IS PRINTED. OTHERWISE,
* A NON-ZERO COUNT AT THE END INDICATES NOT MATCHED.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. VAX.
OBJECT-COMPUTER. VAX.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT PARENS-IN
ASSIGN TO DSK.
SELECT PARENS-OUT
ASSIGN TO DSK.
DATA DIVISION.
FILE SECTION.
FD PARENS-IN
LABEL RECORDS ARE STANDARD
VALUE OF ID IS "SAMPAR.INP"
DATA RECORD IS INPUT-LINE.
01 INPUT-LINE.
02 INPUT-CHARACTER OCCURS 80 TIMES INDEXED BY IN-PTR,
PIC IS X.
FD PARENS-OUT
LABEL RECORDS ARE STANDARD
VALUE OF ID IS "SAMPAR.OUT"
DATA RECORD IS OUTPUT-LINE.
01 OUTPUT-LINE.
02 OUTPUT-CHARACTER OCCURS 80 TIMES INDEXED BY OUT-PTR,
PIC IS X.
WORKING-STORAGE SECTION.
01 ENDFILE
PIC IS 9, USAGE IS COMPUTATIONAL, VALUE IS ZERO.
01 MATCHED-PARENS.
02 MATCHED-OUTPUT PIC X(7), VALUE "MATCHED".
02 FILLER PIC X(33), VALUE SPACES.
01 NOT-MATCHED-PARENS.
02 NOT-MATCHED-OUTPUT PIC X(11), VALUE "NOT MATCHED".
02 FILLER PIC X(69), VALUE SPACES.
01 LEFT-PARENS PIC X, VALUE "(".
01 RIGHT-PARENS PIC X, VALUE ")".
01 PARENS-COUNT PIC S999, USAGE IS COMPUTATIONAL, VALUE IS ZERO.
PROCEDURE DIVISION.
MAIN-CODE.
OPEN INPUT PARENS-IN; OUTPUT PARENS-OUT.
PERFORM READ-LINES UNTIL ENDFILE IS EQUAL TO 1.
CLOSE PARENS-IN, PARENS-OUT.
STOP RUN.
READ-LINES.
MOVE SPACES TO INPUT-LINE.
READ PARENS-IN
AT END MOVE 1 TO ENDFILE.
IF ENDFILE EQUAL TO ZERO
PERFORM CHECK-PARENS.
CHECK-PARENS.
MOVE INPUT-LINE TO OUTPUT-LINE.
WRITE OUTPUT-LINE.
COMPUTE PARENS-COUNT = ZERO.
PERFORM COUNT-PARENS VARYING IN-PTR FROM 1 BY 1
UNTIL IN-PTR > 80 OR PARENS-COUNT < ZERO.
IF PARENS-COUNT IS NOT EQUAL TO 0
MOVE NOT-MATCHED-PARENS TO OUTPUT-LINE
ELSE
MOVE MATCHED-PARENS TO OUTPUT-LINE.
WRITE OUTPUT-LINE.
COUNT-PARENS.
IF INPUT-CHARACTER (IN-PTR) IS EQUAL TO LEFT-PARENS
COMPUTE PARENS-COUNT = 1 + PARENS-COUNT
ELSE
IF INPUT-CHARACTER (IN-PTR) IS EQUAL TO RIGHT-PARENS
COMPUTE PARENS-COUNT = PARENS-COUNT - 1.
[DSMOLARSKI]> photo Logging session output to file PHOTO.LOG Type LOGOUT when you are finished. [DSMOLARSKI]> type sampar.inp (PLUS 3 5) )( ((((())))) ()()(((()()()))) ((()) (()))) HAVE A NICE DAY [DSMOLARSKI]> cobol samcob [DSMOLARSKI]> link samcob [DSMOLARSKI]> run samcob [DSMOLARSKI]> type sampar.out (PLUS 3 5) MATCHED )( NOT MATCHED ((((())))) MATCHED ()()(((()()()))) MATCHED ((()) NOT MATCHED (()))) NOT MATCHED HAVE A NICE DAY MATCHED [DSMOLARSKI]> pop Process DSMOLARSKI_1 logged out at 21-JAN-1988 22:24:11.85
My email address is
dsmolarski@math.scu.edu
This page last updated 25 March 2000.