EYU#API1

Program EYU#API1 is written in REXX for the TSO environment.

About EYU#API1

This program does the following processing:

  • Establishes a connection to the API.
  • Creates a result set containing all PROGRAM resource table records that do not begin with DFH, EYU, or IBM.
  • Retrieves each record in the result set.
  • Translates any CICS® CVDA attributes into meaningful character values.
  • Displays each record on the terminal, showing the program name, language, enable status, and CEDF status.
  • Terminates the API connection.
Commands used: CONNECT, FETCH, GET, TERMINATE, TRANSLATE
/* REXX */
/********************************************************************/
/*                                                                  */
/* MODULE NAME = EYU#API1                                           */
/*                                                                  */
/* DESCRIPTIVE NAME = CPSM Sample API Program 1                     */
/*                    (Sample REXX Version)                         */
/*                                                                  */
/*    5695-081                                                      */
/*    COPYRIGHT = NONE                                              */
/*                                                                  */
/* STATUS = %CP00                                                   */
/*                                                                  */
/* FUNCTION =                                                       */
/*                                                                  */
/*  To provide an example of the use of the following EXEC CPSM     */
/*  commands: CONNECT, GET, FETCH, TRANSLATE, TERMINATE.            */
/*                                                                  */
/*  When invoked, the program depends upon the values held in the   */
/*  W_CONTEXT and W_SCOPE declarations when establishing a          */
/*  connection with CICSPlex SM. They must take the following       */
/*  values:                                                         */
/*                                                                  */
/*  W_CONTEXT  = The name of a CMAS or CICSplex. Refer to the       */
/*               description of the EXEC CPSM CONNECT command       */
/*               for further information regarding the CONTEXT      */
/*               option.                                            */
/*                                                                  */
/*  W_SCOPE    = The name of a CICSplex, CICS system, or CICS       */
/*               system group within the CICSplex. Refer to the     */
/*               description of the EXEC CPSM CONNECT command       */
/*               for further information regarding the SCOPE        */
/*               option.                                            */
/*                                                                  */
/*  This sample requires no parameters at invocation time.          */
/*                                                                  */
/*  The sample establishes an API connection and issues a GET       */
/*  command to create a result set containing program resource      */
/*  table records which match the criteria.                         */
/*                                                                  */
/*  Using the FETCH command each record in the result set is        */
/*  retrieved. Once retrieved the TRANSLATE command is used to      */
/*  convert those attributes of each record which are EYUDA or      */
/*  CVDA values into meaningful character representations. A        */
/*  record is then displayed on the terminal showing the program    */
/*  name, language, program status, and CEDF status.                */
/*                                                                  */
/*  Finally, the API connection is terminated.                      */
/*                                                                  */
/*------------------------------------------------------------------*/
/*NOTES :                                                           */
/*  DEPENDENCIES = S/390, TSO                                       */
/*  RESTRICTIONS = None                                             */
/*  REGISTER CONVENTIONS =                                          */
/*  MODULE TYPE  = Executable                                       */
/*  PROCESSOR    = REXX                                             */
/*  ATTRIBUTES   = Read only, Serially Reusable                     */
/*                                                                  */
/*------------------------------------------------------------------*/
/*                                                                  */
/*ENTRY POINT = EYU#API1                                            */
/*                                                                  */
/*   PURPOSE = All Functions                                        */
/*                                                                  */
/*   LINKAGE = From TSO as a REXX EXEC.                             */
/*                                                                  */
/*   INPUT   = None.                                                */
/*                                                                  */
/*------------------------------------------------------------------*/
/*                                                                  */

Address 'TSO'
Parse Value 0 0 With W_RESPONSE W_REASON .
/*------------------------------------------------------------------*/
/*    CHANGE W_CONTEXT AND W_SCOPE TO MATCH YOUR INSTALLATION       */
/*------------------------------------------------------------------*/
W_CONTEXT = 'RTGA'
W_SCOPE = 'RTGA'
/*------------------------------------------------------------------*/
/*    OBTAIN A CPSM API CONNECTION.                                 */
/*                                                                  */
/*    THE API WILL RETURN A TOKEN IDENTIFYING THE THREAD IN         */
/*    VARIABLE W_THREAD.                                            */
/*------------------------------------------------------------------*/
Say 'Initializing API...'
XX = EYUINIT()
If XX <> 0 Then Signal UNEXPECTED
Say 'Establishing connection...'
XX = EYUAPI('CONNECT' ,
            'CONTEXT('W_CONTEXT')' ,
            'SCOPE('W_SCOPE')' ,
            'VERSION(0310)' ,
            'THREAD(W_THREAD)' ,
            'RESPONSE(W_RESPONSE)' ,
            'REASON(W_REASON)')
