Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

29
Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5

Transcript of Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Page 1: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Presentation © Copyright 2002, Bryan Meyers

Top-Down, Structured Program Design

Chapter 5

Page 2: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

2

Objectives

• Determine how to design and write structured RPG programs

• Use structured RPG operations that perform sequence, selection, and iteration

• Use subroutines

• Design a control break program

Page 3: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

3

Structured Design

• A methodology that limits its control to 3 basic structures– Sequence– Selection (decision)– Iteration (repetition, looping)

• Each of these control structures has a single entry point and a single exit point

Page 4: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

4

Sequence Control Structure

Statement

Statement

Statement

Page 5: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

5

Selection Control Structure

Condition?

Statement(s) Statement(s)

TrueFalse

Page 6: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

6

Iteration Control Structure

Condition? Statement(s)True

False

Page 7: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

7

Relational CodesSymbol Code Meaning

> GT Greater than

< LT Less than

= EQ Equal to

<> NE Not equal to

<= LE Less than or equal to

>= GEGreater than or equal

to

Page 8: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

8

Collating sequence

• Character by character comparison• EBCDIC• Digits are compared based on algebraic

value• Letters are smaller than digits• Lowercase letters are smaller then

uppercase letters• A blank is smaller than any other

displayable character

Page 9: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

9

Selection Operations

• IF Conditional expression– ELSE– ENDIF

• AND/OR• Nested IFs

– ELSEIF

• SELECT– WHEN– ENDSL

Page 10: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

10

IF / ENDIF

• If the comparison is true all statements between the IF and ENDIF are performed

• If the comparison is false the statements are bypassed

*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 /FREE IF Age >= 65; SeniorCnt = SeniorCnt + 1; ENDIF; /END-FREE

Page 11: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

11

IF / ELSE / ENDIF

• If the comparison is true all statements between the IF and ELSE are performed

• If the comparison is false all the statements between the ELSE and the ENDIF are performed

*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 /FREE IF Hours <= 40; EVAL(H) TotalPay = Hours * PayRate; ELSE; EVAL(H) TotalPay = 40 * PayRate + (Hours - 40) * PayRate * 1.5; ENDIF; /END-FREE

Page 12: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

12

AND / OR

• AND: Both relationships must be true• OR: One or the other or both relationships must

be true*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 /FREE IF Age >= 65 AND Status = 'R'; // This block of code is executed only if Age >=65 and Status =R. ELSE; // If one or both conditions are not met,this code is executed. ENDIF;

IF Age >= 65 OR Status = 'R'; // This block is executed if one or both conditions are true. ELSE; // This block is executed only if both conditions are false. ENDIF; /END-FREE

Page 13: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

13

Nested IFs

• Build IFs within IFs– Each IF requires an ENDIF

*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 /FREE IF Sales <=5000; Rate =.005; ELSE; IF Sales <=10000; Rate =.0075; ELSE; IF Sales <=20000; Rate =.01; ELSE; Rate =.015; ENDIF; ENDIF; ENDIF; /END-FREE

Page 14: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

14

Nested IFs

• ELSEIF combines function of ELSE and IF statement– Single ENDIF ends IF/ELSEIF blocks

*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 /FREE IF Sales <=5000; Rate =.005; ELSEIF Sales <=10000; Rate =.0075; ELSEIF Sales <=20000; Rate =.01; ELSE; Rate =.015; ENDIF; /END-FREE

Page 15: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

15

SELECT

• Appears on a line alone to identify the start of a case construct

• SELECT is followed by one or more WHENs– Each WHEN specifies a condition to be tested– Each WHEN is followed by one or more statements to be

performed– As soon as it encounters a true condition, the computer

executes the operation(s) following a WHEN• Then control falls to ENDSL

• WHEN conditions can be coupled with AND/OR operations

• OTHER means “in all other cases”– OTHER should be the final catch all

*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 /FREE SELECT; WHEN Sales <=5000; Rate =.005; WHEN Sales <=10000; Rate =.0075; WHEN Sales <=20000; Rate =.01; OTHER; Rate =.015; ENDSL; /END-FREE

Page 16: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

16

IF and Page Overflow

• Built in overflow indicators– OA thru OG and OV

• Use OFLIND File Specification keyword to associate indicator with report file

• Indicator will automatically come *ON when printer reaches overflow line at bottom of page

Page 17: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

17

Iteration Operations

