Endevor api an introduction to the endevor application programming interface

37
Endevor API An Introduction to the Endevor Application Programming Interface Kevin Grimes, President CA Endevor Global User Community

description

An introduction to the CA Endevor Application Programming Interface with examples using COBOL and REXX.

Transcript of Endevor api an introduction to the endevor application programming interface

Page 1: Endevor api   an introduction to the endevor application programming interface

Endevor API

An Introduction to the Endevor Application Programming Interface

Kevin Grimes, PresidentCA Endevor Global User Community

Page 2: Endevor api   an introduction to the endevor application programming interface

3) Some Examples

2) Architecture

1) What good is the API?

Agenda

Page 3: Endevor api   an introduction to the endevor application programming interface

1 What Goodis the API?

Page 4: Endevor api   an introduction to the endevor application programming interface

What is an API?

Page 5: Endevor api   an introduction to the endevor application programming interface

What functions are supported?• Inventory Query and List Functions

• Element Extract

• Element Actions

• Package Actions

• and almost any Endevor function

Page 6: Endevor api   an introduction to the endevor application programming interface

“Emptiness which is conceptually liable to be mistaken for sheer nothingness is in fact the reservoir of infinite possibilities.”

~ Daisetz Suzuki

Page 7: Endevor api   an introduction to the endevor application programming interface

2 Architecture

Page 8: Endevor api   an introduction to the endevor application programming interface
Page 9: Endevor api   an introduction to the endevor application programming interface

Calling the API from a COBOL Program

List and Extract Function Call

CALL EAC-CASCMMF-APINAME USING AACTL ALELM-RQ ALELM-RS.

Element Action Function Call

CALL EAC-CASCMMF-APINAME USING AACTL AEGEN-RQ.

Page 10: Endevor api   an introduction to the endevor application programming interface

Sample Applications

Source Code Only:•CCIDRPT1

•ENHAAPGM

•ENHAEPGM

•ENHAPLST

•ENHAPUPD

Load Module Only:•ENTBJAPI

Page 11: Endevor api   an introduction to the endevor application programming interface

3 Examples

Page 12: Endevor api   an introduction to the endevor application programming interface

SCL API FunctionThe jack of all trades

Page 13: Endevor api   an introduction to the endevor application programming interface

IDENTIFICATION DIVISION.

PROGRAM-ID. KGAPISCL.

*REMARKS. THIS PROGRAM CALLS THE ENDEVOR API

* USING PRE-FORMATTED SCL.

ENVIRONMENT DIVISION.

INPUT-OUTPUT SECTION.

FILE-CONTROL.

SELECT INPUT-FILE ASSIGN TO UR-S-APISCLIN

FILE STATUS IS APISCLIN-FILE-STATUS

ACCESS IS SEQUENTIAL.

DATA DIVISION.

FILE SECTION.

FD INPUT-FILE

RECORDING MODE IS F

LABEL RECORDS ARE OMITTED.

01 INPUT-RECORD.

05 FILLER PIC X(80).

Page 14: Endevor api   an introduction to the endevor application programming interface

WORKING-STORAGE SECTION.

01 WS-INPUT-RECORD.

05 WS-INPUT-RECORD-DATA PIC X(80).

01 INPUT-FILE-STATUS PIC X VALUE 'N'.

88 INPUT-EOF VALUE 'Y'.

01 WS-VARIABLES.

05 SUB1 PIC 99 VALUE 0.

05 APISCLIN-FILE-STATUS PIC XX.

88 TASK-SUCCESSFUL-APISCLIN VALUE '00'.

88 END-OF-APISCLIN VALUE '10'.

88 UNDEFINED-ERROR-APISCLIN VALUES ARE '23' THRU '99'.

05 WS-RETURN-CODE PIC 9(4) VALUE ZEROS.

COPY ECCCNST.

COPY ECHAACTL.

COPY ECHAUSCL.

LINKAGE SECTION.

01 LS-PARM.

05 LS-PARM-LENGTH PIC 9(4) COMP.

05 LS-SCL-TYPE PIC X.

Page 15: Endevor api   an introduction to the endevor application programming interface

PROCEDURE DIVISION USING LS-PARM.

MAIN-LINE.

INITIALIZE AUSCL-RQ-DATAAREA.

MOVE LS-SCL-TYPE TO AUSCL-RQ-SCLTYPE.

OPEN INPUT INPUT-FILE.

