Example: ILE RPG program for setting the clock on your Coprocessor

Change this program example to suit your needs for setting the clock on your Coprocessor.

Note: Read the Code license and disclaimer information for important legal information.
     D*************************************************************
     D* SETCLOCK
     D*
     D* Set the clock on the  card, based on a string from
     D* the command line.  The command line string must be of
     D* form YYYYMMDDHHMMSSWW, where WW is the day of week (01
     D* means Sunday and 07 means Saturday).
     D*
     D*
     D* COPYRIGHT 5769-SS1 (C) IBM CORP. 2000, 2000
     D*
     D* This material contains programming source code for your
     D* consideration.  These example has not been thoroughly
     D* tested under all conditions.  IBM, therefore, cannot
     D* guarantee or imply reliability, serviceability, or function
     D* of these programs.  All programs contained herein are
     D* provided to you "AS IS".  THE IMPLIED WARRANTIES OF
     D* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     D* ARE EXPRESSLY DISCLAIMED.  IBM provides no program services for
     D* these programs and files.
     D*
     D*
     D* Note: Input format is more fully described in Chapter 2 of
     D*       IBM  CCA Basic Services Reference and Guide
     D*       (SC31-8609) publication.
     D*
     D* Parameters:
     D*      char * new time 16 characters
     D*
     D* Example:
     D*   CALL PGM(SETCLOCK) PARM('2000061011375204')
     D*
     D* Use these commands to compile this program on the system:
     D* CRTRPGMOD MODULE(SETCLOCK) SRCFILE(SAMPLE)
     D* CRTPGM  PGM(SETCLOCK) MODULE(SETCLOCK)
     D*         BNDSRVPGM(QCCA/CSUACFC)
     D*
     D* Note: Authority to the CSUACFC service program in the
     D*       QCCA library is assumed.
     D*
     D* The Common Cryptographic Architecture (CCA) verbs used are
     D* Cryptographic_Facilty_Control (CSUACFC)
     D*
     D**************************************************************
     D*------------------------------------------------
     D* Declare variables for CCA SAPI calls
     D*------------------------------------------------
     D*                **  Return code
     DRETURNCODE       S              9B 0
     D*                **  Reason code
     DREASONCODE       S              9B 0
     D*                **  Exit data length
     DEXITDATALEN      S              9B 0
     D*                **  Exit data
     DEXITDATA         S              4
     D*                **  Rule array count
     DRULEARRAYCNT     S              9B 0
     D*                **  Rule array
     DRULEARRAY        S             16
     D*                **  Verb data length
     DVERBDATALEN      S              9B 0
     D*                **  Verb data
     DVERBDATA         S             16
     D*
     D**********************************************************
     D* Prototype for Cryptographic_Facilty_Control (CSUACFQ)
     D**********************************************************
     DCSUACFC          PR
     DRETCODE                         9B 0
     DRSNCODE                         9B 0
     DEXTDTALEN                       9B 0
     DEXTDTA                          4
     DRARRAYCT                        9B 0
     DRARRAY                         16
     DVRBDTALEN                       9B 0
     DVRBDTA                         16
     D*
     D*-------------------------------------------------------------
     D*                **  Declares for sending messages to the
     D*                **  job log using the QMHSNDPM API
     D*-------------------------------------------------------------
     DMSG              S             75    DIM(6) CTDATA PERRCD(1)
     DMSGLENGTH        S              9B 0 INZ(75)
     D                 DS
     DMSGTEXT                  1     80
     DFAILRETC                41     44
     DFAILRSNC                46     49
     DMESSAGEID        S              7    INZ('       ')
     DMESSAGEFILE      S             21    INZ('                     ')
     DMSGKEY           S              4    INZ('    ')
     DMSGTYPE          S             10    INZ('*INFO     ')
     DSTACKENTRY       S             10    INZ('*         ')
     DSTACKCOUNTER     S              9B 0 INZ(2)
     DERRCODE          DS
     DBYTESIN                  1      4B 0 INZ(0)
     DBYTESOUT                 5      8B 0 INZ(0)
     C*
     C**************************************************************
     C* START OF PROGRAM                                           *
     C*                                                            *
     C     *ENTRY        PLIST
     C                   PARM                    VERBDATA
     C*                                                            *
     C*------------------------------------------------------------*
     C* Check the number of parameters passed in                   *
     C*------------------------------------------------------------*
     C                   IF        (%PARMS < 1)
     C*    *-------------------------------------------------------*
     C*    * Send message describing the format of the parameter   *
     C*    *-------------------------------------------------------*
     C                   MOVEL     MSG(3)        MSGTEXT
     C                   EXSR      SNDMSG
     C                   MOVEL     MSG(4)        MSGTEXT
     C                   EXSR      SNDMSG
     C                   MOVEL     MSG(5)        MSGTEXT
     C                   EXSR      SNDMSG
     C                   MOVEL     MSG(6)        MSGTEXT
     C                   EXSR      SNDMSG
     C                   RETURN
     C                   ENDIF
     C*
     C*------------------------------------------------------------*
     C* Set the keyword in the rule array                          *
     C*------------------------------------------------------------*
     C                   MOVEL     'ADAPTER1'    RULEARRAY
     C                   MOVE      'SETCLOCK'    RULEARRAY
     C                   Z-ADD     2             RULEARRAYCNT
     C*------------------------------------------------------------*
     C* Set the verb data length to 16                             *
     C*------------------------------------------------------------*
     C                   Z-ADD     16            VERBDATALEN
     C**************************************************************
     C* Call Cryptographic Facilty Control SAPI                          */
     C**************************************************************
     C                   CALLP     CSUACFC       (RETURNCODE:
     C                                            REASONCODE:
     C                                            EXITDATALEN:
     C                                            EXITDATA:
     C                                            RULEARRAYCNT:
     C                                            RULEARRAY:
     C                                            VERBDATALEN:
     C                                            VERBDATA)
     C*-----------------------*
     C* Check the return code *
     C*-----------------------*
     C     RETURNCODE    IFGT      4
     C*            *----------------------*
     C*            * Send error message   *
     C*            *----------------------*
     C                   MOVEL     MSG(1)        MSGTEXT
     C                   MOVE      RETURNCODE    FAILRETC
     C                   MOVE      REASONCODE    FAILRSNC
     C                   EXSR      SNDMSG
     C*
     C                   ELSE
     C*            *----------------------*
     C*            * Send success message *
     C*            *----------------------*
     C                   MOVE      MSG(2)        MSGTEXT
     C                   EXSR      SNDMSG
     C*
     C                   ENDIF
     C*
     C                   SETON                                            LR
     C*
     C**************************************************************
     C* Subroutine to send a message
     C**************************************************************
     C     SNDMSG        BEGSR
     C                   CALL      'QMHSNDPM'
     C                   PARM                    MESSAGEID
     C                   PARM                    MESSAGEFILE
     C                   PARM                    MSGTEXT
     C                   PARM                    MSGLENGTH
     C                   PARM                    MSGTYPE
     C                   PARM                    STACKENTRY
     C                   PARM                    STACKCOUNTER
     C                   PARM                    MSGKEY
     C                   PARM                    ERRCODE
     C                   ENDSR
**
CSUACFC failed with return/reason codes 9999/9999.
The request completed successfully.
This program loads the time and date into the  card.
It requires a single command line parameter containing the
new date and time in the form YYYYMMDDHHMMSSWW, where WW is the
day of the week, 01 meaning Sunday and 07 meaning Saturday.
Related concepts
The clock