Handling timestamps in RPGLE
Jump to navigation
Jump to search
Data types of date, time, and timestamps are external to RPGLE and thus are somewhat special to handle. Support for date/time handling has to be explicitly enabled by CVTOPT(*DATETIME)
in the H
specs.
In turn, (DDS) defined database fields are not correctly imported as the appropriate data type by just referencing the file. My approach to handle timestamps therefore consists of multiple variables:
- CHANGED
- is a timestamp field in the database (physical file).[1]
- STAMP$
- is a 19 character field in the DSPF, for containing the pretty printed timestamp.
- STAMP
- is the RPGLE defined timestamp (
Z
) field. TheTIME
operator writes to this variable.
Code
- Variable definition (in addition to autogenerated ones from referenced files).
D* For saving/handling timetamp data. DSTAMP S Z
- Current time → Database
C* Get current timestamp. C TIME STAMP C MOVEL STAMP CHANGED
- Database → Pretty print DSPF field
C* C* Get timestamp, and produce nice version thereof. C MOVEL CHANGED STAMP$ C '.':':' XLATE STAMP$ STAMP$ C '-':' ' XLATE STAMP$:11 STAMP$
Footnotes
- ↑ RPG imports that as anything but a timestamp declared in the
D
statements.