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

Upload: kevin-grimes

Post on 17-Jun-2015

1.962 views

Category:

Technology


8 download

DESCRIPTION

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

TRANSCRIPT

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