READ INPUT-FILE INTO WS-INPUT-RECORD

AT END MOVE 'Y' TO INPUT-FILE-STATUS

END-READ.

PERFORM UNTIL INPUT-EOF

ADD +1 TO SUB1

MOVE WS-INPUT-RECORD TO AUSCL-RQ-SCL(SUB1)

READ INPUT-FILE INTO WS-INPUT-RECORD

AT END MOVE 'Y' TO INPUT-FILE-STATUS

END-READ

END-PERFORM.

Page 16: Endevor api   an introduction to the endevor application programming interface

INITIALIZE AACTL-DATAAREA.

MOVE 'N' TO AACTL-SHUTDOWN.

MOVE 'APIMSGS ' TO AACTL-MSG-DDN.

CALL EAC-ENDEVOR-APINAME USING AACTL AUSCL-RQ.

MOVE AACTL-RTNCODE TO WS-RETURN-CODE.

INITIALIZE AACTL-DATAAREA.

MOVE 'Y' TO AACTL-SHUTDOWN.

MOVE 'APIMSGS ' TO AACTL-MSG-DDN.

CALL EAC-ENDEVOR-APINAME USING AACTL.

CLOSE INPUT-FILE.

MOVE WS-RETURN-CODE TO RETURN-CODE.

GOBACK.

Page 17: Endevor api   an introduction to the endevor application programming interface

Sample JCLTest the KGAPISCL COBOL program

Page 18: Endevor api   an introduction to the endevor application programming interface

//KGRIMES JOB (12345,00,P),'KEVIN GRIMES',REGION=0M,

// CLASS=Q,MSGCLASS=X,NOTIFY=&SYSUID

//*

//STEP01 EXEC PGM=NDVRC1,REGION=4M,

// PARM='CONCALL,DDN:APILIB,KGAPISCL,E'

//APILIB DD DISP=SHR,DSN=KGRIMES.PDS.LOADLIB

//C1MSGS1 DD SYSOUT=*

//C1MSGS2 DD SYSOUT=*

//SYMDUMP DD DUMMY

//SYSUDUMP DD SYSOUT=*

//SYSPRINT DD SYSOUT=*

//SYSOUT DD SYSOUT=*

//C1PRINT DD SYSOUT=*

//APIMSGS DD SYSOUT=*

//APISCLIN DD *

SET STOPRC 16 .

RETRIEVE ELEMENT 'KGCOPY05'

FROM ENVIRONMENT 'DEVL'

SYSTEM 'TEST'

Page 19: Endevor api   an introduction to the endevor application programming interface

SUBSYSTEM 'TEST'

TYPE 'COPY'

STAGE D

TO DDNAME 'ELMOUT'

OPTION

CCID 'KEVIN'

COMMENT 'TESTING ENDEVOR API PROGRAM'

OVERRIDE SIGNOUT

SEARCH

.

EOF.

//ELMOUT DD DISP=SHR,DSN=KGRIMES.PDS.SOURCE(KGCOPY05)

//APIMSGS DD SYSOUT=*

//*

Page 20: Endevor api   an introduction to the endevor application programming interface

RXSCL - Rexx FunctionA Rexx function that calls the KGAPISCL COBOL program to execute SCL statements

Page 21: Endevor api   an introduction to the endevor application programming interface

/* REXX -- RXSCL - ENDEVOR API SCL FUNCTION */

X = MSG(OFF)

"ALLOC FI(C1MSGS1) SYSOUT(X)"

"ALLOC FI(C1MSGS2) SYSOUT(X)"

"ALLOC FI(SYMDUMP) DUMMY REUSE"

"ALLOC FI(SYSUDUMP) DUMMY REUSE"

"ALLOC FI(SYSPRINT) SYSOUT(X)"

"ALLOC FI(SYSOUT) SYSOUT(X)"

"ALLOC FI(C1PRINT) SYSOUT(X)"

"ALLOC FI(APILIB) DA('@KGRI.PDS.LOADLIB') SHR"

"ALLOC FI(APIMSGS) SYSOUT(X)"

"ALLOC FI(BSTERR) SYSOUT(X)"

"ALLOC F(APISCLIN) DSORG(PS) TRACKS SPACE(5,5)" ,

"LRECL(80) BLKSIZE(3120) RECFM(F,B) UNIT(SYSDA) NEW "

X = MSG(ON)

Page 22: Endevor api   an introduction to the endevor application programming interface

