Sample program EYU#API1

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

EYUxAPI1
This program does the following: 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/1 versions of EYUxAPI1 are written for the CICS environment and can be converted to run in the MVS/ESA batch environment by commenting the EXEC CICS SEND commands, and uncommenting the preceeding language specific output statements.

[[ Contents Previous Page | Next Page Index ]]