RPG IV - Chapter 11

Download Report

Transcript RPG IV - Chapter 11

RPG IV
Advanced Data Definition and
Manipulation- Chapter 11
Objectives
Perform date arithmetic
Define data that facilitate data
manipulation, error trapping,
debugging and program maintenance
Use RPG IV built-in functions(BIF’s) to
manipulate data
Data Types and Time
Three data types exist for dealing with
time:
Date(D) -10 byte display yyyy-mm-dd
Time(T)- 8 byte display hh.mm.ss
Timestamp(Z) - 26 byte default display
yyyy-mm-dd-hh.mm.ss.mmmmmm
Date supports 8 different formats
Time supports 5 different formats
Different separators are supported
Date and Time Operations
ADDDUR, SUBDUR and EXTRCT
Duration codes:
*YEARS (or *Y)
*MONTHS (or *M)
*DAYS (or *D)
*HOURS (or*H)
*MINUTES (or *MN)
*SECONDS (or *S)
*MSECONDS (or *MS)
ADDDUR(Add Duration)
Add a duration coded in Factor 2 to the
date specified in Factor 1
Storing the answer in the date, time or
timestamp field specified as the Result
field
Factor 2 must contain an integer field
or literal
SUBDUR(Subtract Duration)
Has two uses:
Subtract a date/time duration from a
date/time value (similar to ADDDUR)
Calculate the duration between two
date/time values
Subtract a Date/Time Duration
Subtract a duration coded in Factor 2
to the date specified in Factor 1
Storing the answer in the date, time or
timestamp field specified as the Result
field
Factor 2 must contain an integer field
or literal
Calculate a Duration Between
Two Date/Time Values
Factor 1 and Factor 2 must contain
data items of compatible types
Place an integer receiveing field
followed by a duration code in the
Result field
EXTRCT(Extract
Date/Time/Timestamp)
Extract a portion of a data/time or
timestamp and store in the Result field
Factor 2 date/time data item must be
coupled with a duration code to signal
which portion of the data/time unit is to
be extracted
Pointer Data Types
Two kinds of pointer data types: basing
pointers and procedure pointers
Used to access storage that is
allocated dynamically throughout the
program
Pointers store address of memory
locations rather than data values
Procedure pointers must include the
keyword PROCPTR
LIKE (Field Definition)
The keyword LIKE allows you to
define a field based on the attributes
of another field
The entered number signals the
extent of the increase or decrease in
field length
Data Structures
Subdivide fields into subfields
Restructure records with different
field layouts
Change field data types
Add a second dimension to arrays
Data Structures cont.
DS coded in 24-25 on D spec signals
the beginning of a data structure
Enter name of data structure in 7-21
Follows same rules as field
Use absolute notation or length
notation for subfields
OVERLAY
OVERLAY keyword indicates that a
subfield overlays the storage of
another subfield
If the data time within parentheses is
an array, OVERLAY applies to each
element of the array
Externally Described Data
Structures
Externally described data structures
are useful when you want to
standardize a data structure
Code an E in position 22
Name the external file using the
EXTNAME keyword
Multiple-Occurrence Data
Structures
Repeated data structures
Keyword OCCURS
Number determines how many times
the structure is repeated in storage
OCCUR (Set/Get Occurrence of
a Data Structure)
OCCUR operation is used to establish
which occurrence of the data structure
is used next within the program
Factor 1 specifies which occurrence
should be made current
Factor 2 contains the name of the DS
Initialization and Reinitialization
of Variables
INZ keyword will initialize to default
value of data type
*INZSR is a subroutine that will be
invoked automatically after the
program completes its other start up
tasks
CLEAR and RESET will allow you to
reinitialize variables
File-Information Data Structures
A special data structure that can be
defined for each file used by your
program
This data structure contains subfields
that provide info to your program
about the file and I/O operations
The required entries in the F spec are;
keyword INFDS and a parameter with
the name of the data structure defined
in the D Spec
Program-Status Data Structures
A data structure that can provide you
with information about the program
itself and about exceptions/errors that
occur during program execution
An S in position 23 of a data structure
definition line identifies a programstatus data structure
Error Handling
Without explicit error handling within
your program, any runtime error will
cause the system to suspend the
program
One technique to code the (E) errorhandling extender with those
operations that permit such an entry
Then perform an error routine if the
%ERROR bif is on
*PSSR
Another error handling technique is
to use a special subroutine called
*PSSR
This subroutine will automatically
receive control when a program error
occurs
To send control to this subroutine for
file errors, you must explicitly
designate *PSSR as the error handler
Field Inspection
%SIZE(Get Size in Bytes)
%LEN(Get or Set Length)
%DECPOS(Get Number of Dec Positions)
%ELEM(Get Number of Elements)
TESTN(Test Numeric)
TEST(Test Date/Time/Timestamp)
SCAN(Scan String)
%SCAN(Scan for Characters)
CHECK(Check Characters)
CHECKR(Check Reverse)
%SIZE
Returns number of bytes or length of
string
Used to determine size of field, literal,
named constant, data structure,
subfield, array or table
One required parameter to represnet
data whose size you want to know
Second parameter *ALL- size of entire
table, array or data structure
%LEN
Returns number of digits or characters
in an expression
Especially useful with character
expressions
For numeric expressions %LEN returns
the precision of the expression
%DECPOS
Returns the number of decimal
positions in a numeric variable or
expression
Sometimes used with the %LEN
function
%ELEM
Returns the number of elements in an
array or a table or the number of
occurrences in a multiple-occurrence
data structure
Can be used in calculations or when
defining other fields
TESTN
Determine whether a character field
contains all numeric characters,
leading blanks followed by all numeric
characters, or all blanks
Used to validate fields before
performing calculations
TEST
Checks validity of date, time or
timestamp fields
Checks character and numeric fields
for valid date/time data
SCAN
Look for a characer or string of
character within a character field
Case sensitive - recognizes upper and
lower case
Blanks are not ignored
%SCAN
Nearly identical to SCAN
Performs the scan within an
expression
CHECK
Similar to SCAN
Checks for discrepancies between
individual characters of compare field
and base string and signals absence of
a base character from set of compare
characters and stores it’s location in
the result field
Checks left to right
CHECKR
Works exactly like CHECK
Checks the base string from right to
left
Field Character Manipulation
+ (Concatenate Character Strings)
%TRIM, %TRIML, and %TRIMR (Trim
Blanks)
%SUBST(Get Substring)
%DEC(Convert to Packed Decimal
Format)
XLATE (Translate)
Concatenate Character Strings
Using the + operator with EVAL is a
convenient way to concatenate two (or
more) strings to form a new string
Trim Blanks
Remove leading and/or trailing blanks
from their argument
%TRIML – removes leading blanks
%TRIMR – removes trailing blanks
%TRIM – removes both leading and
trailing blanks
%SUBST
Extracts a portion of a character string
Argument parameters in order: string
from which extraction is to occur,
position within that string where
substring is to start and optional length
of substring, parameters separated by
a colon
%DEC
Converts the result of the expression
to a packed-decimal format
%DECH (Convert to Packed Decimal
Format with Half Adjust)
%INT (Convert to Integer Format)
%UNS(Convert to Unsigned Format)
%INTH and %UNSH are half adjust built
in functions
XLATE
Translate or convert characters within
a string to other characters
Points to Remember
Fields can be defined relative to other
field definitions using the keyword
LIKE
You can define data structures that
represent complex definitions of a
given area of memory
Points to Remember cont.
Data structures or subfields of data
structures can be initialized easily as
part of the data structure definition
Two special data structures of
predefined subfields exist in RPG to
provide information about the status
of files used by the program or about
the processing of the program itself