星期四, 11月 09, 2023

2016-04-06 擷取系統時間至微秒單位(Get system timesatmp with a precision in microseconds by API QWCCVTDT)


擷取系統時間至微秒單位(Get system timesatmp with a precision in microseconds by API QWCCVTDT)

範例含 CLP, RPGLE, COBOL。


File  : QCLSRC
Member: GETSYSTIMC
Type  : CLP
Usage : CRTCLPGM PGM(GETSYSTIMC)		
        




PGM
/* For Convert Date & Time...                                     */

    dcl   &CDT_I_FORM  *char   10     value( '*CURRENT' )
    dcl   &CDT_I_VAR   *char    8
    dcl   &CDT_O_FORM  *char   10     value( '*YYMD' )
    dcl   &CDT_O_VAR   *char   20
    dcl   &CDT_I_TZ    *char   10     value( '*SYS' )
    dcl   &CDT_O_TZ    *char   10     value( '*SYS' )
    dcl   &CDT_O_TZi   *char  111     value( ' ' )
    dcl   &CDT_O_TZl   *int           value( 0   )
    dcl   &CDT_O_Pi    *char    1     value( '1' )

/* And we'll need to specify an errcode receiver at one point...    */

    dcl   &ERRCODE     *char  116     value( x'00000074' )
    dcl   &ERRLEN      *int           value( 0 )

    call        QWCCVTDT         ( +
                                   &CDT_I_FORM +
                                   &CDT_I_VAR  +
                                   &CDT_O_FORM +
                                   &CDT_O_VAR  +
                                   &ERRCODE    +
                                   &CDT_I_TZ   +
                                   &CDT_O_TZ   +
                                   &CDT_O_TZi  +
                                   &CDT_O_TZl  +
                                   &CDT_O_Pi   +
                                 )

    SndPgmMsg   MsgId(CPF9898) MsgF(*LIBL/QCPFMSG) +
                MsgDta(&CDT_O_VAR)
    Return

 ENDPGM


File  : QRPGLESRC
Member: GETSYSTIMR
Type  : RPGLE
Usage : CRTBNDRPG PGM(GETSYSTIMR)		

       


     **-- API error data structure:
     D ERRC0100        Ds                  Qualified
     D  BytPrv                       10i 0 Inz( %Size( ERRC0100 ))
     D  BytAvl                       10i 0
     D  MsgId                         7a
     D                                1a
     D  MsgDta                      128a

     DOutputVar        DS
     D  CurCentury                    2
     D  CurYear                       2
     D  CurMonth                      2
     D  CurDay                        2
     D  CurHour                       2
     D  CurMinute                     2
     D  CurSecond                     2
     D  CurMicroSec                   6

     D TimeZoneInfL                  10i 0

     C                   Move      *On           *InLr

     C                   Call      'QWCCVTDT'
     C                   Parm      '*CURRENT'    InputFmt         10
     C                   Parm                    InputVar          1
     C                   Parm      '*YYMD'       OutputFmt        10
     C                   Parm                    OutputVar
     C                   Parm                    ERRC0100
     C                   Parm                    InpTimeZone      10
     C                   Parm      '*SYS'        OutTimeZone      10
     C                   Parm                    TimeZineInf       1
     C                   Parm      0             TimeZoneInfL
     C                   Parm      '1'           PrcInd            1

     C     OutputVar     dsply


File  : QCBLLESRC
Member: GETSYSTIME
Type  : COBOL
Usage : CRTCBLPGM PGM(GETSYSTIME)		

        

						
       IDENTIFICATION DIVISION.
          PROGRAM-ID.  SAMPLE07.

       ENVIRONMENT DIVISION.

        CONFIGURATION SECTION.
          SOURCE-COMPUTER.  IBM-AS400.
          OBJECT-COMPUTER.  IBM-AS400.

       DATA DIVISION.

       WORKING-STORAGE SECTION.
         01 DATES.
          05  INPUT-DATE           PIC X(10).
          05  OUTPUT-DATE17        PIC X(17).
          05  OUTPUT-DATE20        PIC X(20).
          05  INPUT-DATE-FORMAT    PIC X(10).
          05  OUTPUT-DATE-FORMAT   PIC X(10).
          05  INPUT-TIME-ZONE      PIC X(10) VALUE '*SYS'.
          05  OUTPUT-TIME-ZONE     PIC X(10) VALUE '*SYS'.
          05  TIME-ZONE-INFO       PIC X(10).
          05  TIME-ZONE-INFO-LEN   PIC S9(9) BINARY VALUE ZERO.
          05  PRECISION-INDICATOR  PIC X(01) VALUE '1'.

         01 CURRENTTIME.
          05 CUR-YEAR              PIC X(04).
          05 CUR-MONTH             PIC X(02).
          05 CUR-DAY               PIC X(02).
          05 CUR-HH                PIC X(02).
          05 CUR-MM                PIC X(02).
          05 CUR-SS                PIC X(02).
          05 CUR-MICROSECOND       PIC X(06).

         01 ERRPARM.
          05 INPUT-L        PIC S9(9) BINARY VALUE 116.
          05 OUTPUT-L       PIC S9(9) BINARY VALUE ZERO.
          05 EXCEPTION-ID   PIC X(7).
          05 RESERVED       PIC X(1).
          05 EXCEPTION-DATA PIC X(100).

       PROCEDURE DIVISION.

       MAINLINE.

           PERFORM GET-DATE-08
           GOBACK.

          GET-DATE-08.

            MOVE SPACES TO EXCEPTION-ID.
            MOVE "*CURRENT" TO INPUT-DATE-FORMAT.
            MOVE "*YYMD   " TO OUTPUT-DATE-FORMAT.

            CALL "QWCCVTDT" USING INPUT-DATE-FORMAT ,
                                  INPUT-DATE        ,
                                  OUTPUT-DATE-FORMAT,
                                  CURRENTTIME       ,
                                  ERRPARM           ,
                                  INPUT-TIME-ZONE   ,
                                  OUTPUT-TIME-ZONE  ,
                                  TIME-ZONE-INFO    ,
                                  TIME-ZONE-INFO-LEN,
                                  PRECISION-INDICATOR.
            DISPLAY 'TIMESTAMP FROM COBOL: ' CURRENTTIME.

						


參照: Convert Date and Time Format (QWCCVTDT) API



沒有留言: