COBOL User Groups COBOL COBOL Programming
Home | Search | COBOL Forums | Join COBUG | Change COBUG Account | Support us | Advertise with us | Contact us | About us | Site Map

 COBOL Jobs List:  Companies Using COBOL
 Programming Software:  DCD III - COBOL Program Documentation | RPV - Graphical COBOL Print


COBOL Jobs

 >  COBOL Job Listing
 >  COBOL Job Seekers
 >  Post COBOL Jobs
 >  Interview Questions
 >  Job Resources

COBOL Resources

 >  Blogs
 >  Books
 >  Computer Timeshare
 >  COBOL Examples
 >  Forums
 >  Knowledge Bases
 >  Magazines
 >  Manuals
 >  Portals
 >  Support
 >  Syntax/Commands
 >  Training
 >  Tutorials
 >  User Groups
 >  White Papers

COBOL Software

 >  Change Management
 >  COBOL Compilers
 >  Data Access
 >  Database
 >  Documentation
 >  COBOL Editors
 >  File Conversion
 >  GUI
 >  Legacy Migration
 >  Legacy Modernization
 >  Mainframe Security
 >  Report Generators
 >  Sort
 >  Terminal Emulators
 >  Test
 >  Tools
 >  Trans. Processing

COBOL Information

 >  Events
 >  News Articles
 >  Newsletters
 >  Product News
 >  COBOL Standards

COBOL Migration, COBOL Conversion - UV Software Ad
UV Software has a complete solution for conversion of mainframe MVS or VSE JCL, COBOL, & DATA batch systems to Unix, Linux, or Windows/SFU.

Over 50 successful conversions including global corporations & government agencies. Please see demo conversions & detailed explanations at: www.uvsoftware.ca

You may send samples of your files for conversion & return by email. You may download 1 free utility from: www.uvsoftware.ca/ libuvhd.htm

'uvhd' displays data files with packed/binary fields in 'vertical hexadecimal', and includes many interactive functions (browse, search, select, update, print, etc).

COBOL Report Generator

Print graphical COBOL reports in Windows with RPV Reports. Insert graphics (images, photos, logos, charts, etc.) into your COBOL reports to improve the print quality of your COBOL reports. See how RPV Reports can be used to preview or print graphical COBOL reports in Windows.

COBOL Documentation

Are your mainframe COBOL applications properly documented? DCD III is a comprehensive COBOL documentation and application understanding tool that will allow you to reduce COBOL maintenance, development, and mainframe migration costs. Learn more about how you can document and understand your mainframe COBOL applications with DCD III.

COBOL Email List Rental

You can reach a highly targeted, qualified, opt-in audience of COBOL users by renting the COBUG email list. Contact us today advertise@cobug.com for our email list rental rates.

Website Advertisement

Advertise on the COBUG website and reach tens of thousands of COBOL users. Increase your COBOL sales leads. Contact COBUG at advertise@cobug.com for advertising rates.
 

COBOL Forums

 
COBOL Language [ return ]
From Message
yngwie

 Email

6/10/2010
18:42:25
Subject: Screen Section question


Message:
Hello! I'm currently taking a COBOL class and am stuck. We have to write a program that will take a users input and write it to disk. I've decide to use a screen section, but have run into a problem that I can't solve. Once my program runs through a sequence once, if the user does not enter data my checks on the user entry do not work and the previous data will be written to file again.

So my question... How when accepting data from a screen can I reset the captured LINE / COLUMN to blank?


I could easily just rewrite this without using a screen section, but I like it to look pretty. Here is my code any help on this would be appreciated. Thanks!

IDENTIFICATION DIVISION.
PROGRAM-ID. P136PART1.

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.
FILE-CONTROL.
/assigns C:P136.DAT TO FILEOUPUT
SELECT FILEOUTPUT
ASSIGN TO "C:/P136.DOC"
ORGANIZATION IS LINE SEQUENTIAL.

DATA DIVISION.
FILE SECTION.
/I will WRITE TO REPORT-OUT which will save the FILE TO disk
FD FILEOUTPUT.
01 REPORT-OUT PIC X(80).

WORKING-STORAGE SECTION.
01 ARE-THERE-MORE-RECORDS PIC X VALUE "Y".

/I will do a logic check ON the users input AND ASSIGN the
/correct STRING TO the USER-IN variables
01 ENTERED-STATE PIC X.
01 ENTERED-LOCATION-CT PIC X.
01 ENTERED-LOCATION-NY PIC X.