PULL QCOUNT

"EXECIO" QCOUNT "DISKW APISCLIN ( FINIS"

"CALL *(CONCALL) 'DDN:APILIB,KGAPISCL,E' ";

X = MSG(OFF)

"FREE FI(APISCLIN)"

"FREE FI(C1MSGS1)"

"FREE FI(C1MSGS2)"

"FREE FI(SYMDUMP)"

"FREE FI(SYSUDUMP)"

"FREE FI(SYSPRINT)"

"FREE FI(SYSOUT)"

"FREE FI(C1PRINT)"

"FREE FI(APILIB)"

"FREE FI(APIMSGS)"

"FREE FI(BSTERR)"

X = MSG(ON)

EXIT 0

Page 23: Endevor api   an introduction to the endevor application programming interface

RXTEST1 - Rexx Application

Calls the RXSCL Rexx function to execute Endevor SCL statements

Page 24: Endevor api   an introduction to the endevor application programming interface

/* REXX -- RXTEST1 */

/*------------------------------------------------------------*/

/* Call Endevor SCL API FUNCTION */

/*------------------------------------------------------------*/

QUEUE " SET STOPRC 16 . "

QUEUE " RETRIEVE ELEMENT 'KGCOPY05' "

QUEUE " FROM ENVIRONMENT 'DEVL' "

QUEUE " SYSTEM 'TEST' "

QUEUE " SUBSYSTEM 'TEST' "

QUEUE " TYPE 'COPY' "

QUEUE " STAGE D "

QUEUE " TO DDNAME 'ELMOUT' "

QUEUE " OPTION "

QUEUE " CCID 'KEVIN ' "

QUEUE " COMMENT 'TESTING ENDEVOR API PROGRAM' "

QUEUE " . "

QUEUE " EOF. ”

Page 25: Endevor api   an introduction to the endevor application programming interface

QCOUNT = QUEUED()

PUSH QCOUNT

DSN = 'KGRIMES.PDS.SOURCE(KGCOPY05)'

"ALLOC F(ELMOUT) DA('"DSN"') SHR REUS"

API_RC = RXSCL()

"FREE FI(ELMOUT)"

EXIT API_RC

Page 26: Endevor api   an introduction to the endevor application programming interface

ENTBJAPI Sample ProgramSample Inventory List Function Call

Page 27: Endevor api   an introduction to the endevor application programming interface

RXLSBS - List Endevor Subsystems

A Rexx Function that calls the sample ENTBJAPI program to get a list of Endevor subsystems and writes them to the stack

Page 28: Endevor api   an introduction to the endevor application programming interface

/* REXX */

/*****************************************************************/

/* */

/* NAME: RXLSBS */

/* */

/* FUNCTION: */

/* */

/* This Rexx function calls the Endevor sample API program to */

/* get a list of all subsystems for the specified SYSTEM. */

/* */

/****************************************************************/

X = MSG(OFF)

ARG ENVIR,STAGE,SYSTEM

IF STAGE = '' THEN STAGE = '*'

IF SYSTEM = '' THEN SYSTEM = '*’

Page 29: Endevor api   an introduction to the endevor application programming interface

ENVIR = LEFT(ENVIR,8)

STAGE = LEFT(STAGE,1)

SYSTEM = LEFT(SYSTEM,8)

"ALLOC FI(SYMDUMP) DUMMY REUSE"

"ALLOC FI(SYSUDUMP) DUMMY REUSE"

"ALLOC FI(SYSOUT) SYSOUT(X)"

"ALLOC FI(SYSPRINT) SYSOUT(X)"

"ALLOC FI(BSTERR) SYSOUT(X)"

"ALLOC FI(BSTAPI) SYSOUT(X)”

"ALLOC F(SYSIN) DSORG(PS) TRACKS SPACE(5,5)" ,

"LRECL(80) BLKSIZE(3120) RECFM(F,B) UNIT(SYSDA) NEW "

"ALLOC F(MSG3FILE) DSORG(PS) TRACKS SPACE(5,5)" ,

"LRECL(133) BLKSIZE(0) RECFM(F,B) UNIT(SYSDA) NEW "

"ALLOC F(EXT1ELM) DSORG(PS) TRACKS SPACE(5,5)" ,

"LRECL(2048) BLKSIZE(0) RECFM(V,B) UNIT(SYSDA) NEW ”

