Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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