KICKS

A transaction processing system for CMS & TSO

Operation

 

File Sharing

KICKS implements VSAM file sharing by the simple expedient of opening files only when access is demanded and closing files at the end of each transaction (or when a blocking terminal read is attempted). Enqueues against the base cluster are issued to ensure opens will succeed without excessive console messages.

This creates a possibility for deadly embrace in that since enqueues are obtained as files are accessed, a program that accesses files in different initial order (based on some criteria) could lock up against another copy of the same program operated by another user – even if that program did not exhibit such behavior under real CICS. If such a scenario is detected KICKS will abend one of the tasks. Programs that exhibit such behavior can be fixed by making them initially access (in fixed order) each of the files they might use.

Since with this scheme only one task will ever be using any file those files should be defined with VSAM shareoptions (1 3) – meaning only one task can have the file open at a time for read or write. Of course in order for multiple users to be able to open the files as needed the files must be allocated DISP=SHR.

This provides for file sharing between KICKS users. It does not allow for file sharing between KICKS users and CICS users, or between KICKS users and normal batch jobs (ie, batch jobs other than KICKS in batch) . CICS and normal batch jobs usually open files at startup and keep them open until the program ends so usually can’t participate in the kind of file sharing KICKS uses.

Shutdown KICKS, prevent any new KICKS startups

In an environment where KICKS is installed at the system level and available to all users it may be desirable to control when KICKS is available and/or shutdown all running KICKS users.

When KICKS is started the clist performs a test allocation of the system level SKIKLOAD dataset. If the attempted allocation fails, the clist issues a message to the TSO user and quits. This behavior allows the operator to control new KICKS logons by cataloging or uncataloging that SKIKLOAD dataset.

So

And

Using KICKS in batch

It's possible to run KICKS as a batch job. Essentially what you do is replace the KICKS clist with similar JCL and allocate two new datasets, CRLPIN and CRPLOUT. These are the input and output side (respectively) of the simulated terminal KICKS uses for the batch run.

The KICKS userid in batch will be either the JOBNAME on the JCL jobcard, or the USERID you specified on the JCL jobcard or that your security system supplied (if you have a security system installed).

The simulated terminal is by default a 24x80 3270 and has a default id of "CRLP". If there is a problem using that as a terminal id - for example some transactions use the terminal id as part of some resource name (a common practice in naming temporary storage queues) - you can use the CRLP transaction to change it.  The CRLP transaction can also change the batch terminal's default behavior from 3270 to a legacy pure card-in / printer-out behavior if necessary (specify PURE or NO3270 to change it, 3270 to change it back).

When the terminal is in legacy mode each record of CRLPIN is presented to the program one at a time without any edits (including line numbers if present) and each terminal write results in printing exactly one line into CRLPOUT. The maximum input or output length is 80 characters.

When NOT in legacy mode:

When the transaction sends 3270 data to the terminal KICKS translates that datastream into a printer representation (pretty much like a screen shot - black characters on a white background, attributes ignored) and writes it to CRLPOUT.

KICKS reads card images from CRLPIN and makes the data available to the transaction. Data on each card should end with a <XXX> , where the XXX can be an upper or lower case command or aid. Commands are REMARK (or just REM), TAB, BTAB, HOME, END, ERASE and <RR,CC> cursor placement. Aids are ENTER, CLEAR, PA1-PA3, and PF1-PF24. Anything following the <XXX> on the card is a remark.

<REM> or <REMARK> is just a way to end terminal input from the current card (allowing remarks to follow) without doing anything.

<TAB> advances the cursor (where data goes) to the next input field.

<BTAB> moves the cursor to the start of the current field, or, if the cursor is already at the start of a field, to the start of the previous field.

<HOME> moves the cursor to the start of the first field on the screen. First being top left most.

<END> moves the cursor to the start of the last field on the screen, Last being the bottom right most. <END> is logically equivalent to <HOME><BTAB>.

<ERASE> fills the remainder of the current field with binary zeros but does not move the cursor.

<RR,CC> places the cursor at row RR (1-24), column CC (1-80).

Since anything following a <XXX>  is a remark only the first <XXX> on the card is a command. (Others being remarks!)

Actually, anything starting with a < is expected to be a <XXX> and terminates input on the card. If you need to enter data containing a < you must 'escape' it using a \, so to enter "here is an <XXX>" you would code "here is an \<XXX>". If you need to enter a \ you would use \\. 

Data on a card preceding the <XXX> is put, character by character, into fields starting at the current cursor location (which is initially wherever the last terminal write left it). If the cursor hits the end of a field it will either advance to the next field, or to the next input field depending on askip as usual. If the field it ends up in does not allow input then any data entered is thrown away without moving the cursor until something (<TAB> ?) does move the cursor. This simulates a 'locked' state.

When a <XXX> is an aid - <ENTER> <CLEAR> <PA1> <PF1> etc - the resulting data is made available to the transaction.

End of file on CRLPIN simulates a <CLEAR> and sets the KICKS shutdown bit, which will take effect when the current transaction (if any) ends.

Here is sample JCL from userid.KICKSSYS.V1R5M0.TESTCOB(BATCH1) to start KICKS and run a couple of transactions.

