Test268 Section 3

From MidrangeWiki
Revision as of 22:19, 5 December 2005 by Koldark (talk | contribs) (Code and use *INZSR)
Jump to: navigation, search

<< Previous Section | Home | Next Section >>

Section 3 - Core RPG (15%)

Recognize appropriate use of RPG creation commands (e.g., CRTxxxPGM, CRTxxxMOD, CRTPGM, CRTBNDxxx)

  • CRTxxxPGM
    • Used for compiling a RPG ILE 4 program without the "NOMAIN" H-Spec
  • CRTxxxMOD
    • Used for compiling a RPG ILE 4 program with the "NOMAIN" H-Spec
  • CRTPGM
  • CRTBNDxxx

Define basic arrays (e.g., compile time, pre-run time, run time) using D specs

Compile Time

DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords++++++++++++++++++++
DARC              S              3A   DIM(12) PERRCD(5) CTDATA

// Must be at the end of the code
**CTDATA ARC
48K16343J64044HComments can be placed here
12648A47349K346Comments can be placed here
50B125         Comments can be placed here

Pre-Run Time

Figure 68 shows the definition specifications required for two prerun-time arrays, a compile-time array, and a run-time array. Figure 68. Definition Specifications for Different Types of Arrays

HKeywords+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
H DATFMT(*USA) TIMFMT(*HMS)
D*ame+++++++++++ETDsFrom+++To/L+++IDc.Keywords++++++++++++++++++++
 * Run-time array.  ARI has 10 elements of type date. They are
 * initialized to September 15, 1994.  This is in month, day,
 * year format using a slash as a separator as defined on the
 * control specification.
DARI              S               D   DIM(10) INZ(D'09/15/1994')
 *
 * Compile-time arrays in alternating format.  Both arrays have
 * eight elements (three elements per record).  ARC is a character
 * array of length 15, and ARD is a time array with a predefined
 * length of 8.
DARC              S             15    DIM(8) PERRCD(3)
D                                     CTDATA
DARD              S               T   DIM(8) ALT(ARC)
 *
 * Prerun-time array.  ARE, which is to be read from file DISKIN,
 * has 250 character elements (12 elements per record).  Each
 * element is five positions long.  The size of each record
 * is 60 (5*12). The elements are arranged in ascending sequence.
DARE              S              5A   DIM(250) PERRCD(12) ASCEND
D                                     FROMFILE(DISKIN)
 *
 * Prerun-time array specified as a combined file.  ARH is written
 * back to the same file from which it is read when the program
 * ends normally with LR on.  ARH has 250  character elements
 * (12 elements per record).  Each elements is five positions long.
 * The elements are arranged in ascending sequence.
DARH              S              5A   DIM(250) PERRCD(12) ASCEND
D                                     FROMFILE(DISKOUT)
D                                     TOFILE(DISKOUT)

// Must be at the end of the code
**CTDATA ARC
Toronto        12:15:00Winnipeg       13:23:00Calgary        15:44:00
Sydney         17:24:30Edmonton       21:33:00Saskatoon      08:40:00
Regina         12:33:00Vancouver      13:20:00

Run Time

DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++
DARC              S              3A   DIM(12)

Use basic array handling (e.g., *IN, LOOKUP, SORTA, MOVE and MOVEA, indexing)

Code and use figurative constants (e.g., *LOVAL, *HIVAL, *ALL, *BLANKS, *ZEROS, *ON, *OFF)

  • *ALL
  • *BLANKS -- Fills an alpha field with ' '
  • *HIVAL -- Fills a field with the highest possible value the field can hold
  • *LOVAL -- Fills a field with the lowest possible value the field can hold
  • *OFF -- Generally used for indicators to either turn them off or check to see if they are off
  • *ON -- Generally used for indicators to either turn them on or check to see if they are on
  • *ZEROS -- Fills a numeric field with 0

Code and use job date and system date

Job Date

System Date

Code and use structured operation codes (e.g., DO DOUxx, DOWxx, IF/ELSE/ELSEIF, SELECT/WHEN, CASxx/EXSR)

Code and use structured operation codes with expressions (+, -, * ,/, **, <, >, =, (), and, or, not)

  • Addition
result = field1 + field2;
  • Subtraction
result = field1 - feild2;
  • Multiplication
result = field1 * field2;
  • Division
result = field1 / field2;
  • **

Ed - What is this??

result = field1 ** field2;
  • Less Than
if field1 < field2;
  // my code here
endif;
  • Greater Than
if field1 > field2;
  // my code here
endif;
  • Equal
if field1 = field2;
  // my code here
endif;
  • Parenthesis
result = (field1 + field2) * field3;
  • And
if field1 > field2 and field3 > field4;
  // my code here
endif;
  • Or
if field1 > field2 or field3 > field4;
  // my code here
endif;
  • not
if field1 > field2 and not field3 > field4;
  // my code here
endif;

Code and use date data types and arithmetic operations, including date operations in expressions

Code and use SDS

See Program Status Data Structure

Code and use *INZSR

  • /INZSR is automatically run before any other mainline code.
begsr *inzsr;
  // code for the inzsr here
endsr  //*inzsr;

Code and use RPG IV built-in functions

See Built In Functions

Use the H-spec keywords

See H-Spec Keywords

Use RPG IV OpCodes (e.g., Arithmetic, Date, Message, Array, Declarative, File, Branching, Indicator setting, String handling, Structured programming, compare, initialization, subroutine, data area)

Use the D-spec keywords

See D-Spec Keywords


<< Previous Section | Home | Next Section >>