/this will be the users INPUT AND moved TO USER-OUT
01 USER-IN.
05 STATE-IN PIC X(6).
05 LOCATION-IN PIC X(15).
05 BALLOONS-IN PIC 9.
05 PROPANE-IN PIC 99.
05 PILOTS-IN PIC 9.
05 EMPLOYEES-IN PIC 9.
05 TOTAL-EX-IN PIC 9999.

01 USER-OUT.
05 STATE-OUT PIC X(6) VALUE SPACES.
05 PIC X(7) VALUE SPACES.
05 LOCATION-OUT PIC X(15) VALUE SPACES.
05 PIC X(7) VALUE SPACES.
05 BALLOONS-OUT PIC X VALUE SPACES.
05 PIC X(7) VALUE SPACES.
05 PROPANE-OUT PIC XX VALUE SPACES.
05 PIC X(7) VALUE SPACES.
05 PILOTS-OUT PIC X VALUE SPACES.
05 PIC X(7) VALUE SPACES.
05 EMPLOYEES-OUT PIC X VALUE SPACES.
05 PIC X(6) VALUE SPACES.
05 TOTAL-EX-OUT PIC $$,$$$ VALUE SPACES.
05 PIC X(5) VALUE SPACES.

/this NEXT SECTION will define the various screens
SCREEN SECTION.
/START screen
01 SCREEN-HOME.
05 BLANK SCREEN.
05 LINE 1 COLUMN 1 VALUE 'STATE NO.: '.
05 COLUMN 25 PIC X TO ENTERED-STATE.
05 LINE 2 COLUMN 5 VALUE 'ENTER 1 FOR CT'.
05 LINE 3 COLUMN 5 VALUE 'ENTER 2 FOR NY'.

/AFTER much reading online this will BLANK out PREVIOUS user
/entries
05 ERASE EOL LINE 1 COLUMN 25.



/this SCREEN will be displayed FOR CT
01 SCREEN-CT.
05 LINE 4 COLUMN 1 VALUE 'LOCATION NO.: '.
05 COLUMN 25 PIC X TO ENTERED-LOCATION-CT.
05 LINE 5 COLUMN 5 VALUE 'ENTER 1 FOR CANAAN'.
05 LINE 6 COLUMN 5 VALUE 'ENTER 2 FOR GOSHEN'.
05 LINE 7 COLUMN 5 VALUE 'ENTER 3 FOR LAKEVILLE'.
05 LINE 8 COLUMN 5 VALUE 'ENTER 4 FOR LIME ROCK'.
05 LINE 9 COLUMN 1 VALUE 'NUMBER OF BALLOONS: '.
05 COLUMN 25 PIC 9 TO BALLOONS-IN.
05 LINE 10 COLUMN 1 VALUE 'NO. OF PROPANE TANKS: '.
05 COLUMN 25 PIC 99 TO PROPANE-IN.
05 LINE 11 COLUMN 1 VALUE 'NO. OF PILOTS: '.
05 COLUMN 25 PIC 9 TO PILOTS-IN.
05 LINE 12 COLUMN 1 VALUE 'NO. OF OTHER EMPS: '.
05 COLUMN 25 PIC 9 TO EMPLOYEES-IN.
05 LINE 13 COLUMN 1 VALUE 'TOTAL EXPENSES ALL EMP: '.
05 COLUMN 25 PIC 9999 TO TOTAL-EX-IN.
05 ERASE EOL LINE 4 COLUMN 25.
05 ERASE EOL LINE 9 COLUMN 25.
05 ERASE EOL LINE 10 COLUMN 25.
05 ERASE EOL LINE 11 COLUMN 25.
05 ERASE EOL LINE 12 COLUMN 25.
05 ERASE EOL LINE 13 COLUMN 25.

/this SCREEN will be displayed FOR NY
01 SCREEN-NY.
05 LINE 4 COLUMN 1 VALUE 'LOCATION NO.: '.
05 COLUMN 25 PIC X TO ENTERED-LOCATION-NY.
05 LINE 5 COLUMN 5 VALUE 'ENTER 1 FOR ITHACA'.
05 LINE 6 COLUMN 5 VALUE 'ENTER 2 FOR LAKE GEORGE'.
05 LINE 7 COLUMN 5 VALUE 'ENTER 3 FOR QUOPUE'.
05 LINE 9 COLUMN 1 VALUE 'NUMBER OF BALLOONS: '.
05 COLUMN 25 PIC 9 TO BALLOONS-IN.
05 LINE 10 COLUMN 1 VALUE 'NO. OF PROPANE TANKS: '.
05 COLUMN 25 PIC 99 TO PROPANE-IN.
05 LINE 11 COLUMN 1 VALUE 'NO. OF PILOTS: '.
05 COLUMN 25 PIC 9 TO PILOTS-IN.
05 LINE 12 COLUMN 1 VALUE 'NO. OF OTHER EMPS: '.
05 COLUMN 25 PIC 9 TO EMPLOYEES-IN.
05 LINE 13 COLUMN 1 VALUE 'TOTAL EXPENSES ALL EMP: '.
05 COLUMN 25 PIC 9999 TO TOTAL-EX-IN.
05 ERASE EOL LINE 4 COLUMN 25.
05 ERASE EOL LINE 9 COLUMN 25.
05 ERASE EOL LINE 10 COLUMN 25.
05 ERASE EOL LINE 11 COLUMN 25.
05 ERASE EOL LINE 12 COLUMN 25.
05 ERASE EOL LINE 13 COLUMN 25.

