Question:
Given a CICS transaction ID of MINS, how does it get connected to the first Ideal program it is to invoke?
Answer:
1) The transaction MINS has to be defined to the CICS TP monitor using a Program Control Table (PCT) which contains a definition for each transaction that may be run from this CICS system. Similarly, each local transaction must be linked with a program which is defined in the Program Processing Table (PPT).
For programs that are controlled by the CA IPC Session Control Facility (SCF) three key programs are utilized.
SC00INIT - Signon transactions execute the program SC00INIT, which in turn consults the SC00TRAN table for information about how to process this transaction.
SC00TRAN - Each SCF-based product or component must be defined to SCF by an entry in SC00TRAN, the SCF Transaction Table.
SC00OPTS - SC00INIT consults the site assembled table SC00OPTS to determine how the TP monitor is retrieved. It also affects how the identity of the TP monitor user is determined.
For example here is how these programs may be defined to CICS:
a. DEFINE PROGRAM(SC00INIT) [found in CA IPC 14.0 CAVQSAMP]
GROUP(VQ14GRP) LANGUAGE(ASSEM) RESIDENT(NO) CEDF(NO)
b. DEFINE PROGRAM(SC00TRAN)
GROUP(VQ14GRP) LANGUAGE(ASSEM) RESIDENT(YES) CEDF(NO)
c. DEFINE PROGRAM(SC00OPTS)
GROUP(VQ14GRP) LANGUAGE(ASSEM) RESIDENT(NO) CEDF(NO)
d. DEFINE TRANSACTION(MINS) PROGRAM(SC00INIT) [might be in CA IDEAL 14.0 CAILSAMP]
GROUP(IL14GRP) TWASIZE(64) PROFILE(IL14PRF) SPURGE(NO)
2) After the MINS transaction was defined to CICS it must also be defined to the CA IPC SCF Transaction Table (SC00TRAN). Once it is placed in there, SC00TRAN will need to be re-assembled, link edited and the CICS cycled. A typical entry for this transaction will look like:
SCTRANTB TYPE=ENTRY,PROD=IDL,TRANID=MINS, ACCTID BL65 XX00000026
OPTIONS=(DD,EX,PS), XX00000027
TRNDATA='NDBAMINS ', NO EXIT, USER DBA, MEMBER MINS XX00000028
XFERCMD=IDEAL 00000029
Once you have logged onto your CICS region and entered into IDEAL (using IDEA or IDLX) you can issue a display to find the MINS transaction.
=> display pct
=>
=>
-------------------------------------------------------------------------------
IDEAL: DISPLAY ATZ OPTIONS MEM SYS: $ID DISPLAY
Command....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
====== ================================ T O P =================================
000001 TRAN INITIAL TYPE OF TWA PRD ---------- TRNDATA ----------------
000002 ID PROGRAM ENTRY SIZE PROGRAM USR.MEMBER SEC?
000003
…
000341 MINS SC00INIT FINAL-ID 64 IDL DBA.MINS
3) From the above display we can see that when the transaction MINS is invoked it will call SC00INIT. SC00INIT will in turn read the SC00TRAN table to determine what the controlMEMber name is to be used with this transaction. In this case the MEMber name is also MINS and it is owned by the user DBA
So, if you now go into IDEAL and issue:
=> DISPLAY MEM mins USER dba
=>
=>
-------------------------------------------------------------------------------
IDEAL: DISPLAY MEMBER MEM DBA.MINS SYS: $ID DISPLAY
Command....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
====== ================================ T O P =================================
000100 SEL SYS MEN
000200 SET COMMAND LINE 0
000300 SET COMMAND SEPARATOR N
000400 SET RUN QUITIDEAL YES
000500 SET RUN CLEAR QUITRUN
000600 SET ENVIRONMENT FINAL-ID NONE
000601 SET ENVIRONMENT ACCOUNT-ID BL65
000700 RUN MINS VER LAST
====== ============================= B O T T O M ==============================
Here we can see the various environmental options that have been chosen to be used when we eventually execute IDEAL program (also named) MINS
4) In order to find out the name of the IDEAL application system this program is part of we can:
=> DISPLAY INDEX PGM mins
=>
=>
-------------------------------------------------------------------------------
IDEAL: DISPLAY INDEX PGM SYS: MEN DISPLAY
Command Name Ver S R-S SYS Lang Description Created Updated
====== ================================ T O P =================================
000001 MINS 006 H PRV MEN IDEAL institution files 03/17/89 06/12/90
000002 MINS 008 H PRV MEN IDEAL institution files 06/12/90 04/24/14
000003 MINS 009 H SHR MEN IDEAL institution files 04/24/14 10/06/14
000004 MINS 010 P SHR MEN IDEAL institution files 10/06/14 10/06/14
000005 MINS 011 T PRV MEN IDEAL institution files 10/15/15 11/09/15
====== ============================= B O T T O M ==============================
5) Now with the SYS name we can look at the various sections of the program. For example, in the Resource section we can see that MINS appears to be a menu driven program designed to call other sub-programs to Add, Browse, Change, Delete and check Security levels while displaying a panel. Note these programs and panel are derived from other IDEAL application systems.
=> DISPLAY PROGRAM mins VERSION last res
------------------------------------------------------------------------------
IDEAL: Resource Edit Panel PGM MINS (011) TEST SYS: MEN DISPLA
Command Type Name of DVW/PGM/PNL or RPT Version System Qual?
====== === ========== T O P =============== ==== === =
000001 PGM AINSCTL 022 BLI
000002 PGM BINSCTL 023 BLI
000003 PGM CINSCTL 023 BLI
000004 PGM DINS 041 BLI
000005 PGM PCHKSEC 001 SEC
000006 PNL MINS 001 MEN
====== === ======= B O T T O M ============ ==== === =
6) Normally IDEAL programs execute as a compile, load and go configuration. However, once the program/panel has been promoted to a PROD version, you have the capability to create an executable load module using the IDEAL CREATE MODULE program/panel command. The maximum length of the program nodule name can only be 7 characters. When the transaction calls the program, the load module version will be fetched from the CICS DFHRPL library concatenation.
If you are in doubt as to whether the particular IDEAL program has be created as a load module, once you have signed into CICS, you can issue DBUT M=xxxxxxxR. If the program is a load module, it will be loaded and the hexadecimal version of the program will be displayed. If it has not been created as a load module, then you’ll get PROGRAM NOT IN CSD.
Another way to determine this is to get into IDEAL, issue a SELECT SYS yyy for the application system that the program belongs to then issue, DISPLAY INDEX MODULE. This will provide a list of programs and panels that are in load module format. For example:
=> display index module
=>
=>
-------------------------------------------------------------------------------
IDEAL: DISPLAY INDEX MOD SYS: MEN DISPLAY
Command Name For IDEAL entity Last compiled at Linked Verify
====== ================================ T O P =================================
000025 MFTG PGM MFTG (001) SYS MEN 02/15/02 08:48:55 02/19/02
000026 MFTQ PGM MFTQ (016) SYS MEN 01/27/10 14:20:24 12/02/10
000027 MFTR PGM MFTR (001) SYS MEN 01/31/02 13:48:41 02/24/02
000028 MHRT PGM MHRT (001) SYS MEN 03/12/09 10:08:41 05/02/09
000029 MINSDUP PGM MINSDUP (006) SYS MEN 12/07/01 08:19:23 12/09/01
000030 MISD PGM MISD (005) SYS MEN 05/04/98 12:02:05 07/12/98
The DISPLAY LMT (Load Module Table) can also be used to provide you with a cross reference of the IDEAL system and program name vs. the module name (which is normally the same as the program name).
=> display lmt
=>
=>
-------------------------------------------------------------------------------
IDEAL: DISPLAY ATZ OPTIONS MEM SYS: MEN DISPLAY
Command....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
====== ================================ T O P =================================
000555 PGM MFG MFT3PG8 (PRD) IS MODULE MFT3PG8
000556 PGM MFG MFT3PG9 (PRD) IS MODULE MFT3PG9
000557 PGM MFG MFT4PG1 (PRD) IS MODULE MFT4PG1
000558 PGM MFG MFT4PG2 (PRD) IS MODULE MFT4PG2
000559 PGM MFG MFT5PG1 (PRD) IS MODULE MFT5PG1
000560 PGM MEN MHRT (PRD) IS MODULE MHRT
000561 PGM MEN MINSDUP (PRD) IS MODULE MINSDUP
000562 PGM MEN MISD (PRD) IS MODULE MISD