gnucobol-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[open-cobol-list] Reporting a problem with SCREEN SECTION in Version 1.1


From: Larry Cullen
Subject: [open-cobol-list] Reporting a problem with SCREEN SECTION in Version 1.1.0
Date: Mon, 07 Jul 2008 20:14:01 -0500
User-agent: Thunderbird 2.0.0.14 (Windows/20080421)

Greetings,

I just downloaded and installed the pre-release copy of Version 1.1.0 today. That all went very well and I ran the tests as recommended. Very impressive.

I'm running on Suse Linux Version 10.3 x386.

I have all the latest libraries loaded. Included those needed to support indexed files, and the screen section. I wanted to experiment with the screen section capability to see how that worked.

The attached COBOL source file should be self explanatory. When the resulting program is run several things happen. The application should display five records at a time from a group of eight records written to a "line sequential" file that the program creates initially. The first page would display the first five records and the second page would then display the remaining three records. User input is accepted to either quit without viewing the last three records or to proceed with seeing the last three records.

When the application is run the eight records first get recorded to the file. This works fine. Then program then reads these records, but the display does not work correctly. The first record read gets displayed five time on the screen. When the user is prompted to enter "Q" to Quit, entering "Q" and pressing the "Enter" key does not terminate the loop. The sixth record in the file is then displayed three times on the next screen.

Apparently all of the problems have to do with the way the screen section is being handled. I've tried commenting out all of the SCREEN SECTION and then used a crude DISPLAY line to determine that the records are being read properly and the index values are being computed properly.

I think that you'll see exactly what I mean if you compile the attached file and try it.

Thanks,

Larry Cullen

000001 IDENTIFICATION DIVISION.
000002 PROGRAM-ID. SCRSECT.
000003 AUTHOR. L E CULLEN.
000004*---------------------------------------------------
000005 ENVIRONMENT DIVISION.
000000 CONFIGURATION SECTION.
000000   SOURCE-COMPUTER. Linux.
000000   OBJECT-COMPUTER. Linux.
000006 INPUT-OUTPUT SECTION.
000007 FILE-CONTROL.
000008 SELECT INPUT-FILE ASSIGN TO "SCR1.DAT"
000009   ORGANIZATION LINE SEQUENTIAL.
000010*---------------------------------------------------
000011 DATA DIVISION.
000012 FILE SECTION.
000013 FD  INPUT-FILE
000014      DATA RECORD IS INPUT-REC.
000015 01  INPUT-REC.
000016     05  ID-IN            PIC XXXX.
000017     05  NAME-IN          PIC X(20).
000018*---------------------------------------------------
000019 WORKING-STORAGE SECTION.
000024 77 CUR              PIC 99       VALUE 4.
000025 77 SUBZ             PIC 9        VALUE 0.
000000*
000020 01  INDICATORS.
000021     05  EOF-IND          PIC XXX      VALUE "NO ".
000022 01  RESPONSES.
000023     05  SCR-RESP-WS      PIC X        VALUE SPACES.
000026 01  DATA-FOR-SCREEN.
000027     05  INFO-FOR-SCR OCCURS 5 TIMES.
000028         10  ID-IN-WS         PIC XXXX.
000029         10  NAME-IN-WS       PIC X(20).
000030*---------------------------------------------------
000031 SCREEN SECTION.
000032 01 DATA-SCREEN.
000033  05 HDR-INFO.
000034    10 VALUE "DATA SCREEN" BLANK SCREEN LINE 01 COL 30.
000035    10 VALUE "ID #" LINE 03 COL 12.
000036    10 VALUE "NAME" LINE 03 COL 17.
000037  05 INFO-SCR-IN.
000038    10 ID-ON-SCR-IN LINE CUR COL 12 PIC XXXX FROM ID-IN-WS(SUBZ).
000039    10 NAME-ON-SCR-IN LINE CUR COL 17 PIC X(20) FROM 
000040        NAME-IN-WS(SUBZ).
000041  05 RESP-INFO.
000042    10 VALUE "Q - TO QUIT:" LINE 17 COL 30.
000043    10 RESPONSE-SCR LINE 17 COL 43 PIC X TO SCR-RESP-WS.
000044*---------------------------------------------------
000045 PROCEDURE DIVISION.
000046 MAINLINE.
000047   PERFORM A-100-INITIALIZE.
000040   PERFORM B-100-PROCESS.
000049   PERFORM C-100-TERMINATE.
000050   STOP RUN.
000051*---------------------------------------------------
000052 A-100-INITIALIZE.
000053   OPEN OUTPUT INPUT-FILE.
000054   MOVE "0001RECORD NUMBER ONE   " TO INPUT-REC.
000055   WRITE INPUT-REC.
000056   MOVE "0002RECORD NUMBER TWO   " TO INPUT-REC.
000057   WRITE INPUT-REC.
000058   MOVE "0003RECORD NUMBER THREE " TO INPUT-REC.
000059   WRITE INPUT-REC.
000060   MOVE "0004RECORD NUMBER FOUR  " TO INPUT-REC.
000061   WRITE INPUT-REC.
000062   MOVE "0005RECORD NUMBER FIVE  " TO INPUT-REC.
000063   WRITE INPUT-REC.
000064   MOVE "0006RECORD NUMBER SIX   " TO INPUT-REC.
000065   WRITE INPUT-REC.
000066   MOVE "0007RECORD NUMBER SEVEN " TO INPUT-REC.
000067   WRITE INPUT-REC.
000068   MOVE "0008RECORD NUMBER EIGHT " TO INPUT-REC.
000069   WRITE INPUT-REC.
000070   CLOSE INPUT-FILE.
000071   OPEN INPUT INPUT-FILE.
000072*---------------------------------------------------
000073 B-100-PROCESS.
000074   READ INPUT-FILE
000075     AT END
000076       MOVE "YES" TO EOF-IND.
000077   PERFORM B-200-LOOP
000078       UNTIL EOF-IND = "YES" OR
000079       SCR-RESP-WS = "Q" OR
000080       SCR-RESP-WS = "q".
000081*---------------------------------------------------
000082 B-200-LOOP.
000083   MOVE 4 TO CUR.
000084   MOVE 0 TO SUBZ.
000085   DISPLAY HDR-INFO.
000086   PERFORM B-300-SETUP
000087     UNTIL SUBZ > 4 OR 
000088           EOF-IND = "YES" OR 
000089           SCR-RESP-WS = "Q" OR
000090           SCR-RESP-WS = "q".
000091   DISPLAY RESP-INFO.
000092   ACCEPT RESP-INFO.
000093*---------------------------------------------------
000094 B-300-SETUP.
000095   ADD 1 TO SUBZ.
000096   ADD 1 TO CUR.
000097   MOVE ID-IN TO ID-IN-WS ( SUBZ ).
000098   MOVE NAME-IN TO NAME-IN-WS ( SUBZ ).
000099   DISPLAY INFO-SCR-IN.
000100   READ INPUT-FILE
000101     AT END
000102       MOVE "YES" TO EOF-IND.
000103*---------------------------------------------------
000104 C-100-TERMINATE.
000105   CLOSE INPUT-FILE.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]