/this SCREEN will be used IF an incorrect state IS entered
01 SCREEN-INCORRECT-STATE.
05 BLANK SCREEN.
05 LINE 1 COLUMN 1 VALUE 'INCORRECT STATE CODE'.
05 LINE 2 COLUMN 1 VALUE 'PLEASE ENTER: '.
05 LINE 3 COLUMN 5 VALUE '1 FOR CT'.
05 LINE 4 COLUMN 5 VALUE 'OR 2 FOR NY'.
05 LINE 5 COLUMN 5 PIC 9 TO ENTERED-STATE.
05 ERASE EOL LINE 5 COLUMN 5.

/this IS the incorrect location SCREEN FOR CT
01 SCREEN-INCORRECT-LOCATION-CT.
05 BLANK SCREEN.
05 LINE 1 COLUMN 1 VALUE 'INCORRECT LOCATION CODE'.
05 LINE 2 COLUMN 1 VALUE 'PLEASE ENTER: '.
05 LINE 3 COLUMN 5 VALUE 'ENTER 1 FOR CANAAN'.
05 LINE 4 COLUMN 5 VALUE 'ENTER 2 FOR GOSHEN'.
05 LINE 5 COLUMN 5 VALUE 'ENTER 3 FOR LAKEVILLE'.
05 LINE 6 COLUMN 5 VALUE 'ENTER 4 FOR LIME ROCK'.
05 LINE 7 COLUMN 5 PIC 9 TO ENTERED-LOCATION-CT.
05 ERASE EOL LINE 7 COLUMN 5.


/this IS the incorrect location SCREEN FOR NY
01 SCREEN-INCORRECT-LOCATION-NY.
05 BLANK SCREEN.
05 LINE 1 COLUMN 1 VALUE 'INCORRECT LOCATION CODE'.
05 LINE 2 COLUMN 1 VALUE 'PLEASE ENTER: '.
05 LINE 3 COLUMN 5 VALUE 'ENTER 1 FOR ITHACA'.
05 LINE 4 COLUMN 5 VALUE 'ENTER 2 FOR LAKE GEORGE'.
05 LINE 5 COLUMN 5 VALUE 'ENTER 3 FOR QUOPUE'.
05 LINE 6 COLUMN 5 PIC 9 TO ENTERED-LOCATION-NY.
05 ERASE EOL LINE 6 COLUMN 5.

/this IS the SCREEN TO determine IF there IS more DATA
01 SCREEN-MORE-RECORDS.
05 BLANK SCREEN.
05 LINE 1 COLUMN 1 VALUE 'IS THERE MORE DATA?: '.
05 COLUMN 25 PIC X TO ARE-THERE-MORE-RECORDS.
05 LINE 2 COLUMN 1 VALUE 'ENTER Y OR N'.
05 ERASE EOL LINE 1 COLUMN 25.

PROCEDURE DIVISION.

100-MAIN-MODULE.
OPEN OUTPUT FILEOUTPUT
/This will loop 150-run-module UNTIL the user IS done
PERFORM 150-RUN-MODULE
UNTIL ARE-THERE-MORE-RECORDS = 'n' OR 'N'

CLOSE FILEOUTPUT
STOP RUN.

150-RUN-MODULE.
PERFORM 200-INITIALIZATION-MODULE
/starts TO ACCEPT data
PERFORM 300-ACCEPT-DATA-MODULE
/checks the users INPUT FOR state
PERFORM 400-STATE-CHECK-MODULE
/checks the users INPUT FOR location
EVALUATE ENTERED-STATE
WHEN 1 PERFORM 500-LOCATION-CHECK-MODULE-CT
WHEN 2 PERFORM 510-LOCATION-CHECK-MODULE-NY
WHEN OTHER DISPLAY 'ERROR 1'
END-EVALUATE
PERFORM 600-WRITE-DATA-MODULE
PERFORM 700-MORE-DATA-MODULE.