If XX <> 0 Then Signal UNEXPECTED
If W_RESPONSE <> EYURESP(OK) Then Signal NO_CONNECT
/*------------------------------------------------------------------*/
/*    GET THE PROGRAM RESOURCE TABLE.                               */
/*                                                                  */
/*    CREATE A RESULT SET CONTAINING ENTRIES FOR ALL PROGRAMS       */
/*    WITH NAMES NOT BEGINNING DFH, EYU or IBM.                     */
/*    THE NUMBER OF ENTRIES MEETING THE CRITERIA IS RETURNED IN     */
/*    VARIABLE W_RECCNT.                                            */
/*------------------------------------------------------------------*/
Say 'Get the PROGRAM resource table...'
W_CRITERIA = 'NOT (PROGRAM=DFH* OR PROGRAM=EYU* OR PROGRAM=IBM*).'
W_CRITERIALEN = 'LENGTH'(W_CRITERIA)
XX = EYUAPI('GET OBJECT(PROGRAM)' ,
                'CRITERIA(W_CRITERIA)' ,
                'LENGTH('W_CRITERIALEN')' ,
                'COUNT(W_RECCNT)' ,
                'RESULT(W_RESULT)' ,
                'THREAD(W_THREAD)' ,
                'RESPONSE(W_RESPONSE)' ,
                'REASON(W_REASON)')
If XX <> 0 Then Signal UNEXPECTED
If W_RESPONSE <> EYURESP(OK) Then Signal NO_GET
/*------------------------------------------------------------------*/
/*    RETRIEVE INFORMATION ABOUT EACH PROGRAM.                      */
/*                                                                  */
/*    FETCH EACH ENTRY AND USE TPARSE TO OBTAIN EACH ATTRIBUTE.     */
/*    DISPLAY DETAILS OF EACH PROGRAM TO THE USER.                  */
/*------------------------------------------------------------------*/
Say 'Fetching' W_RECCNT 'PROGRAM entries...'
Say 'Program  Language     Status       CEDF Status'
W_INTO_OBJECTLEN = 136                   /* LENGTH OF PROGRAM TABLE */
Do III = 1 To W_RECCNT
  XX = EYUAPI('FETCH INTO(W_INTO_OBJECT)' ,
                    'LENGTH(W_INTO_OBJECTLEN)' ,
                    'RESULT(W_RESULT)' ,
                    'THREAD(W_THREAD)' ,
                    'RESPONSE(W_RESPONSE)' ,
                    'REASON(W_REASON)')
  If XX <> 0 Then Signal UNEXPECTED
  If W_RESPONSE <> EYURESP(OK) Then Signal NO_FETCH
  XX = EYUAPI('TPARSE OBJECT(PROGRAM)' ,
                     'PREFIX(PGM)' ,
                     'STATUS(W_RESPONSE)' ,
                     'VAR(W_INTO_OBJECT.1)' ,
                     'THREAD(W_THREAD)')
  If W_RESPONSE <> 'OK' Then Signal UNEXPECTED
  W_TEXT = PGM_PROGRAM
  W_TEXT = 'OVERLAY'(PGM_LANGUAGE,W_TEXT,10)
  W_TEXT = 'OVERLAY'(PGM_STATUS,W_TEXT,23)
  W_TEXT = 'OVERLAY'(PGM_CEDFSTATUS,W_TEXT,36)
  Say W_TEXT
End III
Signal ENDIT
 

/*------------------------------------------------------------------*/
/*    PROCESSING FOR API FAILURES.                                  */
/*------------------------------------------------------------------*/
UNEXPECTED:
      W_MSG_TEXT = 'UNEXPECTED ERROR.'
      Signal SCRNLOG
NO_CONNECT:
      W_MSG_TEXT = 'ERROR CONNECTING TO API.'
      Signal SCRNLOG
NO_GET:
      W_MSG_TEXT = 'ERROR GETTING RESOURCE TABLE.'
      Signal SCRNLOG
NO_FETCH:
      W_MSG_TEXT = 'ERROR FETCHING RESULT SET.'
      Signal SCRNLOG
SCRNLOG:
      Say W_MSG_TEXT
      Say 'RESPONSE='||W_RESPONSE ,
          'REASON='||W_REASON 'RESULT='XX
ENDIT:
/*------------------------------------------------------------------*/
/*    TERMINATE API CONNECTION.                                     */
/*------------------------------------------------------------------*/
XX = EYUAPI('TERMINATE RESPONSE(W_RESPONSE) REASON(W_REASON)')
XX = EYUTERM()
Exit

The C/370, COBOL, and PL/I versions of EYUxAPI1 are written for the CICS environment and can be converted to run in the MVS batch environment by commenting the EXEC CICS SEND commands and uncommenting the preceding language specific output statements.