270 likes | 345 Views
Advanced RPG. Chapter 11 Advanced Data Definition and Manipulation. Data Types. (From Chapter 3) Character Numeric Date Boolean DBCS Pointer. Data Types. Date Types and Time defaults Date: yyyy-mm-dd (10 byte) Time: hh.mm.ss (8 byte)
E N D
Advanced RPG Chapter 11 Advanced Data Definition and Manipulation
Data Types • (From Chapter 3) • Character • Numeric • Date • Boolean • DBCS • Pointer
Data Types • Date Types and Time defaults • Date: yyyy-mm-dd (10 byte) • Time: hh.mm.ss (8 byte) • Timestamp: yyyy-mm-dd-hh.mm.ss.mmmmmm (26 bytes) • Alternate displays are available: • *MDY, *DMY, *EUR • Set by using either DATFMT or TIMFMT keyword\ • Examples: p. 232
Data Types • All date and time formats allow you to refer to them by: • *YEARS (or *Y) • *MONTHS (*M) • *DAYS (*D) • *HOURS (*H) • *MINUTES (*MN) • *SECONDS (*S) • *MSECONDS (*MS)
Data Types • Op Codes: • ADDDUR: Allows you to add duration coded in Factor2 to date in Factor1, with answer going to result field. (If value is negative the duration is subtracted not added) • Example on page 233 • SUBDUR: Two uses, One to subtract a date/time duration (similar to ADDDUR), Second is to calculate the duration between two date/time units.
Data Type • Op Codes: • EXTRCT: Extracts a portion of the Date, Time, or Timestamp and stores it in the result field. Factor 1 is always blank. • Cannot use EVAL op code with the – or + with date/time fields. Must use the Add/Sub Dur op code. • Also cannot determine day of week unless you compare it to a known Sunday. ie 12/31/1899
Data Type • Pointer Data Types: store addresses of memory locations instead of the actual data located there. • Tells you where to find something not what is stored there. • Example P.236 • Used in the C programming language but not widely used in RPG!!
Data Type • Like (field definition) • Defining a field length or type by referencing a second field that provides the definition. D NewField S LIKE(OldField) • OldField can be another D spec or a field from a file. • Can place + or – in the length to either add or subtract from the referenced size. P. 237
Data Type • Field Inspection: • built-in functions and operations that let you inspect the size and properties of data items or test individual positions or bytes within a character field. • %SIZE: returns number of bytes or length of argument. (returns size not digits!!) • %LEN: returns the number of digits or characters in an expression. (char-significant digits, numeric-precision of expression)
Data Type • Field Inspection: • %DECPOS: returns the number of decimal positions of a numeric variable • %ELEM: returns the number of elements in an array or table or number of occurrences in a multiple occurrence data structure. • TESTN: test to see if character field contains all numeric characters, leading blanks or all blanks • Useful in validating fields for numeric use.
Data Type • Field Inspection: • TEST: checks the validity of date, time or timestamp fields. • Must specify specific type otherwise default is used. • SCAN: lets you look for a character or string of characters within a character field. • Direction is left to right and is case sensitive • %Found is turned on if successful • Result field can contain position it found string or 0 if it does not find string
Data Type • Field Inspection: • %SCAN: nearly identical to SCAN operation, but lets you perfrom the scan within an expression. • Cannot search an array or use %FOUND bif • CHECK: Similar to SCAN. CHECK verifies each character in Factor 2 is among the valid characters in Factor 1; if mismatch it stores the location of the mismatch in result field. • Useful for verification of a string
Data Type • Field Inspection: • CHECKR: Works exactly like CHECK but in reverse order, right to left. • Field Manipulation: • +: Concatenation Character String • If result field is to large it pads with blanks • If result field is to small it truncates on the right • %TRIM: Trim blanks at edges • %TRIML: Trim leading blanks • %TRIMR: Trim trailing blanks
Data Type • Field Manipulation: • %SUBST: Extracts a character string • Can specify starting position and length • %DEC: Converts the result of an expression to a packed decimal format. • XLATE: lets you translate characers within a string to other characters. • From and To strings must be same length
Data Area • Data Area Data Structure • Defined by a U in position 23 • If no name provided it is represented by LDA • Works similar to a file • Loaded when program is run • Written back to data area when program ends
Data Areas • Data Areas: as/400 objects that represent storage locations used to share data between programs within a job or between jobs. • Local Data Area: created for each job • 1024 positions long, type character, initially filed with blanks. • when job ends lda is gone • p.223
Data Areas • Can access Data Areas without defining them in D specs (reading into another one you do have specified). • Use *DATAARA in Factor1 • Result field contains variable to receive contents • p. 224 • Not automatically retrieved or written back to external data area, you must program this.
Data Areas • *DATAARA • IN: Retrieves a data area • OUT: Writes back to data area • UNLOCK: Unlocks data area
Data Type • Program Described Data Structures: allow you to subdivide fields into smaller fields. • P. 238 • Overlay keyword: subfield overlays storage of another subfield • Different way of subdividing the field. • Used to group fields from file that are not adjacent. P. 239
Data Type • Externally Described Data Structures • Format defined in DDS and refer to it in D specs. • p. 240 • Multiple Occurrence Data Structures • Structure is repeated in storage by OCCURS (##) keyword. • Similar to an array or table but much more complex collection of elements.
Data Type • Initializing Data Structures • Will contain blanks at start of program unless you specify initialized value. (even numeric data types!!) • Keyword INZ(value) • Or use built in *INZSR initialize subroutine.
Data Type • File Information Data Structure: • special data structure defined for each file used in your program. • Contains predefined fields that can provide information to your program about the file and I/O operations. • Helpful in debugging • Keyword INFDS and name of data structure on F spec (p. 247)
Data Type • File Information Data Structure: • Usefulness: • Position 1 – 8: File Name • Position 16 – 21: contain last op code used on file • Position 11 – 15: five-digit I/O Status code • 00000: no error or exception • 00002: Function key was used to end display • 00011: signals end of file on read • 00012: signals a no-record found condition on a chain • > 00999: error code • 01218 indicates a locked record • 01021 indicates attempt to write duplicate key record
Data Type • Program status data structure: provide information about the program itself and about exceptions or errors that occur • similar to file with predetermined subfields that automatically acquire values during execution. • Name of Program • Job name • Who called it
Data Type • Status Codes: • 00000: no error occurred • 00101: negative square root • 00102: divide by zero • 00907: decimal data error • S in position 23 of DS definition indicates a Program Status Data Structure. • p. 249
Data Area • Error Handling: • Without explicit error handling within your program, any runtime error will cause the system to suspend the program and send an interactive message to the user. • (E) extender can be used p.249 • Causes program to ignore error and continue • *PSSR: built in subroutine name that is called when an error occurs p. 250 • Combines file and program handling into one area. • You can control what happens when error is encountered.