/resets VALUES used FOR logic tests
200-INITIALIZATION-MODULE.
MOVE SPACES TO ENTERED-STATE
MOVE SPACES TO ENTERED-LOCATION-CT
MOVE SPACES TO ENTERED-LOCATION-NY
MOVE SPACES TO USER-IN.



300-ACCEPT-DATA-MODULE.


DISPLAY SCREEN-HOME
ACCEPT SCREEN-HOME.

400-STATE-CHECK-MODULE.
EVALUATE ENTERED-STATE
WHEN 1 PERFORM 420-STATE-CT-MODULE
WHEN 2 PERFORM 425-STATE-NY-MODULE
WHEN OTHER PERFORM 430-STATE-ERROR-MODULE
END-EVALUATE.
/accepts the rest OF the DATA FOR CT
420-STATE-CT-MODULE.
DISPLAY SCREEN-CT
ACCEPT SCREEN-CT
MOVE "1 (CT)" TO STATE-IN.

/accepts the rest OF the DATA FOR NY
425-STATE-NY-MODULE.
DISPLAY SCREEN-NY
ACCEPT SCREEN-NY
MOVE "2 (NY)" TO STATE-IN.

430-STATE-ERROR-MODULE.
DISPLAY SCREEN-INCORRECT-STATE
ACCEPT SCREEN-INCORRECT-STATE
/checks users INPUT FOR state
EVALUATE ENTERED-STATE
WHEN 1 PERFORM 420-STATE-CT-MODULE
WHEN 2 PERFORM 425-STATE-NY-MODULE
WHEN OTHER PERFORM 430-STATE-ERROR-MODULE
END-EVALUATE.
/check location INPUT IF state = CT
500-LOCATION-CHECK-MODULE-CT.
EVALUATE ENTERED-LOCATION-CT
WHEN 1 MOVE "1 (Canaan)" TO LOCATION-IN
WHEN 2 MOVE "2 (Goshen)" TO LOCATION-IN
WHEN 3 MOVE "3 (Lakeville)" TO LOCATION-IN
WHEN 4 MOVE "4 (Lime Rock" TO LOCATION-IN
WHEN OTHER PERFORM 501-CT-WRONG-LOC
END-EVALUATE.
501-CT-WRONG-LOC.
DISPLAY SCREEN-INCORRECT-LOCATION-CT
ACCEPT SCREEN-INCORRECT-LOCATION-CT
EVALUATE ENTERED-LOCATION-CT
WHEN 1 MOVE "1 (Canaan)" TO LOCATION-IN
WHEN 2 MOVE "2 (Goshen)" TO LOCATION-IN
WHEN 3 MOVE "3 (Lakeville)" TO LOCATION-IN
WHEN 4 MOVE "4 (Lime Rock" TO LOCATION-IN
WHEN OTHER PERFORM 501-CT-WRONG-LOC
END-EVALUATE.
/check location INPUT IF state = NY
510-LOCATION-CHECK-MODULE-NY.
EVALUATE ENTERED-LOCATION-NY
WHEN 1 MOVE "1 (Ithaca)" TO LOCATION-IN
WHEN 2 MOVE "2 (Lake George)" TO LOCATION-IN
WHEN 3 MOVE "3 (Quopue)" TO LOCATION-IN
WHEN OTHER PERFORM 512-NY-WRONG-LOC
END-EVALUATE.
512-NY-WRONG-LOC.
DISPLAY SCREEN-INCORRECT-LOCATION-NY
ACCEPT SCREEN-INCORRECT-LOCATION-NY
EVALUATE ENTERED-LOCATION-NY
WHEN 1 MOVE "1 (Ithaca)" TO LOCATION-IN
WHEN 2 MOVE "2 (Lake George)" TO LOCATION-IN
WHEN 3 MOVE "3 (Quopue)" TO LOCATION-IN
WHEN OTHER PERFORM 512-NY-WRONG-LOC
END-EVALUATE.
/writes DATA TO file
600-WRITE-DATA-MODULE.
MOVE STATE-IN TO STATE-OUT
MOVE LOCATION-IN TO LOCATION-OUT
MOVE BALLOONS-IN TO BALLOONS-OUT
MOVE PROPANE-IN TO PROPANE-OUT
MOVE PILOTS-IN TO PILOTS-OUT
MOVE EMPLOYEES-IN TO EMPLOYEES-OUT
MOVE TOTAL-EX-IN TO TOTAL-EX-OUT
WRITE REPORT-OUT FROM USER-OUT

AFTER ADVANCING 2 LINES.