//BATCH1  JOB  CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),REGION=2000K,
// USER=HERC01
//*
//ALLOW  EXEC PGM=IEFBR14
//ALLOW    DD DSN=HERC01.KICKSSYS.V1R5M0.ALLOW.STARTUP,DISP=SHR
//* fail job if KICKS startup not allowed...
//GO     EXEC PGM=KIKSIP1$,TIME=1,PARM='SIT=1$'
//* kiksip1$ comes from steplib...
//STEPLIB  DD DSN=HERC01.KICKSSYS.V1R5M0.SKIKLOAD,DISP=SHR
//* tables come from skikload...
//SKIKLOAD DD DSN=HERC01.KICKSSYS.V1R5M0.SKIKLOAD,DISP=SHR
//* programs & maps come from kikrpl...
//KIKRPL   DD DSN=HERC01.KICKS.V1R5M0.KIKRPL,DISP=SHR,
//         DCB=BLKSIZE=32000
//         DD DSN=HERC01.KICKSSYS.V1R5M0.KIKRPL,DISP=SHR
//*
//SYSPRINT DD SYSOUT=*,DCB=(RECFM=F,BLKSIZE=80)
//SYSTERM  DD SYSOUT=*,DCB=(RECFM=F,BLKSIZE=80)
//SYSOUT   DD SYSOUT=*,DCB=BLKSIZE=132
//CRLPOUT  DD SYSOUT=*,DCB=(RECFM=F,BLKSIZE=132)
//TRANDUMP DD SYSOUT=*,DCB=(RECFM=F,BLKSIZE=132)
//SYSUDUMP DD SYSOUT=*
//*
//AUXTRC   DD SYSOUT=*,DCB=(RECFM=F,BLKSIZE=120)
//*
//SYSIN    DD DUMMY,DCB=(RECFM=F,BLKSIZE=80)
//*
//TACDATA  DD DSN=HERC01.KICKS.TACDATA,DISP=SHR
//*
//CRLPIN   DD *,DCB=BLKSIZE=80
<clear>            get blank screen to enter next transaction
crlp<REMARK>       the CRLP transaction can be used to set
    <REMARK>       or change the sequential terminal name or options
    <REMARK>       TERMID=xxxx - change name from default CRLP to ?
    <REMARK>       TRIM/NOTRIM - trailing spaces trimmed off (or not)
    <REMARK>       BORDER/NOBORDER - box around screen (or not)
    <REMARK>       ** note that TRIM & BORDER are mutually exclusive
    <REMARK>       ECHO/NOECHO - crlpin echoed to crlpout (or not)
    <REMARK>       TIOA/NOTIOA - generated TIOA displayed (or not)
    <REMARK>       SHOWI/NOSHOWI - input screen displayed (or not)
