IDENTIFICATION DIVISION.
PROGRAM-ID. UNSTRNGP.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT VARRECFILE ASSIGN TO VARLEN
ORGANIZATION IS SEQUENTIAL
FILE STATUS IS WS-FILE-STATUS.
DATA DIVISION.
FILE SECTION.
FD VARRECFILE.
01 VARLENREC.
02 SID PIC 9(7).
02 NAME.
03 SURNAME PIC X(8).
03 INITIALS PIC XX.
02 DATEOFBIRTH.
03 YOBIRTH PIC 9(4).
03 MOBIRTH PIC 9(2).
03 DOBIRTH PIC 9(2).
02 COURSECODE PIC X(4).
02 GENDER PIC X.
02 FILLER PIC X(91).
WORKING-STORAGE SECTION.
01 WS-MESSAGES.
10 WS-FILE-STATUS PIC X(02).
PROCEDURE DIVISION.
BEGIN.
DISPLAY 'INSIDE'.
OPEN INPUT VARRECFILE.
DISPLAY 'FILE STATUS' WS-FILE-STATUS.
READ VARRECFILE
AT END MOVE HIGH-VALUES TO VARLENREC.
CLOSE VARRECFILE.
END-READ.
DISPLAY 'AFTER READ'.
DISPLAY 'VARLENREC' VARLENREC
PERFORM UNTIL VARLENREC = HIGH-VALUES
DISPLAY 'INSIDE PERFORM'
DISPLAY SID SPACE NAME SPACE COURSECODE SPACE YOBIRTH
DISPLAY 'AFTER DISP VAL'
END-PERFORM
STOP RUN.
When I'm running this its going in infinite loop? What to do and its not generating the output in display statement " DISPLAY SID SPACE NAME SPACE COURSECODE SPACE YOBIRTH"
Joined: 19 May 2007 Posts: 1001 Location: Virginia, USA
Quote:
READ VARRECFILE
AT END MOVE HIGH-VALUES TO VARLENREC.
CLOSE VARRECFILE.
END-READ.
DISPLAY 'AFTER READ'.
DISPLAY 'VARLENREC' VARLENREC
PERFORM UNTIL VARLENREC = HIGH-VALUES
DISPLAY 'INSIDE PERFORM'
DISPLAY SID SPACE NAME SPACE COURSECODE SPACE YOBIRTH
DISPLAY 'AFTER DISP VAL'
END-PERFORM
When you close varrecfile then you nolonger have access to varlenrec. If you had access to varlenrec there is nothing inside your perform loop that would ever change its value so you would be in a infinite loop. I'm surprised you aren't getting an abend.
Joined: 18 Jul 2007 Posts: 1199 Location: At my desk
Program logic?
OPEN INPUT VARRECFILE.
Open the file...
DISPLAY 'FILE STATUS' WS-FILE-STATUS.
READ VARRECFILE
AT END MOVE HIGH-VALUES TO VARLENREC.
Read the first reord.
Of at least one record is there, no high-values....
CLOSE VARRECFILE.
Loose the file.
END-READ.
Kind of dumb?
DISPLAY 'AFTER READ'.
DISPLAY 'VARLENREC' VARLENREC
PERFORM UNTIL VARLENREC = HIGH-VALUES
perform until HV, which is it not
DISPLAY 'INSIDE PERFORM'
DISPLAY SID SPACE NAME SPACE COURSECODE SPACE YOBIRTH
DISPLAY 'AFTER DISP VAL'
display stuff....
END-PERFORM
Go back to the inline perform and do it again, over and over again.....