700-MORE-DATA-MODULE.
DISPLAY SCREEN-MORE-RECORDS
ACCEPT SCREEN-MORE-RECORDS.





Rajiv64

6/10/2010
23:01:11
RE: Screen Section question


Message:
Which Compiler U R using ?



jwl

6/11/2010
01:59:15
RE: Screen Section question


Message:
Hi, there are a few problems with your code: the ERASE entries that you have included in each screen definition are executed when you display that screen and will blank out data that you have just displayed, SEE SCREEN-MORE-RECORDS.
I suggest that these lines be removed.
I will be busy for the next few hours, however when I get back I will take a good look at your code and then send you the relevant corrections and explanations.


jwl

6/11/2010
03:40:15
RE: Screen Section question


Message:
Hi,

I have entered a few comments into your code, which you can read and if you require more info please let us know.

I have mentioned the use of the INITIALIZE statement which works better than moving spaces to a group level that contains numeric fields.

The problem with your code is that if the user decides that there is more to be keyed in and then decides not to, there is no way that you allow for them to end.

You should allow for a exit coder on every screen and then you will not duplicate your output. Here is your code with the inserted comments.

IDENTIFICATION DIVISION.
PROGRAM-ID. P136PART1.

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.
FILE-CONTROL.
/assigns C:P136.DAT TO FILEOUPUT
SELECT FILEOUTPUT
ASSIGN TO "C:/P136.DOC"
ORGANIZATION IS LINE SEQUENTIAL.

DATA DIVISION.
FILE SECTION.
/I will WRITE TO REPORT-OUT which will save the FILE TO disk
FD FILEOUTPUT.
01 REPORT-OUT PIC X(80).

WORKING-STORAGE SECTION.
01 ARE-THERE-MORE-RECORDS PIC X VALUE "Y".

/I will do a logic check ON the users input AND ASSIGN the
/correct STRING TO the USER-IN variables
01 ENTERED-STATE PIC X.
01 ENTERED-LOCATION-CT PIC X.
01 ENTERED-LOCATION-NY PIC X.

/this will be the users INPUT AND moved TO USER-OUT
01 USER-IN.
05 STATE-IN PIC X(6).
05 LOCATION-IN PIC X(15).
05 BALLOONS-IN PIC 9.
05 PROPANE-IN PIC 99.
05 PILOTS-IN PIC 9.
05 EMPLOYEES-IN PIC 9.
05 TOTAL-EX-IN PIC 9999.

01 USER-OUT.
05 STATE-OUT PIC X(6) VALUE SPACES.
05 PIC X(7) VALUE SPACES.
05 LOCATION-OUT PIC X(15) VALUE SPACES.
05 PIC X(7) VALUE SPACES.
05 BALLOONS-OUT PIC X VALUE SPACES.
05 PIC X(7) VALUE SPACES.
05 PROPANE-OUT PIC XX VALUE SPACES.
05 PIC X(7) VALUE SPACES.
05 PILOTS-OUT PIC X VALUE SPACES.
05 PIC X(7) VALUE SPACES.
05 EMPLOYEES-OUT PIC X VALUE SPACES.
05 PIC X(6) VALUE SPACES.
05 TOTAL-EX-OUT PIC $$,$$$ VALUE SPACES.
05 PIC X(5) VALUE SPACES.
*
* As you initialize all fields before displaying the screen layouts
* you should use USING rather than TO as this will make sure that the
* previous data is cleared without using the ERASE EOL entries. It
* will also be useful if there are any defaults for fields as if they
* set to the most frequent or default, then the enering of data by
* the USER is made easier.
*
/this NEXT SECTION will define the various screens
SCREEN SECTION.
/START screen
01 SCREEN-HOME.
05 BLANK SCREEN.
05 LINE 1 COLUMN 1 VALUE 'STATE NO.: '.
05 COLUMN 25 PIC X TO ENTERED-STATE.
05 LINE 2 COLUMN 5 VALUE 'ENTER 1 FOR CT'.
05 LINE 3 COLUMN 5 VALUE 'ENTER 2 FOR NY'.

