CEEDATE—Convert Lilian date to character format
CEEDATE converts a number representing a Lilian date to a date written in character format. The output is a character string, such as 1993/09/09.
Do not use CEEDATE in combination with COBOL intrinsic functions.
The inverse of CEEDATE is CEEDAYS, which converts character dates to the Lilian format.
CEEDATE is affected only by the country code setting of the COUNTRY runtime option or CEE3CTY callable service, not the CEESETL callable service or the setlocale() function.
Syntax >>-CEEDATE--(--input_Lilian_date--,--picture_string--,----------> >--output_char_date--,--fc--)----------------------------------><
- input_Lilian_date (input)
- A 32-bit integer representing the Lilian date. The Lilian date is the number of days since 14 October 1582. For example, 16 May 1988 is Lilian day number 148138. The valid range of Lilian dates is 1 to 3,074,324 (15 October 1582 to 31 December 9999).
- picture_string (input)
- A halfword length-prefixed character string (VSTRING), representing
the desired format of output_char_date,
for example MM/DD/YY. Each character in picture_string represents
a character in output_char_date. If delimiters
such as the slash (/) appear in the picture string, they are copied
to output_char_date.
See Table 1 for a list of valid picture characters, and Table 2 for examples of valid picture strings.
If picture_string is null or blank, CEEDATE gets picture_string based on the current value of the COUNTRY runtime option. For example, if the current value of the COUNTRY runtime option is US (United States), the date format would be MM/DD/YY. If the current COUNTRY value is FR (France), the date format would be MM/DD/YY HH:MM:SS AM (or PM), for example: 09/09/93 4:56:29 PM. This default mechanism makes it easy for translation centers to specify the preferred date, and for applications and library routines to use this format automatically.
If picture_string includes a Japanese Era symbol <JJJJ>, the YY position in output_char_date is replaced by the year number within the Japanese Era. For example, the year 1988 equals the Japanese year 63 in the Showa era. See Table 2 for an additional example. Also see Table 3 for a list of Japanese Eras supported by CEEDATE.
If picture_string includes a era symbol <CCCC> or <CCCCCCCC>, the YY position in output_char_date is replaced by the year number within the era. See Table 2 for an example.
- output_char_date (output)
- A fixed-length 80-character string (VSTRING), is the result of converting input_Lilian_date to the format specified by picture_string. See Table 1 for sample output dates. If input_Lilian_date is not valid, output_char_date is set to all blanks. CEEDATE terminates with a non-CEE000 symbolic feedback code.
- fc (output)
- A 12-byte feedback code, optional
in some languages, that indicates the result of this service. If you
choose to omit this parameter, refer to Invoking callable services for
the appropriate syntax to indicate that the feedback code was omitted. The following symbolic conditions can result from this service:
Code Severity Message number Message text CEE000 0 — The service completed successfully. CEE2EG 3 2512 The Lilian date value was not within the supported range. CEE2EM 3 2518 An incorrect picture string was specified. CEE2EQ 3 2522 <JJJJ>, <CCCC> or <CCCCCCCC> was used in a picture string passed to CEEDATE, but the Lilian date value was not within the supported range. The Era could not be determined. CEE2EU 2 2526 The date string returned by CEEDATE was truncated.
Usage notes
- The probable cause for receiving message number 2518 is a picture string that contains a DBCS string that is not valid. You should verify that the data in the picture string is correct.
- To create a null VSTRING, set the length to zero; the content of the text portion does not matter. To create a blank VSTRING, any length greater than zero can be used; the content of the text portion must be spaces or blanks.
- z/OS UNIX consideration—In multithread applications, CEEDATE applies to the enclave.
For more information
- See the INTDATE COBOL compiler installation option in the appropriate version of the COBOL programming guide in the COBOL library at Enterprise COBOL for z/OS library for information about how to get Lilian integer values from COBOL intrinsic functions that are compatible with the Language Environment callable services CEEDAYS and CEEDATE.
- See CEEDAYS—Convert date to Lilian format for more information about the CEEDAYS callable service.
- See COUNTRY for more information about the COUNTRY runtime option.
- See CEEFMDA—Get default date format for information about how to get the default format for a given country code.
Examples
- Following is an example of CEEDATE called by C/C++.
/*Module/File Name: EDCDATE */ #include <leawi.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <ceeedcct.h> int main(void) { _FEEDBACK fc; _INT4 lil_date = 139370; /* May 14, 1964 */ _VSTRING date_pic,date; _CHAR80 date_out; strcpy(date_pic.string, "The date is Wwwwwwwwwz, Mmmmmmmmmz ZD, YYYY"); date_pic.length = strlen(date_pic.string); CEEDATE(&lil_date,&date_pic,date_out,&fc); if ( _FBCHECK ( fc , CEE000 ) != 0 ) { printf("CEEDATE failed with message number %d\n", fc.tok_msgno); exit(2999); } printf("%.80s\n",date_out); }
- Following is an example of CEEDATE called by COBOL.
CBL LIB,QUOTE *Module/File Name: IGZTDATE ************************************************ ** ** ** Function: CEEDATE - convert Lilian date to ** ** character format ** ** ** ** In this example, a call is made to CEEDATE ** ** to convert a Lilian date (the number of ** ** days since 14 October 1582) to a character ** ** format (such as 6/22/88). The result is ** ** displayed. The Lilian date is obtained ** ** via a call to CEEDAYS. ** ** ** ************************************************ IDENTIFICATION DIVISION. PROGRAM-ID. CBLDATE. DATA DIVISION. WORKING-STORAGE SECTION. 01 LILIAN PIC S9(9) BINARY. 01 CHRDATE PIC X(80). 01 IN-DATE. 02 Vstring-length PIC S9(4) BINARY. 02 Vstring-text. 03 Vstring-char PIC X OCCURS 0 TO 256 TIMES DEPENDING ON Vstring-length of IN-DATE. 01 PICSTR. 02 Vstring-length PIC S9(4) BINARY. 02 Vstring-text. 03 Vstring-char PIC X OCCURS 0 TO 256 TIMES DEPENDING ON Vstring-length of PICSTR. 01 FC. 02 Condition-Token-Value. COPY CEEIGZCT. 03 Case-1-Condition-ID. 04 Severity PIC S9(4) BINARY. 04 Msg-No PIC S9(4) BINARY. 03 Case-2-Condition-ID REDEFINES Case-1-Condition-ID. 04 Class-Code PIC S9(4) BINARY. 04 Cause-Code PIC S9(4) BINARY. 03 Case-Sev-Ctl PIC X. 03 Facility-ID PIC XXX. 02 I-S-Info PIC S9(9) BINARY. PROCEDURE DIVISION. PARA-CBLDAYS. ************************************************* ** Call CEEDAYS to convert date of 6/2/88 to ** ** Lilian representation ** ************************************************* MOVE 6 TO Vstring-length of IN-DATE. MOVE "6/2/88" TO Vstring-text of IN-DATE(1:6). MOVE 8 TO Vstring-length of PICSTR. MOVE "MM/DD/YY" TO Vstring-text of PICSTR(1:8). CALL "CEEDAYS" USING IN-DATE, PICSTR, LILIAN, FC. ************************************************* ** If CEEDAYS runs successfully, display result** ************************************************* IF CEE000 of FC THEN DISPLAY Vstring-text of IN-DATE " is Lilian day: " LILIAN ELSE DISPLAY "CEEDAYS failed with msg " Msg-No of FC UPON CONSOLE STOP RUN END-IF. ************************************************* ** Specify picture string that describes the ** ** desired format of the output from CEEDATE, ** ** and the picture string's length. ** ************************************************* MOVE 23 TO Vstring-length OF PICSTR. MOVE "ZD Mmmmmmmmmmmmmmz YYYY" TO Vstring-text OF PICSTR(1:23). ************************************************* ** Call CEEDATE to convert the Lilian date ** ** to a picture string. ** ************************************************* CALL "CEEDATE" USING LILIAN, PICSTR, CHRDATE, FC. ************************************************* ** If CEEDATE runs successfully, display result** ************************************************* IF CEE000 of FC THEN DISPLAY "Input Lilian date of " LILIAN " corresponds to: " CHRDATE ELSE DISPLAY "CEEDATE failed with msg " Msg-No of FC UPON CONSOLE STOP RUN END-IF. GOBACK.
- Following is an example of CEEDATE called by PL/I.
*PROCESS MACRO; /*Module/File Name: IBMDATE */ /***********************************************/ /** */ /** Function: CEEDATE - convert Lilian date to */ /** character format */ /** */ /** In this example, a call is made to CEEDATE */ /** to convert a date in the Lilian format */ /** (the number of days since 14 October 1582) */ /** to a date in character format. This date */ /** is then printed out. */ /** */ /********************************************* */ PLIDATE: PROC OPTIONS(MAIN); %INCLUDE CEEIBMAW; %INCLUDE CEEIBMCT; DCL LILIAN REAL FIXED BINARY(31,0) ; DCL PICSTR CHAR(255) VARYING; DCL CHRDATE CHAR(80) ; DCL 01 FC, /* Feedback token */ 03 MsgSev REAL FIXED BINARY(15,0), 03 MsgNo REAL FIXED BINARY(15,0), 03 Flags, 05 Case BIT(2), 05 Severity BIT(3), 05 Control BIT(3), 03 FacID CHAR(3), /* Facility ID */ 03 ISI * Instance-Specific Information */ REAL FIXED BINARY(31,0); LILIAN = 152385; /* input date in Lilian format */ /* picture string that describes how converted */ /* date is to be formatted */ PICSTR = 'ZD Mmmmmmmmmmmmmmz YYYY'; /* Call CEE3DATE to convert input Lilian date to */ /* a date in the character format specified in */ /* PICSTR */ CALL CEEDATE ( LILIAN , PICSTR , CHRDATE , FC ); /* Print results if call to CEEDATE succeeds */ IF FBCHECK( FC, CEE000) THEN DO; PUT SKIP LIST( 'Lilian day ' || LILIAN || ' is equivalent to ' || CHRDATE ); END; ELSE DO; DISPLAY( 'CEEDATE failed with msg ' || FC.MsgNo ); STOP; END; END PLIDATE;
Table 1 shows the sample output from CEEDATE.
input_Lilian_date | picture_string | output_char_date |
---|---|---|
148138 |
|
|
148139 |
|
|
148140 |
|
|
148141 |
|
|
148142 |
|
|
148143 |
|
|