lecture 31 numeric edited alphabetic (a) alphanumeric (x) numeric (9, v, s) numeric edited (9, z,...

Post on 01-Jan-2016

229 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

lecture 3 1

Numeric Edited

• Alphabetic (A)• AlphaNumeric (X)• Numeric (9, V, S)

• Numeric Edited (9, Z, comma, decimal point, minus sign)– Z = zero suppressed

digit

Value PIC Stored

0 Z(4) (spaces)

0 ZZZ9 0

87 ZZZ9 87

+2,319 ZZ,ZZZ- 2,319

-338 ZZ,ZZZ- 338-

+5,933 Z,ZZZ.99- 5,933.00

-.05 Z,ZZZ.99- .05-

lecture 3 2

PROCEDURE DIVISION

• Contains instructions to read, process, and output data

• I/O operations (OPEN, CLOSE, READ, WRITE), MOVE, DISPLAY, ACCEPT, Arithmetic (ADD, SUBSTRACT, MULTIPLY, DIVIDE), STOP RUN, …

lecture 3 3

Coding the Procedure Division

• Divide into paragraphs

• Each paragraph represents one procedure

• The first procedure should represent the function of the entire program

• The procedures called by the first procedure should represent the functions performed by those procedures

lecture 3 4

PERFORM/PERFORM UNTIL

PERFORM procedure-name.• Skips to the named procedure, executes it, and returns to the

statement after the PERFORM.

PERFORM procedure-name UNTIL condition.• Execute the procedure until the condition is true.

• It’s a loop statement

• The condition is tested first

• Execution continues after PERFORM when condition is true.

lecture 3 5

STOP RUN statement

STOP RUN.

• Terminates the program

• Should appear only once in your program

• All files should be closed prior to executing this statement

lecture 3 6

MOVE - Assignment MOVE {data-name | literal } TO data-name-2 … .

Copies data from a sending field to one or more receiving fields

MOVE NUMBER-ENTERED TO PAY-RATE.MOVE “Y” TO END-OF-SESSION-SWITCH.MOVE 1 TO PAGE-NUMBER.

Move data to multiple locationsMOVE 15 TO NUM-1 NUM-2 NUM-3

lecture 3 7

MOVE

• The original data is retained in the sending field (only a copy operation)

• If the sending field is numeric and the receiving field is numeric edited, the MOVE converts from one form to the other

• If (receiving field size > sending field size) then– filled out with trailing blanks in an alphanumeric move,

or– leading zeros in a numeric move

• If (receiving field size < sending field size) then moved data is truncated

lecture 3 8

SENDING FIELD RECEIVING FIELD

Alphabetic

Alphanumeric

Numeric

Numeric Edited

ALPHABETIC ALPHANUMERIC NUMERIC NUMERIC EDITED

Valid

Invalid

Invalid

Invalid

Valid

Valid

Integer

Valid

Invalid

Integer

Valid

Valid

Invalid

Integer

Valid

Invalid

MOVE Rules

lecture 3 9

ExamplesAlphanumeric Alphanumeric

PIC Sending Contents PIC Rec. Contents

X(5) ‘ABCDE’ X(5) ‘ABCDE’

X(5) ‘ABCDE’ X(4) ‘ABCD’

X(5) ‘ABCDE’ X(6) ‘ABCDE ‘

• Data is copied from left to right with space filling or truncation on the right

• The contents of the receiving item are completely replaced

lecture 3 10

ExamplesNumeric Numeric

PIC Sending Contents PIC Rec. Contents

9(5) 12345 9(5) 12345

9(5) 12345 9(4) 2345

9(5) 12345 9(6) 012345

9(3)V99 123^45 9(3) 123

9(3)V99 123^45 9V99 3^45

9(3) 123 9(3)V99 123^00

• Data is aligned at the decimal point with zero filling or truncation as necessary

• When the decimal point is not explicitly specified, an assumed decimal point is implied immediately after its rightmost character

lecture 3 11

OPEN Read/Write Close

• OPEN– Only the files you declared in a SELECT

and corresponding FD statements• CLOSE

– You should close a file when either :

• it will not be read/written anymore

• before the program ends

File I/O

lecture 3 12

OPEN and CLOSE

OPEN INPUT filename-1 ...

OUTPUT filename-2 …CLOSE filename …

• INPUT is a file you read into the program• OUTPUT is a file the program writes into• OPEN/CLOSE many files on the same line• Call OPEN before any READ/WRITE• After CLOSE you cannot READ/WRITE.

If you OPEN an input file again, you can read the records starting from the first record

lecture 3 13

READ

READ filenameAT END statement

END-READ.

• The filename is defined with FD• Reads a single record• Each successive call reads the next record• AT END (optional) executes the statement if

the EOF has been reached• END-READ is optional (don’t forget period).

lecture 3 14

Priming Read

• Pseudocode

Read input record Priming Read

Loop if not EOF

Calculate information

Read input next record

End-loop

lecture 3 15

Priming Read…MOVE ‘N’ TO INPUT-EOF.READ INPUT-FILE

AT END MOVE ‘Y’ TO INPUT-EOF.…PERFORM PROCESS-RECORDS

UNTIL INPUT-EOF = ‘Y’.…PROCESS RECORDS…

READ INPUT-FILE AT-END MOVE ‘Y’ TO INPUT-EOF.

lecture 3 16

WRITE

WRITE record-nameAFTER/BEFORE ADVANCING more.

more is PAGE integer [LINE | LINES] data-name [LINE | LINES]

• One record is written to the file• AFTER/BEFORE ADVANCING (optional)

– Printer usage to advance to the top of the next page or advance a number of lines

lecture 3 17

DISPLAYDISPLAY (data-name-1 | literal-1) … WITH NO ADVANCING.

• Display literals or data values on the screen

• A single DISPLAY can display several items (separated by spaces) and then a carriage return

• The WITH NO ADVANCING clause (optional) suppresses the carriage return

• Handy tool to debug your program

lecture 3 18

Examples

DISPLAY “ “.

DISPLAY 15000.

DISPLAY “----------------------------------------------------------”

DISPLAY “End of Session.”.

DISPLAY SALES-AMOUNT.

DISPLAY “THE SALES AMOUNT IS “ SALES-AMOUNT “.”.

lecture 3 19

ACCEPTACCEPT data-name FROM reserve-word.

• Waits for input from the user• Input is stored in the variable data-name and the cursor

moves to the next line• Input should be consistent with the PIC of the data-name. If

not, it may be truncated or adjusted.• FROM reserve word (optional) :

DATE PIC 9(6) YYMMDDDAY PIC 9(5) YYDDDDAY-OF-WEEK PIC 9 1 = MondayTIME PIC 9(8) HHMMSSss

ss = S/100military time

lecture 3 20

ADD

DATA NAME A B C

Value before execution 5 10 30

Value after execution of:

ADD A TO C 5 10 35

ADD A B TO C 5 10 45

ADD A TO B GIVING C 5 10 15

ADD A 18 B GIVING C 5 10 33

ADD A 18 B TO C 5 10 63

ADD 1 TO B C 5 11 31

lecture 3 21

DATA NAME A B C D

Value before execution 5 10 30 100

Value after execution of:

SUBTRACT A FROM C 5 10 25 100

SUBTRACT A B FROM C 5 10 15 100

SUBTRACT A B FROM C GIVING D 5 10 30 15

SUBTRACT 10 FROM C D 5 10 20 90

SUBTRACT

lecture 3 22

DATA NAME A B C

Value before execution 5 10 30

Value after execution of:

MULTIPLY B BY A GIVING C 5 10 50

MULTIPLY A BY B GIVING C 5 10 50

MULTIPLY A BY B 5 50 15

MULTIPLY B BY A 50 10 30

MULTIPLY A BY 3 GIVING B C 5 15 15

MULTIPLY

lecture 3 23

DATA NAME A B C

Value before execution 5 10 30

Value after execution of:

DIVIDE 2 INTO B. 5 5 30

DIVIDE 2 INTO B GIVING C. 5 10 5

DIVIDE B BY 5 GIVING A 2 10 30

DIVIDE A INTO B C 5 2 6

DIVIDE A INTO B GIVING C 5 10 2

DIVIDE 3 INTO A GIVING B REMAINDER C 5 1 2

DIVIDE

lecture 3 24

Conditions

Format : {variable|literal|reserve-const} symbol {variable|literal|reserve-const}

• Symbol

= < > >= <=

• Reserve-const

ZERO, ZEROS, SPACE, SPACES

top related