/AFTER much reading online this will BLANK out PREVIOUS user
/entries
*
* The screen declaration above starts with BLANK SCREEN therefore
* the line ERASE EOL is not required.
*
/this SCREEN will be displayed FOR CT
01 SCREEN-CT.
05 LINE 4 COLUMN 1 VALUE 'LOCATION NO.: '.
05 COLUMN 25 PIC X TO ENTERED-LOCATION-CT.
05 LINE 5 COLUMN 5 VALUE 'ENTER 1 FOR CANAAN'.
05 LINE 6 COLUMN 5 VALUE 'ENTER 2 FOR GOSHEN'.
05 LINE 7 COLUMN 5 VALUE 'ENTER 3 FOR LAKEVILLE'.
05 LINE 8 COLUMN 5 VALUE 'ENTER 4 FOR LIME ROCK'.
05 LINE 9 COLUMN 1 VALUE 'NUMBER OF BALLOONS: '.
05 COLUMN 25 PIC 9 TO BALLOONS-IN.
05 LINE 10 COLUMN 1 VALUE 'NO. OF PROPANE TANKS: '.
05 COLUMN 25 PIC 99 TO PROPANE-IN.
05 LINE 11 COLUMN 1 VALUE 'NO. OF PILOTS: '.
05 COLUMN 25 PIC 9 TO PILOTS-IN.
05 LINE 12 COLUMN 1 VALUE 'NO. OF OTHER EMPS: '.
05 COLUMN 25 PIC 9 TO EMPLOYEES-IN.
05 LINE 13 COLUMN 1 VALUE 'TOTAL EXPENSES ALL EMP: '.
05 COLUMN 25 PIC 9999 TO TOTAL-EX-IN.
/this SCREEN will be displayed FOR NY
01 SCREEN-NY.
05 LINE 4 COLUMN 1 VALUE 'LOCATION NO.: '.
05 COLUMN 25 PIC X TO ENTERED-LOCATION-NY.
05 LINE 5 COLUMN 5 VALUE 'ENTER 1 FOR ITHACA'.
05 LINE 6 COLUMN 5 VALUE 'ENTER 2 FOR LAKE GEORGE'.
05 LINE 7 COLUMN 5 VALUE 'ENTER 3 FOR QUOPUE'.
05 LINE 9 COLUMN 1 VALUE 'NUMBER OF BALLOONS: '.
05 COLUMN 25 PIC 9 TO BALLOONS-IN.
05 LINE 10 COLUMN 1 VALUE 'NO. OF PROPANE TANKS: '.
05 COLUMN 25 PIC 99 TO PROPANE-IN.
05 LINE 11 COLUMN 1 VALUE 'NO. OF PILOTS: '.
05 COLUMN 25 PIC 9 TO PILOTS-IN.
05 LINE 12 COLUMN 1 VALUE 'NO. OF OTHER EMPS: '.
05 COLUMN 25 PIC 9 TO EMPLOYEES-IN.
05 LINE 13 COLUMN 1 VALUE 'TOTAL EXPENSES ALL EMP: '.
05 COLUMN 25 PIC 9999 TO TOTAL-EX-IN.


/this SCREEN will be used IF an incorrect state IS entered
01 SCREEN-INCORRECT-STATE.
05 BLANK SCREEN.
05 LINE 1 COLUMN 1 VALUE 'INCORRECT STATE CODE'.
05 LINE 2 COLUMN 1 VALUE 'PLEASE ENTER: '.
05 LINE 3 COLUMN 5 VALUE '1 FOR CT'.
05 LINE 4 COLUMN 5 VALUE 'OR 2 FOR NY'.
05 LINE 5 COLUMN 5 PIC 9 TO ENTERED-STATE.

/this IS the incorrect location SCREEN FOR CT
01 SCREEN-INCORRECT-LOCATION-CT.
05 BLANK SCREEN.
05 LINE 1 COLUMN 1 VALUE 'INCORRECT LOCATION CODE'.
05 LINE 2 COLUMN 1 VALUE 'PLEASE ENTER: '.
05 LINE 3 COLUMN 5 VALUE 'ENTER 1 FOR CANAAN'.
05 LINE 4 COLUMN 5 VALUE 'ENTER 2 FOR GOSHEN'.
05 LINE 5 COLUMN 5 VALUE 'ENTER 3 FOR LAKEVILLE'.
05 LINE 6 COLUMN 5 VALUE 'ENTER 4 FOR LIME ROCK'.
05 LINE 7 COLUMN 5 PIC 9 TO ENTERED-LOCATION-CT.


/this IS the incorrect location SCREEN FOR NY
01 SCREEN-INCORRECT-LOCATION-NY.
05 BLANK SCREEN.
05 LINE 1 COLUMN 1 VALUE 'INCORRECT LOCATION CODE'.
05 LINE 2 COLUMN 1 VALUE 'PLEASE ENTER: '.
05 LINE 3 COLUMN 5 VALUE 'ENTER 1 FOR ITHACA'.
05 LINE 4 COLUMN 5 VALUE 'ENTER 2 FOR LAKE GEORGE'.
05 LINE 5 COLUMN 5 VALUE 'ENTER 3 FOR QUOPUE'.
05 LINE 6 COLUMN 5 PIC 9 TO ENTERED-LOCATION-NY.
05 ERASE EOL LINE 6 COLUMN 5.