Page 30: Endevor api   an introduction to the endevor application programming interface

X = MSG(ON)

QUEUE 'AACTL MSG3FILEEXT1ELM '

QUEUE 'ALSBS AN 'ENVIR || STAGE || SYSTEM

QUEUE 'RUN '

QUEUE 'AACTLY '

QUEUE 'RUN '

QUEUE 'QUIT '

"EXECIO 6 DISKW SYSIN ( FINIS"

"CALL *(NDVRC1) 'ENTBJAPI' ";

API_RC = RC

"EXECIO * DISKR MSG3FILE (FINIS STEM MSG3FILE."

"EXECIO * DISKR EXT1ELM (FINIS STEM LSBS.”

X = MSG(OFF)

"FREE FI(SYSIN)"

"FREE FI(MSG3FILE)”

Page 31: Endevor api   an introduction to the endevor application programming interface

"FREE FI(EXT1ELM)"

"FREE FI(SYMDUMP)"

"FREE FI(SYSUDUMP)"

"FREE FI(SYSPRINT)"

"FREE FI(SYSOUT)"

"FREE FI(BSTERR)"

"FREE FI(BSTAPI)"

X = MSG(ON)

IF API_RC > 0 THEN

DO

DO I = 1 TO MSG3FILE.0

SAY MSG3FILE.I

END

RETURN API_RC

END

DO I = 1 TO LSBS.0

QUEUE LSBS.I

END

Page 32: Endevor api   an introduction to the endevor application programming interface

PUSH LSBS.0

RETURN 0

Page 33: Endevor api   an introduction to the endevor application programming interface

RXTEST2 - Rexx Application

Call RXLSBS Rexx function to get a list of Endevor Subsystems

Page 34: Endevor api   an introduction to the endevor application programming interface

/* REXX -- RXTEST */

/*------------------------------------------------------------*/

/* Get Subsystem List */

/*------------------------------------------------------------*/

RQ_ENV = 'MVSPROD'

RQ_STG_ID = 'P'

RQ_SYSTEM = 'FINANCE'

RC = RXLSBS(RQ_ENV,RQ_STG_ID,RQ_SYSTEM)

IF RC ¬= 0 THEN

DO

SAY 'RXTEST RC =' RC

EXIT RC

END

PULL LSBS_REC_CNT

Page 35: Endevor api   an introduction to the endevor application programming interface

DO I = 1 TO LSBS_REC_CNT

PULL LSBSREC

CALL PARSE_LSBS_REC

SAY 'ENV:' ALSBS_RS_ENV,

'SYSTEM:' ALSBS_RS_SYSTEM,

'SUBSYS:' ALSBS_RS_SUBSYS

END

EXIT

/*------------------------------------------------------------*/

/* Parse the LSBS record into variables */

/*------------------------------------------------------------*/

PARSE_LSBS_REC:

ALSBS_RS_SITE = SUBSTR(LSBSREC,13,1)

ALSBS_RS_ENV = SUBSTR(LSBSREC,14,8)

ALSBS_RS_SYSTEM = SUBSTR(LSBSREC,22,8)

Page 36: Endevor api   an introduction to the endevor application programming interface

ALSBS_RS_SUBSYS = SUBSTR(LSBSREC,30,8)

ALSBS_RS_STG_NAME = SUBSTR(LSBSREC,38,8)

ALSBS_RS_STG_ID = SUBSTR(LSBSREC,46,1)

ALSBS_RS_STG_REL = SUBSTR(LSBSREC,47,4)

ALSBS_RS_UPD_CNT = SUBSTR(LSBSREC,51,8)

ALSBS_RS_UPD_DATE = SUBSTR(LSBSREC,59,8)

ALSBS_RS_UPD_TIME = SUBSTR(LSBSREC,67,8)

ALSBS_RS_UPD_USER = SUBSTR(LSBSREC,75,8)

ALSBS_RS_TITLE = SUBSTR(LSBSREC,83,50)

ALSBS_RS_NXT_SBS = SUBSTR(LSBSREC,133,8)

ALSBS_RS_FMID = SUBSTR(LSBSREC,141,5)

ALSBS_RS_PREGEXC = SUBSTR(LSBSREC,149,1)

RETURN

Page 37: Endevor api   an introduction to the endevor application programming interface

Kevin Grimes, PresidentCA Endevor Global User Community

[email protected]

https://communities.ca.com/web/kevin_grimes/myca