• DOW Conditional expression - ENDDO

• DOU Conditional expression - ENDDO

• FOR - ENDFOR

Page 18: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

18

Do While Loop

• Leading decision loop

Condition?

Statement(s)

Stop

Start

False

True

Page 19: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

19

DOW

• Establishes a leading decision loop, based on a comparison– Allows AND and OR to form compound conditions

• Operations between DOW and ENDDO repeat as long as condition remains true

*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 /FREE Number = 0; // Initialize Number to zero. Sum = 0; // Initialize Sum to zero. DOW Number < 100; // Loop while Number is less than 100. Number = Number + 1; // Increment Number by 1. Sum = Sum + Number; // Add Number to accumulator Sum. ENDDO; /END-FREE

Page 20: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

20

Do Until Loop

• Trailing decision loop

Condition?

Statement(s)

Stop

Start

False

True

Page 21: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

21

DOU

• Establishes a trailing decision loop, based on a comparison

• DOU repeats until the condition becomes true– Statements always execute at least once

*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 /FREE Number = 0; // Initialize Number to zero. Sum = 0; // Initialize Sum to zero. DOU Number = 100; // Loop until Number equals 100. Number = Number + 1; // Increment Number by 1. Sum = Sum + Number; // Add Number to accumulator Sum. ENDDO; /END-FREE

Page 22: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

22

FOR

• Initiates a count-controlled loop• Specify four things

– Counter– Counter starting value

• Optional, defaults to 1– Counter limit value (TO or DOWNTO)

• Optional, defaults to 1– Counter increment value (BY)

• Optional, defaults to 1

*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 /FREE Sum = 0; FOR Number = 1 TO 100; Sum = Sum + Number; ENDFOR; /END-FREE

Page 23: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

23

Early Exits from Loops

• ITER skips the remaining instructions in the loop and causes the next repetition to begin

• LEAVE terminates the loop– Sends control to statements following ENDDO

*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 /FREE DOW NOT %EOF; READ CustFile; IF %EOF; LEAVE; ELSE; EXCEPT Detail; ITER; ENDIF; ENDDO; /END-FREE

Page 24: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

24

Subroutines

• Subroutine: a block of code with an identifiable beginning and end

• Subroutines must have a unique name formed with the same rules that apply to fields

• Subroutines may execute other subroutines, but a subroutine should never execute itself

• Subroutines cannot contain other subroutines• Subroutines appear after other calculation

specifications– Organize subroutines alphabetically

Page 25: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

25

BEGSR/ENDSR

• BEGSR begins a subroutine– Include subroutine name

• ENDSR ends a subroutine*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 /FREE BEGSR CalcTax; EVAL(H) FICA = Gross * .0751; EVAL(H) StateTax = Gross * .045; IF Gross > 5000; EVAL(H) FedTax = Gross * .31; ELSE; EVAL(H) FedTax = Gross * .25; ENDIF; ENDSR; /END-FREE

Page 26: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

26

EXSR

• Executes subroutine named in Factor 2

*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 /FREE EXSR CalcTax; // EXSR causes control to drop to subroutine CalcTax. // Control returns here when the subroutine finishes.... BEGSR CalcTax; EVAL(H) FICA = Gross * .0751; EVAL(H) StateTax = Gross * .045; IF Gross > 5000; EVAL(H) FedTax = Gross * .31; ELSE; EVAL(H) FedTax = Gross * .25; ENDIF; ENDSR; /END-FREE

Page 27: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

27

Points to Remember

• Structured program design means developing program logic with flow of control tightly managed– Generally by using only structured operations

• Top-down methodology requires hierarchical program design– Work out broad logic first– Later, attend to detailed processing

Page 28: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

28

Points to Remember

• Decision logic operations– IF / ELSE / ELSEIF– SELECT / WHEN / OTHER

• Iteration (looping) operations– DOW (leading decision)– DOU (trailing decision)– FOR (counter controlled)

• Use ITER and LEAVE to provide an early exit from a loop

• Most of the structured operation of RPG require the use relational operators (>, <, =, <=, >=, <>)

Page 29: Presentation © Copyright 2002, Bryan Meyers Top-Down, Structured Program Design Chapter 5.

Programming in RPG IVThird Edition

29

Points to Remember

• Subroutines allow an identifiable block of code to be executed

• BEGSR and ENDSR begin and end a subroutine– Coded after other calculations

• EXSR executes a subroutine