/this IS the SCREEN TO determine IF there IS more DATA
01 SCREEN-MORE-RECORDS.
05 BLANK SCREEN.
05 LINE 1 COLUMN 1 VALUE 'IS THERE MORE DATA?: '.
05 COLUMN 25 PIC X TO ARE-THERE-MORE-RECORDS.
05 LINE 2 COLUMN 1 VALUE 'ENTER Y OR N'.
05 ERASE EOL LINE 1 COLUMN 25.

PROCEDURE DIVISION.

100-MAIN-MODULE.
OPEN OUTPUT FILEOUTPUT
/This will loop 150-run-module UNTIL the user IS done
PERFORM 150-RUN-MODULE
UNTIL ARE-THERE-MORE-RECORDS = 'n' OR 'N'

CLOSE FILEOUTPUT
STOP RUN.

150-RUN-MODULE.
PERFORM 200-INITIALIZATION-MODULE
/starts TO ACCEPT data
PERFORM 300-ACCEPT-DATA-MODULE
/checks the users INPUT FOR state
PERFORM 400-STATE-CHECK-MODULE
/checks the users INPUT FOR location
EVALUATE ENTERED-STATE
WHEN 1 PERFORM 500-LOCATION-CHECK-MODULE-CT
WHEN 2 PERFORM 510-LOCATION-CHECK-MODULE-NY
WHEN OTHER DISPLAY 'ERROR 1'
END-EVALUATE
*
* For the above performs see coments at these routines
*
PERFORM 600-WRITE-DATA-MODULE
PERFORM 700-MORE-DATA-MODULE.

/resets VALUES used FOR logic tests
200-INITIALIZATION-MODULE.



MOVE SPACES TO ENTERED-STATE
MOVE SPACES TO ENTERED-LOCATION-CT
MOVE SPACES TO ENTERED-LOCATION-NY
MOVE SPACES TO USER-IN.
*
* USER-IN is a group level that contains numeric fields.
* USE INITIALIZE USER-IN to clear all fields correctly.
*
*


300-ACCEPT-DATA-MODULE.


DISPLAY SCREEN-HOME
ACCEPT SCREEN-HOME.

400-STATE-CHECK-MODULE.
EVALUATE ENTERED-STATE
WHEN 1 PERFORM 420-STATE-CT-MODULE
WHEN 2 PERFORM 425-STATE-NY-MODULE
WHEN OTHER PERFORM 430-STATE-ERROR-MODULE
END-EVALUATE.

/accepts the rest OF the DATA FOR CT
420-STATE-CT-MODULE.
DISPLAY SCREEN-CT
ACCEPT SCREEN-CT
MOVE "1 (CT)" TO STATE-IN.

/accepts the rest OF the DATA FOR NY
425-STATE-NY-MODULE.
DISPLAY SCREEN-NY
ACCEPT SCREEN-NY
MOVE "2 (NY)" TO STATE-IN.

430-STATE-ERROR-MODULE.
DISPLAY SCREEN-INCORRECT-STATE
ACCEPT SCREEN-INCORRECT-STATE
/checks users INPUT FOR state
EVALUATE ENTERED-STATE
WHEN 1 PERFORM 420-STATE-CT-MODULE
WHEN 2 PERFORM 425-STATE-NY-MODULE
WHEN OTHER PERFORM 430-STATE-ERROR-MODULE
END-EVALUATE.
/check location INPUT IF state = CT
500-LOCATION-CHECK-MODULE-CT.
EVALUATE ENTERED-LOCATION-CT
WHEN 1 MOVE "1 (Canaan)" TO LOCATION-IN
WHEN 2 MOVE "2 (Goshen)" TO LOCATION-IN
WHEN 3 MOVE "3 (Lakeville)" TO LOCATION-IN
WHEN 4 MOVE "4 (Lime Rock" TO LOCATION-IN
WHEN OTHER PERFORM 501-CT-WRONG-LOC
END-EVALUATE.
*
* The following code can allow the USER to crash the system if a
* wrong code is continually keyed in. This routine will continue
* to perform itself until a correct code is enetered, which can
* cause an overflow in the stack. Perform the above routine with
* exit check so that all checking is done in one place.
* eg; Define an exit code in the Data Division (eg: DATA-ERROR)
* At the beginning of the above routine insert
* MOVE 'N' TO DATA-ERROR.
*
* In 501...... remove the EVALUATE and Insert
* MOVE 'Y' TO DATA-ERROR.
*
* I have remarked out the EVALUATE and inserted the above
* line of code. Amend this to suit your coding standards.
*
* Now you need to change the PERFORM 500...... to
* PERFORM 500...... UNTIL DATA_ERROR = "N"
*
* DO THE SAME FOR 510
*


