Program EYU#API1 is written in REXX for the TSO environment.
/* 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 ]]