border<enter>      show current options
<clear>            get blank screen to enter next transaction
BTC0<ENTER>        show the main menu
<PF1>              show the auto refund menu
<PF1>              show the add request screen
10<REM>            YEAR, NO <TAB> 'CAUSE AUTOSKIPPED ALREADY
memyself<erase>    NAME, NO SPACES, AUTOSKIP (except last!)
<TAB>              <tab> can't go on same line <erase> above...
14725 INNER WAY<ERASE>
<TAB>
SITKA<ERASE>
<TAB>
AK<REM>            ST,  NO <ERASE> OR <TAB> 'CAUSE FIELD FILLED
99835<REM>         ZIP, NO <ERASE> OR <TAB> 'CAUSE FIELD FILLED
516384991<REM>     SSN, NO <ERASE> OR <TAB> 'CAUSE FIELD FILLED
43210<ERASE>       GROSS
<TAB>
1NOT<ERASE>        CONTRIB - not numeric, force error
<ENTER>            try to do the add, get error msg
<CLEAR>            back up to auto refund menu
<CLEAR>            back up to main menu
<CLEAR>            back up to 'data entry concluded'
<clear>            get blank screen to enter next transaction
KSSF<ENTER>        LOGOFF - would happen anyway at following /*
/*
//

Here is the output (from DD CRLPOUT) the above JCL produces. I've highlighted the echoed input in yellow...

*--------------------------------------------------------------------------------*
| KSGM for TSO user HERC01   at terminal CRLP       BSP1    08:51:21  02/25/14   |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|            KK        KK   IIIIIIIIII    CCCCCCCCCC   KK        KK   SSSSSSSSSS |
|           KK       KK    IIIIIIIIII   CCCCCCCCCCCC  KK       KK   SSSSSSSSSSSS |
|          KK      KK         II       CC        CC  KK      KK    SS        SS  |
|         KK     KK          II       CC            KK     KK     SS             |
|        KK    KK           II       CC            KK    KK      SSS             |
|       KKKKKKK            II       CC            KKKKKKK        SSSSSSSSS       |
|      KKKKKKK            II       CC            KKKKKKK         SSSSSSSSS       |
|     KK    KK           II       CC            KK    KK               SSS       |
|    KK     KK          II       CC            KK     KK               SS        |
|   KK      KK         II       CC        CC  KK      KK    SS        SS         |
|  KK       KK    IIIIIIIIII   CCCCCCCCCCCC  KK       KK    SSSSSSSSSSSS         |
| KK        KK   IIIIIIIIII    CCCCCCCCCCC  KK        KK    SSSSSSSSSS           |
|                                                                      TM        |
|                                                                                |
|                                                            For TSO             |
|                                                                                |
|                                                            V1R5M0              |
|                                                            January 2014        |
| Press CLEAR to continue...                                 © Mike Noel         |
*--------------------------------------------------------------------------------*

<clear>            get blank screen to enter next transaction

*--------------------------------------------------------------------------------*
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
*--------------------------------------------------------------------------------*

crlp<REMARK>       the CRLP transaction can be used to set
    <REMARK>       or change the sequential terminal name or options
    <REMARK>       TERMID=xxxx - change name from default CRLP to ?
    <REMARK>       TRIM/NOTRIM - trailing spaces trimmed off (or not)
    <REMARK>       BORDER/NOBORDER - box around screen (or not)
    <REMARK>       ** note that TRIM & BORDER are mutually exclusive
    <REMARK>       ECHO/NOECHO - crlpin echoed to crlpout (or not)
    <REMARK>       TIOA/NOTIOA - generated TIOA displayed (or not)
    <REMARK>       SHOWI/NOSHOWI - input screen displayed (or not)
<enter>            show current options


*--------------------------------------------------------------------------------*
|CRLP TERMID=CRLP NOTRIM BORDER ECHO NOTIOA NOSHOWI 3270                         |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
*--------------------------------------------------------------------------------*

<clear>            get blank screen to enter next transaction

*--------------------------------------------------------------------------------*
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
*--------------------------------------------------------------------------------*

BTC0<ENTER>        show the main menu

*--------------------------------------------------------------------------------*
| TACMS01     NEVADA DEPARTMENT OF LABOR - ACCOUNTS AND CONTRIBUTIONS    TACMENU |
| 02/24/14                                                               02/24/14|
|                                   MASTER MENU                                  |
|                                                                                |
|                                                                                |
|             PRESS THE PF KEY CORRESPONDING TO THE DESIRED FUNCTION             |
|                                                                                |
|             PF1  ---  EMPLOYEE AUTOMATIC REFUND  ------------ PF13             |
|             PF2  ---  MANUAL REFUND  ------------------------ PF14             |
|             PF3  ---  CANCELLATION  ------------------------- PF15             |
|             PF4  ---  DISHONORED ITEM  ---------------------- PF16             |
|             PF5  ---  DEPOSIT  ------------------------------ PF17             |
|             PF6  ---  REDEMPTION  --------------------------- PF18             |
|             PF7  ---  OTHER MANUAL PROCESSES  --------------- PF19             |
|       N/A   PF8  ---  --------------------------------------- PF20   N/A       |
|       N/A   PF9  ---  --------------------------------------- PF21   N/A       |
|       N/A   PF10 ---  --------------------------------------- PF22   N/A       |
|       N/A   PF11 ---  --------------------------------------- PF23   N/A       |
|             PF12 ---  RETURN TO KICKS ----------------------- PF24             |
|                                                                                |
|             IF TERMINAL HAS NO PF KEYS ENTER CODE HERE ====>                   |
|                                                                                |
|                                                                                |
|                                                                                |
*--------------------------------------------------------------------------------*

<PF1>              show the auto refund menu

*--------------------------------------------------------------------------------*
| TACMS01     NEVADA DEPARTMENT OF LABOR - ACCOUNTS AND CONTRIBUTIONS    TACMENU |
| 02/24/14                                                               02/24/14|
|                         EMPLOYEE AUTOMATIC REFUND MENU                         |
|                                                                                |
|                                                                                |
|             PRESS THE PF KEY CORRESPONDING TO THE DESIRED FUNCTION             |
|                                                                                |
|             PF1  ---  ADD    REFUND REQUEST  ---------------- PF13             |
|             PF2  ---  REVIEW REFUND REQUEST  ---------------- PF14             |
|       N/A   PF3  ---  CHANGE REFUND REQUEST  ---------------- PF15   N/A       |
|       N/A   PF4  ---  DELETE REFUND REQUEST  ---------------- PF16   N/A       |
|       N/A   PF5  ---  --------------------------------------- PF17   N/A       |
|       N/A   PF6  ---  --------------------------------------- PF18   N/A       |
|       N/A   PF7  ---  --------------------------------------- PF19   N/A       |
|       N/A   PF8  ---  --------------------------------------- PF20   N/A       |
|       N/A   PF9  ---  --------------------------------------- PF21   N/A       |
|       N/A   PF10 ---  --------------------------------------- PF22   N/A       |
|       N/A   PF11 ---  --------------------------------------- PF23   N/A       |
|             PF12 ---  RETURN TO MASTER MENU  ---------------- PF24             |
|                                                                                |
|             IF TERMINAL HAS NO PF KEYS ENTER CODE HERE ====>                   |
|                                                                                |
|                                                                                |
|                                                                                |
*--------------------------------------------------------------------------------*

<PF1>              show the add request screen

*--------------------------------------------------------------------------------*
| TACMS02     NEVADA DEPARTMENT OF LABOR - ACCOUNTS AND CONTRIBUTIONS    TACARA  |
| 02/24/14                                                               02/24/14|
|                         EMPLOYEE AUTOMATIC REFUND - ADD                        |
|                                                                                |
|                                                                                |
|              CALENDAR YEAR              81                                     |
|                                                                                |
|              NAME                       * * *************                      |
|              ADDRESS FIRST LINE         *************************              |
|              CITY                       **********************                 |
|              STATE                      **                                     |
|              ZIP CODE                   00000                                  |
|                                                                                |
|              SSN                        000000000                              |
|                                                                                |
|              GROSS WAGES                00000000                               |
|              EMPLOYEE CONTRIBUTIONS     00000                                  |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|       TYPE REQUIRED DATA AND PRESS ENTER.  PRESS CLEAR TO RETURN TO MENU.      |
|                                                                                |
|                                                                                |
*--------------------------------------------------------------------------------*

12<REM>            YEAR, NO <TAB> 'CAUSE AUTOSKIPPED ALREADY
memyself<erase>    NAME, NO SPACES, AUTOSKIP (except last!)
<TAB>              <tab> can't go on same line <erase> above...
14725 INNER WAY<ERASE>
<TAB>
SITKA<ERASE>
<TAB>
AK<REM>            ST,  NO <ERASE> OR <TAB> 'CAUSE FIELD FILLED
99835<REM>         ZIP, NO <ERASE> OR <TAB> 'CAUSE FIELD FILLED
516384991<REM>     SSN, NO <ERASE> OR <TAB> 'CAUSE FIELD FILLED
43210<ERASE>       GROSS
<TAB>
1NOT<ERASE>        CONTRIB - not numeric, force error
<ENTER>            try to do the add, get error msg

*--------------------------------------------------------------------------------*
| TACMS02     NEVADA DEPARTMENT OF LABOR - ACCOUNTS AND CONTRIBUTIONS    TACARA  |
| 02/24/14                                                               02/24/14|
|                         EMPLOYEE AUTOMATIC REFUND - ADD                        |
|                                                                                |
|                                                                                |
|              CALENDAR YEAR              12                                     |
|                                                                                |
|              NAME                       M E MYSELF                             |
|              ADDRESS FIRST LINE         14725 INNER WAY                        |
|              CITY                       SITKA                                  |
|              STATE                      AK                                     |
|              ZIP CODE                   99835                                  |
|                                                                                |
|              SSN                        516384991                              |
|                                                                                |
|              GROSS WAGES                00043210                               |
|              EMPLOYEE CONTRIBUTIONS     01NOT                                  |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|       TYPE REQUIRED DATA AND PRESS ENTER.  PRESS CLEAR TO RETURN TO MENU.      |
|                                                                                |
| EMPLOYEE CONTRIBUTIONS NOT NUMERIC                                             |
*--------------------------------------------------------------------------------*

<CLEAR>            back up to auto refund menu

*--------------------------------------------------------------------------------*
| TACMS01     NEVADA DEPARTMENT OF LABOR - ACCOUNTS AND CONTRIBUTIONS    TACMENU |
| 02/24/14                                                               02/24/14|
|                         EMPLOYEE AUTOMATIC REFUND MENU                         |
|                                                                                |
|                                                                                |
|             PRESS THE PF KEY CORRESPONDING TO THE DESIRED FUNCTION             |
|                                                                                |
|             PF1  ---  ADD    REFUND REQUEST  ---------------- PF13             |
|             PF2  ---  REVIEW REFUND REQUEST  ---------------- PF14             |
|       N/A   PF3  ---  CHANGE REFUND REQUEST  ---------------- PF15   N/A       |
|       N/A   PF4  ---  DELETE REFUND REQUEST  ---------------- PF16   N/A       |
|       N/A   PF5  ---  --------------------------------------- PF17   N/A       |
|       N/A   PF6  ---  --------------------------------------- PF18   N/A       |
|       N/A   PF7  ---  --------------------------------------- PF19   N/A       |
|       N/A   PF8  ---  --------------------------------------- PF20   N/A       |
|       N/A   PF9  ---  --------------------------------------- PF21   N/A       |
|       N/A   PF10 ---  --------------------------------------- PF22   N/A       |
|       N/A   PF11 ---  --------------------------------------- PF23   N/A       |
|             PF12 ---  RETURN TO MASTER MENU  ---------------- PF24             |
|                                                                                |
|             IF TERMINAL HAS NO PF KEYS ENTER CODE HERE ====>                   |
|                                                                                |
|                                                                                |
|                                                                                |
*--------------------------------------------------------------------------------*

<CLEAR>            back up to main menu

*--------------------------------------------------------------------------------*
| TACMS01     NEVADA DEPARTMENT OF LABOR - ACCOUNTS AND CONTRIBUTIONS    TACMENU |
| 02/24/14                                                               02/24/14|
|                                   MASTER MENU                                  |
|                                                                                |
|                                                                                |
|             PRESS THE PF KEY CORRESPONDING TO THE DESIRED FUNCTION             |
|                                                                                |
|             PF1  ---  EMPLOYEE AUTOMATIC REFUND  ------------ PF13             |
|             PF2  ---  MANUAL REFUND  ------------------------ PF14             |
|             PF3  ---  CANCELLATION  ------------------------- PF15             |
|             PF4  ---  DISHONORED ITEM  ---------------------- PF16             |
|             PF5  ---  DEPOSIT  ------------------------------ PF17             |
|             PF6  ---  REDEMPTION  --------------------------- PF18             |
|             PF7  ---  OTHER MANUAL PROCESSES  --------------- PF19             |
|       N/A   PF8  ---  --------------------------------------- PF20   N/A       |
|       N/A   PF9  ---  --------------------------------------- PF21   N/A       |
|       N/A   PF10 ---  --------------------------------------- PF22   N/A       |
|       N/A   PF11 ---  --------------------------------------- PF23   N/A       |
|             PF12 ---  RETURN TO KICKS ----------------------- PF24             |
|                                                                                |
|             IF TERMINAL HAS NO PF KEYS ENTER CODE HERE ====>                   |
|                                                                                |
|                                                                                |
|                                                                                |
*--------------------------------------------------------------------------------*

<CLEAR>            back up to 'data entry concluded'

*--------------------------------------------------------------------------------*
|DATA ENTRY CONCLUDED                                                            |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
*--------------------------------------------------------------------------------*

<clear>            get blank screen to enter next transaction

*--------------------------------------------------------------------------------*
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
*--------------------------------------------------------------------------------*

KSSF<ENTER>        LOGOFF - would happen anyway at following /*

*--------------------------------------------------------------------------------*
| KICKS is shutting down...                                                      |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
*--------------------------------------------------------------------------------*

One use for KICKS in batch is CLG (Compile, Link & Go) debugging of your KICKS transactions - see the various jobs in userid.KICKSSYS.V1R5M0.TESTCOB (and TESTGCC). These jobs are intended to illustrate how to use some of the KICKS API's, but are also useful as models for your own 'CLG' jcl. A few things to notice about those jobs: they use SIT=B$, which pulls in PCT=B$, PPT=B$, FCT=B$, and DCT=B$. SIT=B$ also specifies a null PLTPI, which is why KSGM doesn't show up as the initial screen when you run the TESTJCL jobs. You should examine the tables so you know what is in them, but the most important point is that the PCT has a entry named TCOB that calls a program TESTCOB; and the PPT has an entry TESTCOB for a command level program. So all the CLG test jobs link their programs as TESTCOB, and all the test jobs run the transaction TCOB in batch KICKS.

Supplied Transactions

KICKS is supplied with a number of  transactions and associated programs to assist with its operation These include

KSGM (aka CSGM)

The KSGM transaction is typically used to present the first screen the user sees when KICKS is started. This occurs because KSGM is typically the argument of the SIT PLTPI option, so this transaction is automatically run when KICKS starts.  Since it's the first message, this has been called the "good morning" (ie, GM) message.

The most usual action following display of the KSGM screen is to simply press the CLEAR (or PF3) key and enter the first transaction you need to run. But if you decide to stop and play you'll find you can get rapidly changing set of colors by rapidly pressing the ENTER key (or holding the ENTER key down if your terminal emulator implements repeat in that case). PF1 will display a limited help screen, and PF2 from the help screen will display (and allow you to print) the KICKS license.

The PCT entry for KSGM has an optional "TWASIZE" agrument. KSGM does not actually use a TWA (transaction work area), but it uses the defined size as the number of seconds to delay between changing the colors on the block letters displayed. If a static display (no color updates) is desired simply specify TWASIZE=0 (or omit TWASIZE altoghther). TWASIZE=1 is a special case that always produces exactly the same color combination, it's used for documentation purposes. TWASIZE=2 (meaning 2 seconds between color updates) thru 60 (once a minute) are available.

KSGM requires a PCT entry pointing to the COBOL program KSGMPGM, which in turn requires a PPT entry for KSGMPGM. It also requires a PPT entry for KSGMAPL which defines BMS maps for 24x80, 32x80, 43x80, 32x87, 27x132, and 62x160 screens. Limited help for this program is presented by the GCC program KSGMHLP (which also requires a PPT entry), and the help program may display or print the KICKS license agreement using the COBOL program KSGMLIC (which also requires a PPT entry. KSGMLIC is an example of a KICKS program that uses non-CICS api's, in this case batch COBOL i/o used to read the license from a pds member.

Other PCT entries may also point to KSGMPGM; CSGM (the usual CICS transaction id for the good morning message) is supplied with TWASIZE=0 for a random color but static display, and KSG1 is supplied to access the TWASIZE=1 special "documentation" version of the display.

Source for KSGMPGM (and for KSGMHLP and for KSGMLIC) is in HERC01.KICKSSYS.V1R5M0.COB as one source member KSGMPGM. Source for KSGMAP and KSGMAPL maps are in HERC01.KICKSSYS.V1R5M0.MAPSRC as one source member KSGMMAP.

KSSF (aka CSSF, aka LOGOFF)

The KSSF transaction is used for user initiated KICKS shutdown. The similar CICS transaction, CSSF, refers to "sign off", and indeed signoff is the api that the KSSF transaction will initiate. But signoff from KICKS is the same as shutting down KICKS and returning to TSO...

The KSSF transaction runs KSSFPGM, which, besides putting out a cute little KICKS is shutting down message, mainly does an
    EXEC KICKS SIGNOFF END-EXEC
to tell KICKS it's time to quit (see the SIGNOFF api in the Programming section of this User's Guide).

If you have some action that needs to happen at KICKS shutdown you might be tempted to add them to KSSFPGM. Do NOT. This isn't the only place that the SIGNOFF api might be triggered! For example the batch (CRLP) terminal will signal SIGNOFF when it encounters EOF on the input file (CRLPIN). Instead add your actions to K999PGM (or whatever you are using for a PLTSD program); these will always be executed at shutdown, regardless of the path taken to get there...

KSSF requires a PCT entry pointing to the COBOL program KSSFPGM, which in turn requires a PPT entry for KSSFPGM.

Other PCT entries may also point to KSSFPGM; CSSF (the usual CICS transaction id for 'signoff') is available, as is LOGOFF (LOGO actually, KICKS and CICS only see the first 4 characters of a transaction).

Source for KSSFPGM is in HERC01.KICKSSYS.V1R5M0.COB.

K999

The K999 transaction is typically the last thing run when KICKS is shutdown. This occurs because K999 is typically the argument of the SIT PLTSD option, so this transaction is automatically run just before KICKS quits. 

The K999 transaction runs K999PGM, which, as delivered, is just a shell you can modify to do anything you think needs to happen at that point.

K999 requires a PCT entry pointing to the COBOL program K999PGM, which in turn requires a PPT entry for K999PGM.

Source for K999PGM is in HERC01.KICKSSYS.V1R5M0.COB.

KSMT (aka KEMT, aka CSMT, aka CEMT)

The KSMT transaction is used to display and modify KICKS internal control variables.

 KICKS Master Terminal Program      (maxcc =     0)                             
                                                                                
                                                                                
Press a PF key to obtain indicated action:                                      
                                                                                
PF1  =  SHOW TRACE STATUS                                                       
PF2  =  TOGGLE INTERNAL TRACE ON/OFF                                            
PF3  =  TOGGLE AUX TRACE ON/OFF                                                 
PF4  =  TOGGLE INTENSE TRACE ON/OFF                                             
                                                                                
PF5  =  SHOW ICVR VALUE                                                         
PF6  =  DECREASE ICVR                                                           
PF7  =  INCREASE ICVR                                                           
PF8  =                                                                          
PF9  =                                                                          
PF10 =                                                                          
PF11 =                                                                          
PF12 =  QUIT                                                                    
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                

As above,KSMT is PF key driven, PF12 quits.

The KSMT transaction runs the KSMTPGM program

KSMT requires a PCT entry pointing to the COBOL program KSMTPGM, which in turn requires a PPT entry for KSMTPGM. It also requires a set of PPT entries for MACC routines it uses to obtain and change KICKS system information; these entries are KTRCSTA (get trace status), KTRCON (turn trace on), KTRCOFF (turn trace off), KTRCAON (turn aux trace on), KTRCAOF (turn aux trace off), KTRCINON (turn intense trace on), KTRCINOF (turn intense trace off), KICVRGET (obtain ICVR value), KICVRPUT (change ICVR value),  KLASTCCG (get lastcc value), KLASTCCP (change lastcc value), KMAXCCG (get maxcc value), and KMAXCCP  (change maxcc value).

Other PCT entries such as CSMT and CEMT may also point to KSMTPGM.

Source for KSMTPGM is in HERC01.KICKSSYS.V1R5M0.COB. Source for the subroutines is part of the KICKS source distribution, in HERC01.KICKSTS.JCL members KSMTSUBS and LASTCC.

KEDF (aka CEDF)

The KEDF transaction is used to turn the interactive debug facility on or off; to specify on which EXEC KICKS api calls the debug facility is to display it's before/after screens; and to enable source code trace.

When entered as just "KEDF" it displays a table of api calls, each of which is shown as hightlighed (enabled), or not highlighed (not enabled).

 KEDF (1.5.0) is  OFF  to toggle it ON   press PF4            12:31:49  10/21/14
                                                                                
 Highlighed items will be displayed, to change put cursor on item,  press PF5   
                                                                                
                                                                                
                                                                                
    DELETEQ TD      DELETE         ADDRESS       ABEND         RECEIVE          
    READQ TD        ENDBR          ASKTIME       DUMP          RECEIVE MAP      
    WRITEQ TD       READ           ASSIGN        ENTER         SEND TEXT        
                    READNEXT       ENQ           LINK          SEND MAP         
    SPOOLOPEN       READPREV       DELAY         LOAD          SEND CONTROL     
    SPOOLWRITE      RESETBR        DEQ           RELEASE                        
    SPOOLCLOSE      REWRITE        FORMATTIME    RETURN        HANDLE CONDITION 
                    STARTBR        SIGNOFF       XCTL          IGNORE CONDITION 
    DELETEQ TS      UNLOCK         SUSPEND                     HANDLE AID       
    READQ TS        WRITE          SYNCPOINT     FREEMAIN      HANDLE ABEND     
    WRITEQ TS       WRITE OPERATOR               GETMAIN                        
                                                                                
                    SOURCE TRACE                                                
                                                                                
                                                                                
 To highlight all press PF6, to Un-high all press PF7                           
                                                                                
 Enter (or PF3) - exit+save                                  Clear - exit+nosave

KEDF is PF driven. On the top line you will note use of PF4 to turn the debugger on or off. On the bottom line you will note use of ENTER or PF3 to exit with changes saved, and CLEAR to exit with any changes discarded. PF6 is used to highlight (enable) all the api's, and PF7 is used to un-highlight (disable) all the api's.  Individual api's can be toggled between enabled/disabled by moving the cursor to the api name and pressing PF5.

Besides the interactive "KEDF" invocation as above you can also use "KEDF ON" to simply turn on the debugger with current api selection but no source trace, or "KEDF ON/S" to turn in on with current api selection and source trace, or "KEDF OFF" to turn off further debugger interaction.

The KEDF transaction runs KEDFPGM.

KEDF requires a PCT entry pointing to the COBOL program KEDFPGM, which in turn requires a PPT entry for KEDFPGM. It also requires a PPT entry for KEDMAP which defines BMS maps for a 24x80 screen. It also requires a PPT entry for KEDFILTR which is the table of default api trace enable switches that KEDFPGM displays and modifies. It also requires a set of PPT entries for MACC routines it uses to obtain and change KEDF system information; these entries are .

KIKPPT TYPE=ENTRY,PROGRAM=KEDFON,PGMLANG=MACC KEDF ON
KIKPPT TYPE=ENTRY,PROGRAM=KEDFOFF,PGMLANG=MACC KEDF OFF
KIKPPT TYPE=ENTRY,PROGRAM=KEDFSTA,PGMLANG=MACC KEDF STATUS

Other PCT entries may also point to KEDFPGM, especially CEDF, the transid used in CICS systems.

Source for KEDFPGM is in HERC01.KICKSSYS.V1R5M0.COB.Source for KEDMAP is in HERC01.KICKSSYS.V1R5M0.MAPSRC. Source for KEDFILTR is in HERC01.KICKSSYS.V1R5M0.INSTLIB. Source for the subroutines is part of the KICKS source distribution, in HERC01.KICKSTS.JCL member KEDFSUBS.

KEDFILTR

The KEDFILTR table is assembled from source in HERC01.KICKSSYS.V1R5M0.INSTLIB. It is referenced by the online debugger to determine if a given api call should cause a break or not. It is loaded and modified (in memory only) by KEDFPGM.

Each line in the assembler source shows the api's eibfn and a flag value indicating, if zero, that that api call should cause a break, or by a one that the api call should not cause a break. Comments on the line indicate the name of the api call. Note that 9999 is not an api eibfn, rather it is a flag for source trace. Zero marks the end of the list.

Do not rearrange the list; KEDFPGM depends on the existing order...

KSDB

The KSDB transaction reads input generated by the language preprocessors and updates the online source code database used by the debugger to display lines of the source code for a running application. KSDB is intended for batch use only. It is run in the final step of the KIKCB2CS, K2KCOBCS, and KIKGCCCS procs.

The KSDB transaction runs the KSDBLOAD program.

KSDB requires a PCT entry pointing to the COBOL program KSDBLOAD, which in turn requires a PPT entry for KSDBLOAD.  KSDBLOAD is another example of a KICKS program that uses non-CICS api's, in this case batch COBOL i/o used to read the preprocessor input and annotation.

Source for KSDBLOAD is in HERC01.KICKSSYS.V1R5M0.COB.

CRLP

The CRLP transaction is used to control the sequential terminal used when KICKS is run in batch.

An example of use of the CRLP transaction is shown in Using KICKS in Batch.

CRLP requires a PCT entry pointing to the macro level GCC program CRLPPGM, which in turn requires a PPT entry for CRLPPGM.

Source for this program is part of the KICKS source distribution, in HERC01.KICKSTS.ROOT.C member CRLPPGM.

KEBR (aka CEBR)

KEBR is used to browse temporary storage queues and delete them. It is modeled on the CEBR transaction used for the same purpose in CICS. You can also use the KEBR transaction to transfer the contents of a file or transient data queue to temporary storage in order to look at them, and to reestablish the transient data queue when you have finished. The KEBR commands that perform these transfers allow you to add records to a transient data queue and remove all records from a transient data queue. KEBR commands do not edit or delete files.

How to use the KEBR transaction

You start the KEBR transaction by entering the transaction identifier KEBR, followed by the name of the queue you want to browse. For example, to display the temporary storage queue named TSTST, you type:

KEBR TSTST

and press ENTER. KICKS responds with a display of the queue, for example:
 KEBR TS Queue TSTST                                  Line/Item     1 of      7 
 Command ===>                                            Column     1 of    389 
 Transaction Q                                                                  
 Ok                                                                             
       ....|....1....|....2....|....3....|....4....|....5....|....6....|....7.. 
 *** TOP OF QUEUE ******                                                        
 00001 00358491-07-23400015PROM1     000000100000000050000010000000050000000000 
 00002 00358591-07-23400003PROM1               0000000000000000000000000        
 00003 00358691-07-23400007PROM1               0000000000000000000000000        
 00004 00358791-07-23400005PROM1               0000000000000000000000000        
 00005 00358891-07-23400004PROM1               0000000000000000000000000        
 00006 00358991-07-23400016PROM1               0000000000000000000000000        
 00007 00359091-07-23400003PROM1               0000000000000000000000000        
 *** BOTTOM OF QUEUE ******                                                     
                                                                                
                                                                                
       ....|....1....|....2....|....3....|....4....|....5....|....6....|....7.. 
 PF1 : Help          PF2 : HEX/Char     PF3 : Quit          PF4 :               
 PF5 : RFind         PF6 :              PF7 : Back          PF8 : Forward       
 PF9 :               PF10: Left         PF11: Right         PF12: Quit          

If instead you invoke the KEBR transaction and do not supply a queue name the transaction responds by displaying the temporary storage queue whose name consists of the four letters KEBR followed by the four letters of your terminal identifier.

 KEBR TS Queue KEBRU0C0                               Line/Item     0 of      0 
 Command ===>                                            Column     0 of      0 
 Default Q                                                                      
 Can not read that QUEUE                                                        
                                                                                
                                                                                
                                                                                
                                                                                
 PF1 : Help          PF2 : HEX/Char     PF3 : Quit          PF4 :               
 PF5 : RFind         PF6 :              PF7 : Back          PF8 : Forward       
 PF9 :               PF10: Left         PF11: Right         PF12: Quit          

The transaction display consists of a header, a command area, a body (the primary display area), and a menu of functions you can select at this point.

The header

The header shows:

The command area

The command area is where you enter commands that control what is to be displayed and what function is to be performed.

The body

The body is where the command response, queue records, and other indicators are shown.

When a command (other than positioning) is complete the top two lines of the body display the text of the command and the response.

Indicators include "*** TOP OF QUEUE ******" (white), "*** TOP OF QUEUE ******" (white), and rulers (magenta). Rulers can be turned on or off using either the RULER command.

Queue records are prefaced by their 5 digit item number and begin one space thereafter at the item position indicated in the header. If a record is too long for the line, it is truncated. You can change the portion of the record that is displayed, however, so that you can see an entire record on successive screens. If the queue contains more records than will fit on the screen, you can page forward and backward through them, or specify at what record to start the display, so that you can see all the records you want.

The menu of functions

The function keys that you can use are displayed at the bottom of every KEBR screen. The keys have the same meaning on all screens.

PF1 (command HELP) - Displays a help screen that lists all the commands you can use when the KEBR transaction is running. You can return to the main screen by pressing ENTER.

PF2 (command HEX) - Switches the screen from character to hexadecimal format, and back again. In hexadecimal format each item requires 3 lines: The first line is exactly as the character format display. The following two lines are 'vertical' hex of the characters in the first line.

PF3 (command QUIT) - Terminates the KEBR transaction. Same as PF12. Shift-PF3 (PF15) and Shift-PF12 (PF24) also quit.

PF5 (command RFIND) - Repeats the previous FIND command. Shift-PF5 (PF17) changes direction then does the RFIND.

PF7 - Moves the display backward by the number of records that fit on the screen. Shift-PF7 (PF19) moves he display backward to the top.

PF8 - Advances the display by the number of records that fit on the screen, Shift-PF8 (PF20) moves he display forward to the bottom.

PF10 (command LEFT) - Changes the screen to show the columns immediately after (to the right of) the columns currently on display. You can also use the COLUMN command to change the column at which the display begins.

PF11 (command RIGHT) - Changes the screen to show the columns immediately before (to the left of) the columns currently on display. You can also use the COLUMN command to change the column at which the display begins.

PF12 (command QUIT) - Terminates the KEBR transaction. Same as PF3. Shift-PF3 (PF15) and Shift-PF12 (PF24) also quit.

KEBR 'cursor' scrolling

KEBR scrolls by full screens, but like ISPF it is possible to make any item the top or bottom line on the screen by placing the cursor on that item before pressing PF7 or PF8 (respectively). In a similar manner it is possible to modify the LEFT and RIGHT scrolls by placing the cursor on the desired first or last column of an item before pressing PF10 or PF11 (respectively).

KEBR commands

BOTTOM (Abbreviation: BOT) Shows the last records in the temporary storage queue (as many as fill up the body of the screen, with the last record on the last line).

COLUMN nnnn  (Abbreviation: COL nnnn) Displays the records starting at character position (column) nnnn of each record. The default starting position, assumed when you initiate the KEBR transaction, is the first character in the record.

FIND [FWD/BWD] string (Abbreviation: F string) Finds the next (or previous) occurrence of the specified string. FWD is optional, being assumed if unspecified. The search starts one character after (or before) the top left item/column displayed. If the string is found, the body is scrolled to that line and column, thus making the sought string the new top left. If the string is not found the body is not scrolled, and a "NOT FOUND" message is shown. The value that you specify can be in character format (for example, find  ABCD) or in hexadecimal format (for example, find x'F0F1F2'). In a character search delimiters of your choice may optionally be used; ie, if the first and last characters of the string are the same they are assumed to be delimiters. A hexadecimal search is conducted using an even number of hex digits, so if you specify an odd number of digits a leading zero is assumed.

HELP Displays a brief summary of the KEBR commands

LEFT Changes the screen to show the columns immediately after (to the right of) the columns currently on display. You can also use the COLUMN command to change the column at which the display begins.

LINE nnnn Starts the body of the screen at the queue record nnnn, and sets the current line to nnnn.

PURGE Deletes the queue being browsed.

PUT xxxx Copies the temporary storage queue that is being browsed to the named transient data queue. xxxx must be either the name of an intrapartition transient data queue, or the name of an extrapartition transient data queue that has been opened for output. The special queue name SYSOUT is recognized making PUT SYSOUT an alias for PRINT.

PRINT [CLASS x LPP nn FIRST nnnn ITEMS nnnn] Prints a report of the current queue, either as lines of printable characters, or as vertical hex depending on the current screen display. Rulers or not, also as per the current display. Output class, lines per page, starting item number and number of items can be specified with optional arguments in any order. The defaults are CLASS A LPP 60 FIRST 1 ITEMS 50.

QUEUE xxxxxxxx (Abbreviation: Q xxxxxxxx) Changes the name of the queue you are browsing. The value that you specify can be in character format (for example, QUEUE ABCD) or in hexadecimal format (for example, QUEUE X'C1C2C3C4'). The KEBR transaction responds by displaying the data that is in the named queue. You can also change the queue name by overtyping the current value in the header.

=X
CANCEL
END
QUIT the command (and several aliases) used to quit the KEBR transaction. The screen will clear and the message "Browse ended normally. Ready for next transaction:" is shown.

REFRESH (same as just pressing ENTER) The queue is re-read and displayed at the current item and offset (if possible).

RFIND {FWD/BWD] repeats the previous find, changing direction as necessary if FWD or BWD is specified. If neither is specified the repeated find is in the direction of the last FIND or RFIND.

RIGHT Changes the screen to show the columns immediately after (to the left of) the columns currently on display. You can also use the COLUMN command to change the column at which the display begins.

RULER Toggles on/off the display of rulers and the top and bottom of the body to make it easier to determine data location.

TERM [xxxx] Changes the name of the queue you are browsing, but is tailored to applications that use the convention of naming temporary storage queues that are associated with a terminal by a constant in the first four characters and the terminal name in the last four. The new queue name is formed from the first four characters of the current queue name, followed by xxxx. If xxxx is not specified the current terminal id is used.

TOP Causes the KEBR transaction to start the display at the first record in the queue.

VGET xxxxxxxx [FIRST nnnn RECS nnnn] Transfers records of the named file to the end of the temporary storage queue currently on display. This enables you to browse the contents of the file. xxxxxxxx must be the name of a vsam file (ksds, esds, rrds, or path) defined in the FCT. The optional arguments FIRST and RECS specify the first record and the number of records to read. Either or both may be specified in any order following the file name. The defaults are FIRST 1 RECS 100.

Using the KEBR transaction with transient data

The GET command reads each record in the transient data queue that you specify and writes it at the end of the temporary storage queue you are browsing, until the transient data queue is empty. You can then view the records that were in the transient data queue. When you have finished your inspection, you can copy the temporary storage queue back to the transient data queue (using the PUT command). This usually leaves the transient data queue as you found it, but not always. Here are some points you need to be aware of when using the GET and PUT commands:

The GET and PUT commands do not need to be used as a pair. You can add to a transient data queue from a temporary storage queue with a PUT command at any time. If you are debugging code that reads a transient data queue, you can create a queue in temporary storage (with the KEBR GET command, or by program) and then refresh the transient data queue as many times as you like from temporary storage. Similarly, you can empty a transient data queue by using a GET command without a corresponding PUT command.

More KEBR details

KEBR requires a PCT entry pointing to the COBOL program KEBRPGM, which in turn requires a PPT entry for KEBRPGM. PPT entries for KEBRM (the map) and KEBRHELP (the loaded help file) are also required.

Other PCT entries such as CEBR may also point to KEBRPGM.

Source for KEBRPGM and KEBRHELP is in HERC01.KICKSSYS.V1R5M0.COB. Source for KEBRM is in HERC01.KICKSSYS.V1R5M0.MAPSRC as member KEBRMAP.

KLOGIT

The KLOGIT program allows you to easily put a message onto the KICKS log (destination 'LOG ') with your message automatically prefaced by the date, time, user id, terminal id, and transaction id.

See for example any of the TESTFILE suite programs that use this to report unexpected returns.

KLOGIT requires a PPT entry for KLOGIT. Source for KLOGIT is in HERC01.KICKSSYS.V1R5M0.GCC.

LASTCC

The LASTCC programs allow you to set and retrieve the last and highest return codes in a current KICKS run. KICKS maintains the MAXCC as the highest set value of LASTCC or MAXCC. When KICKS ends it reports the then current value of MAXCC as the return code.

KLASTCCG (get) returns the lastcc as a S9(8) comp item.

KLASTCCP (put) sets the lastcc from a S9(8) comp item.

KMAXCCG (get) returns the maxcc as a S9(8) comp item.

KMAXCCP (put) sets the maxcc from a S9(8) comp item.

Most KICKS applications do not use these routines, and neither normal nor abend transaction ending sets  LASTCC/MAXCC, so KICKS normally shuts down with a return code of zero. If you want to change that you can use these programs to set LAST or MAX CC. See for example the KSDBLOAD program...

The required PPT entries are part of the KSMT group. Source for these programs is part of the KICKS source distribution, in HERC01.KICKSTS.JCL member LASTCC.

SYNCXIT

The SYNCXIT program is a sample syncpoint exit, coded as a command level COBOL program. The sample simply LINK's to KLOGIT to report each type of entry (transaction start, transaction end, transaction abend, syncpoint commit, syncpoint rollback) as it is made.

SYNCXIT requires a PPT entry for SYNCXIT . Source for SYNCXIT is in HERC01.KICKSSYS.V1R5M0.COB.

DSNHDECP

The DSNHDECP program is not included with KICKS, but a PPT for it (as a assembler table) is. This PPT entry causes KICKS to try to load DSNHDECP into memory on startup. KICKS never calls or uses this module, but if any of your applications use DB2 then the in memory copy of DSNHDECP will specify the DB2 subsystem to be used.

Copy member DSNHDECP from an 'appropriate' (meaning the one for the DB2 subsystem you intend to use) SDSNEXIT library to your KIKRPL library. Your application will use a CAF 'implicit' connection to DB2, and CAF will obtain the id of the DB2 subsystem to connect to by looking in the DSNHDECP member.


Copyright © Mike Noel, 2008-2014; last updated 11/5/2014