Handling timestamps in RPGLE: Difference between revisions
Jump to navigation
Jump to search
(New) |
(No difference)
|
Revision as of 00:38, 15 October 2020
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.