501-CT-WRONG-LOC.
DISPLAY SCREEN-INCORRECT-LOCATION-CT
ACCEPT SCREEN-INCORRECT-LOCATION-CT
MOVE "Y" TO DATA-ERROR.
* EVALUATE ENTERED-LOCATION-CT
* WHEN 1 MOVE "1 (Canaan)" TO LOCATION-IN
* WHEN 2 MOVE "2 (Goshen)" TO LOCATION-IN
* WHEN 3 MOVE "3 (Lakeville)" TO LOCATION-IN
* WHEN 4 MOVE "4 (Lime Rock" TO LOCATION-IN
* WHEN OTHER PERFORM 501-CT-WRONG-LOC
* END-EVALUATE.
/check location INPUT IF state = NY
510-LOCATION-CHECK-MODULE-NY.
EVALUATE ENTERED-LOCATION-NY
WHEN 1 MOVE "1 (Ithaca)" TO LOCATION-IN
WHEN 2 MOVE "2 (Lake George)" TO LOCATION-IN
WHEN 3 MOVE "3 (Quopue)" TO LOCATION-IN
WHEN OTHER PERFORM 512-NY-WRONG-LOC
END-EVALUATE.
*
* The following code can allow the USER to crash the system if a
* wrong code is continually keyed in. This routine will continue
* to perform itself until a correct code is enetered, which can
* cause an overflow in the stack.
*

512-NY-WRONG-LOC.
DISPLAY SCREEN-INCORRECT-LOCATION-NY
ACCEPT SCREEN-INCORRECT-LOCATION-NY
EVALUATE ENTERED-LOCATION-NY
WHEN 1 MOVE "1 (Ithaca)" TO LOCATION-IN
WHEN 2 MOVE "2 (Lake George)" TO LOCATION-IN
WHEN 3 MOVE "3 (Quopue)" TO LOCATION-IN
WHEN OTHER PERFORM 512-NY-WRONG-LOC
END-EVALUATE.
/writes DATA TO file
600-WRITE-DATA-MODULE.
MOVE STATE-IN TO STATE-OUT
MOVE LOCATION-IN TO LOCATION-OUT
MOVE BALLOONS-IN TO BALLOONS-OUT
MOVE PROPANE-IN TO PROPANE-OUT
MOVE PILOTS-IN TO PILOTS-OUT
MOVE EMPLOYEES-IN TO EMPLOYEES-OUT
MOVE TOTAL-EX-IN TO TOTAL-EX-OUT
WRITE REPORT-OUT FROM USER-OUT

AFTER ADVANCING 2 LINES.

700-MORE-DATA-MODULE.
DISPLAY SCREEN-MORE-RECORDS
ACCEPT SCREEN-MORE-RECORDS.



P 1  Next Page >>


 
[ Go to Top of Page ]
System z - Consolidation of 4GL and Makro-COBOL, PKS Software GmbH Banner Ad
Mainframe Applications - SysperTec Banner Ad
COBOL Tools - Semantic Design Banner Ad
ISAM/VSAM to SQL Database Connectivity COBOL - Parkway Ad
COBOL Migration, Application - MigrationWare Ad












COBOL Job Seekers
COBOL Jobs Looking for a COBOL job? Submit your resume here and have it viewed by employers and recruiters hiring for COBOL positions.

Employers & Recruiters
Post COBOL Jobs Do you need to fill a COBOL position? Post your COBOL jobs here and find the most qualified COBOL candidates to fill your COBOL position.

Call for Articles
COBOL Newsletters Articles are being sought for the COBUG newsletters.
Will you help us in our efforts to provide newsletters for the COBOL community at large? Contribute to the COBUG newsletters! Answer this call for COBOL and related legacy articles.

Local COBOL User Groups
COBOL User Group Check out the list of local COBOL user groups from around the world and join a user group near you.


Call for User Group Leaders!
COBOL User Groups Get Involved! We are looking for user group leaders to help organize and coordinate a local COBOL user group.

Join COBUG!
COBOL User Groups Become a part of the COBUG community today. Join Now ...


COBOL Forums
COBOL Forum Try our forums for help!
Let the COBUG members help you. Post your issues!



[Go to Top of Page]


COBOL (c) Information Computing Services. All Rights Reserved. COBOL