COBOL Module 14 – CICS online programs (concepts with local business-logic tests)
CICS commands, BMS maps and error handling
Read the EXEC CICS commands and BMS maps of an update transaction, test every outcome with RESP, and prove its error paths with stubs under GnuCOBOL.
What you will learn
- Read EXEC CICS SEND MAP, RECEIVE MAP, READ, REWRITE, LINK and XCTL commands and say what each returns
- Handle every command's outcome with RESP and RESP2 instead of HANDLE CONDITION
- Test the error paths of a CICS program without CICS by putting each command in a paragraph a stub can replace
- Explain units of work, SYNCPOINT and abend handling in a CICS update
- Describe how a CICS program and its BMS maps are translated, built and defined
Before you start
What you’ll learn · Before you start
What you will learn
- Read EXEC CICS SEND MAP, RECEIVE MAP, READ, REWRITE, LINK and XCTL commands and say what each returns
- Handle every command's outcome with RESP and RESP2 instead of HANDLE CONDITION
- Test the error paths of a CICS program without CICS by putting each command in a paragraph a stub can replace
- Explain units of work, SYNCPOINT and abend handling in a CICS update
- Describe how a CICS program and its BMS maps are translated, built and defined
Before you start
On this page
A READ of the account file can end NORMAL or with one of 16 conditions, such as NOTFND, NOTOPEN and IOERR, and for 15 of them IBM’s default is to end the task abnormally. A program that changes one customer’s record issues five commands in a task, so most of what it decides is what to do when a command does not end normally.
This lesson reads the CICS commands of AUPD, a transaction that changes a customer’s mobile number, and the BMS maps behind its screen. Its error handling then runs on this computer: each command sits in a paragraph of its own, and a test build swaps those paragraphs for stubs that answer as CICS would.
Six CICS commands do most of an online program’s work
Task 2 of AUPD uses four of the commands below; the other two move control between programs. Each command names its resources in parentheses and ends in NORMAL or a condition:
| Command | What it does | A condition to plan for |
|---|---|---|
| RECEIVE MAP | maps the terminal’s input into the input map | MAPFAIL: nothing to map |
| SEND MAP | writes the output map to the screen | INVREQ: an option misused |
| READ with UPDATE | reads a record and holds it for a change | NOTFND: no record with this key |
| REWRITE | replaces the held record | DUPREC: a unique key exists; INVREQ: nothing held |
| LINK | runs a program one logical level down | PGMIDERR: no such program |
| XCTL | passes control at the same level, for good | PGMIDERR |
IBM’s reference says a REWRITE must always follow a READ with UPDATE. LINK and XCTL differ in one thing: when the program that LINK called ends, control returns to the statement after the LINK, while XCTL releases the program that issued it, so control never comes back. Step through one successful change:
The drawing shows the whole scene; its 6 steps are listed below.
Every step as text
- The teller presses Enter. The teller has typed 5550002000 as the new mobile number of AC00000042 and pressed Enter. CICS starts task 2 of AUPD with the COMMAREA of task 1, the account and version 7.
- RECEIVE MAP. RECEIVE MAP moves the typed number from the terminal's input into the input map, AUPDMAPI. RESP is 0, NORMAL, so NEWMOBI holds the ten digits.
- READ with UPDATE. READ FILE('ACCOUNTS') with UPDATE reads the record of AC00000042 and holds it, so no other task can change it until this unit of work ends.
- The version matches. The record still has version 7, the version task 1 showed the teller, so nobody changed it in between. AUPD moves in the new number and adds 1 to the version.
- REWRITE. REWRITE replaces the held record. RESP 0 means no other account has 5550002000, which the file's unique index on the mobile number would have refused with DUPREC.
- SEND MAP and RETURN. AUPD sends "Mobile number changed" with SEND MAP and ends its task with RETURN TRANSID('AUPD'). The end of the task commits the change and releases the record.
Beyond the scene’s commands, four more names matter:
- SYNCPOINT commits a task’s changes so far; SYNCPOINT ROLLBACK backs them out.
- ABEND ends a task abnormally; HANDLE ABEND names an exit for that case.
- The CICS translator turns each EXEC CICS command into a CALL at compile time.
- CEMT SET PROGRAM NEWCOPY or PHASEIN loads a rebuilt program.
Checkpoint
Check: The commands of an online program
BMS maps describe the screen, and the program fills their fields
The screen of AUPD is defined once, as BMS map: A screen layout for CICS basic mapping support, defined with the DFHMDI and DFHMDF macros inside a map set. BMS uses it to build a 3270 screen from a program's data and to move the input back into named fields.: a map set: The unit in which BMS maps are defined and assembled, with the DFHMSD macro. Assembled twice, it gives a physical map, kept in the CICS load library for BMS, and a symbolic map that programs copy. (DFHMSD) holds maps (DFHMDI), and each map lists its fields (DFHMDF) with a position, a length and attributes such as protected or numeric. Assembled twice, the source gives a physical map that BMS uses to build the screen and a symbolic map: The COBOL data definition made from a map set, which a CICS program copies. For each named field it holds a length, suffix L, an attribute, suffix A, and the data, inside an input map ending in I and an output map ending in O. that the program copies:
* Concept listing, not assembled here: map set UPDSET with the
* screen of transaction AUPD. Assembled twice, with SYSPARM=MAP
* for the physical map and SYSPARM=DSECT for the symbolic map.
UPDSET DFHMSD TYPE=&SYSPARM,MODE=INOUT,LANG=COBOL2, X
STORAGE=AUTO,TIOAPFX=YES,CTRL=(FREEKB,FRSET)
AUPDMAP DFHMDI SIZE=(24,80),LINE=1,COLUMN=1
DFHMDF POS=(1,1),LENGTH=30,ATTRB=(ASKIP,BRT), X
INITIAL='AUPD Change the mobile number'
DFHMDF POS=(3,1),LENGTH=8,ATTRB=ASKIP,INITIAL='Account:'
ACCT DFHMDF POS=(3,10),LENGTH=10,ATTRB=ASKIP
DFHMDF POS=(4,1),LENGTH=8,ATTRB=ASKIP,INITIAL='Current:'
OLDMOB DFHMDF POS=(4,10),LENGTH=10,ATTRB=ASKIP
DFHMDF POS=(6,1),LENGTH=11,ATTRB=ASKIP,INITIAL='New mobile:'
NEWMOB DFHMDF POS=(6,13),LENGTH=10,ATTRB=(UNPROT,NUM,IC)
DFHMDF POS=(6,24),LENGTH=1,ATTRB=ASKIP
MSG DFHMDF POS=(22,1),LENGTH=40,ATTRB=(ASKIP,BRT)
DFHMDF POS=(24,1),LENGTH=24,ATTRB=ASKIP, X
INITIAL='Enter: change PF3: end'
DFHMSD TYPE=FINAL
END In the symbolic map each named field becomes four names, shown here for NEWMOB:
| Name in the symbolic map | What it holds |
|---|---|
| NEWMOBL | how many characters the teller typed, 0 for none |
| NEWMOBA | the attribute byte, changed to show the field differently |
| NEWMOBI | the typed text, in the input map AUPDMAPI |
| NEWMOBO | the text to send, in the output map AUPDMAPO |
RECEIVE MAP moves the terminal’s input into the input map. When the teller presses CLEAR or a PA key, or Enter without typing, there is nothing to map: the command returns MAPFAIL, which ends the task unless the program handles it.
Checkpoint
Check: BMS maps, symbolic and physical
RESP returns every outcome to the program, and a stub can return any of them
Without RESP, a condition goes to CICS’s default handling. The older HANDLE CONDITION: An older CICS command that sends named conditions, such as NOTFND, to labels for the rest of the program, until a later HANDLE CONDITION or IGNORE CONDITION changes it or a command codes RESP or NOHANDLE. command sends a condition to a label, and IBM’s reference says it applies to the whole program, so a NOTFND of any later command lands on the same label. The RESP option: An option of an EXEC CICS command that returns the command's outcome in a fullword binary field instead of letting CICS handle a condition. The program compares it with values such as DFHRESP(NORMAL) and must handle every outcome itself. instead puts the outcome in a fullword binary field, which the program compares with DFHRESP(NORMAL) or DFHRESP(NOTFND) on the next line; RESP2 says why, 80 for NOTFND on a READ. IBM states the price: with RESP the program must cope with whatever condition arises.
That makes error handling code like any other, and code can be tested. AUPD keeps every CICS command in a paragraph of the copybook AUPDIO. A CICS build copies cics/AUPDIO.cpy; a test build copies stubs/AUPDIO.cpy, whose stub: A stand-in, written for tests, for a part that a program calls. It answers as the real part would, for example a paragraph that returns the RESP and RESP2 values of a CICS command on a computer without CICS. call FAKECICS, a program that answers each command with the RESP and RESP2 values of IBM’s reference and prints them. The first case is an account number that is not on file:
IDENTIFICATION DIVISION.
PROGRAM-ID. AUPD.
* The second task of transaction AUPD: change the registered
* mobile number of an account. Task 1 read the account, showed
* its number and passed the account and its version in the
* COMMAREA. Every command that needs CICS is in a paragraph of
* AUPDIO, copied at the end: cics/AUPDIO.cpy in a CICS build,
* stubs/AUPDIO.cpy in a test build without CICS.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-COMMAREA.
05 CA-ACCOUNT PIC X(10).
05 CA-VERSION PIC 9(8).
01 WS-NEW-MOBILE PIC X(10).
01 WS-MESSAGE PIC X(40).
01 WS-RESP PIC S9(8) COMP.
01 WS-RESP2 PIC S9(8) COMP.
01 SHOWN-RESP PIC Z(7)9.
01 SHOWN-RESP2 PIC Z(7)9.
01 WS-OUTCOME PIC X.
88 OUTCOME-NORMAL VALUE "N".
88 OUTCOME-NOT-FOUND VALUE "F".
88 OUTCOME-DUPLICATE VALUE "D".
88 OUTCOME-FAILED VALUE "X".
COPY ACCTREC.
COPY AUPDWS.
LINKAGE SECTION.
* The COMMAREA that task 1 passed, 18 bytes: the CICS
* paragraphs read it only when EIBCALEN is not 0.
01 DFHCOMMAREA PIC X(18).
PROCEDURE DIVISION.
MAIN-PARA.
PERFORM GET-INPUT
EVALUATE TRUE
WHEN NOT OUTCOME-NORMAL
MOVE "Start again with AUPD" TO WS-MESSAGE
WHEN WS-NEW-MOBILE IS NOT NUMERIC
MOVE "Type 10 digits" TO WS-MESSAGE
WHEN OTHER
PERFORM CHANGE-MOBILE
END-EVALUATE
PERFORM SEND-REPLY
GOBACK.
CHANGE-MOBILE.
PERFORM READ-FOR-UPDATE
EVALUATE TRUE
WHEN OUTCOME-NOT-FOUND
MOVE "No account with this number" TO WS-MESSAGE
WHEN NOT OUTCOME-NORMAL
PERFORM REPORT-FAILURE
WHEN ACCT-VERSION NOT = CA-VERSION
PERFORM UNLOCK-ACCOUNT
MOVE "Changed by someone else: check again"
TO WS-MESSAGE
WHEN OTHER
MOVE WS-NEW-MOBILE TO ACCT-MOBILE
ADD 1 TO ACCT-VERSION
PERFORM REWRITE-ACCOUNT
EVALUATE TRUE
WHEN OUTCOME-NORMAL
MOVE "Mobile number changed" TO WS-MESSAGE
WHEN OUTCOME-DUPLICATE
MOVE "Number belongs to another account"
TO WS-MESSAGE
WHEN OTHER
PERFORM REPORT-FAILURE
END-EVALUATE
END-EVALUATE.
REPORT-FAILURE.
MOVE WS-RESP TO SHOWN-RESP
MOVE WS-RESP2 TO SHOWN-RESP2
MOVE SPACES TO WS-MESSAGE
STRING "Not changed: RESP " DELIMITED BY SIZE
FUNCTION TRIM(SHOWN-RESP) DELIMITED BY SIZE
", RESP2 " DELIMITED BY SIZE
FUNCTION TRIM(SHOWN-RESP2) DELIMITED BY SIZE
INTO WS-MESSAGE
END-STRING.
COPY AUPDIO. * Concept listing, not run: the paragraphs of AUPD that use
* CICS, for a build with the CICS translator. Every command
* codes RESP and RESP2, so CICS returns its outcome instead
* of ending the task, and NAME-THE-OUTCOME names it.
GET-INPUT.
IF EIBCALEN = 0
SET OUTCOME-FAILED TO TRUE
ELSE
MOVE DFHCOMMAREA TO WS-COMMAREA
EXEC CICS RECEIVE MAP('AUPDMAP') MAPSET('UPDSET')
INTO(AUPDMAPI) RESP(WS-RESP) RESP2(WS-RESP2)
END-EXEC
PERFORM NAME-THE-OUTCOME
MOVE NEWMOBI TO WS-NEW-MOBILE
END-IF.
READ-FOR-UPDATE.
EXEC CICS READ FILE('ACCOUNTS') INTO(ACCT-RECORD)
RIDFLD(CA-ACCOUNT) UPDATE
RESP(WS-RESP) RESP2(WS-RESP2)
END-EXEC
PERFORM NAME-THE-OUTCOME.
REWRITE-ACCOUNT.
EXEC CICS REWRITE FILE('ACCOUNTS') FROM(ACCT-RECORD)
RESP(WS-RESP) RESP2(WS-RESP2)
END-EXEC
PERFORM NAME-THE-OUTCOME.
UNLOCK-ACCOUNT.
EXEC CICS UNLOCK FILE('ACCOUNTS')
RESP(WS-RESP) RESP2(WS-RESP2)
END-EXEC
PERFORM NAME-THE-OUTCOME.
SEND-REPLY.
MOVE WS-MESSAGE TO MSGO
EXEC CICS SEND MAP('AUPDMAP') MAPSET('UPDSET')
FROM(AUPDMAPO) DATAONLY
END-EXEC
EXEC CICS RETURN TRANSID('AUPD')
COMMAREA(WS-COMMAREA)
END-EXEC.
NAME-THE-OUTCOME.
EVALUATE WS-RESP
WHEN DFHRESP(NORMAL)
SET OUTCOME-NORMAL TO TRUE
WHEN DFHRESP(NOTFND)
SET OUTCOME-NOT-FOUND TO TRUE
WHEN DFHRESP(DUPREC)
SET OUTCOME-DUPLICATE TO TRUE
WHEN OTHER
SET OUTCOME-FAILED TO TRUE
END-EVALUATE. * The same paragraphs for a build without CICS: each calls
* FAKECICS, which answers as the command would, with the RESP
* and RESP2 values of IBM's documentation, and NAME-THE-OUTCOME
* names them as the CICS build does: 0 NORMAL, 13 NOTFND,
* 14 DUPREC, anything else a failure.
GET-INPUT.
MOVE "INPUT" TO FK-OP
CALL "FAKECICS" USING FAKE-PARM
MOVE FK-COMMAREA TO WS-COMMAREA
MOVE FK-TYPED TO WS-NEW-MOBILE
PERFORM NAME-THE-OUTCOME.
READ-FOR-UPDATE.
MOVE "READUPD" TO FK-OP
MOVE CA-ACCOUNT TO FK-ACCOUNT
CALL "FAKECICS" USING FAKE-PARM
IF FK-RESP = 0
MOVE FK-RECORD TO ACCT-RECORD
END-IF
PERFORM NAME-THE-OUTCOME.
REWRITE-ACCOUNT.
MOVE "REWRITE" TO FK-OP
MOVE ACCT-RECORD TO FK-RECORD
CALL "FAKECICS" USING FAKE-PARM
PERFORM NAME-THE-OUTCOME.
UNLOCK-ACCOUNT.
MOVE "UNLOCK" TO FK-OP
CALL "FAKECICS" USING FAKE-PARM
PERFORM NAME-THE-OUTCOME.
SEND-REPLY.
MOVE "REPLY" TO FK-OP
MOVE WS-MESSAGE TO FK-MESSAGE
CALL "FAKECICS" USING FAKE-PARM.
NAME-THE-OUTCOME.
MOVE FK-RESP TO WS-RESP
MOVE FK-RESP2 TO WS-RESP2
EVALUATE WS-RESP
WHEN 0
SET OUTCOME-NORMAL TO TRUE
WHEN 13
SET OUTCOME-NOT-FOUND TO TRUE
WHEN 14
SET OUTCOME-DUPLICATE TO TRUE
WHEN OTHER
SET OUTCOME-FAILED TO TRUE
END-EVALUATE. from session import files, run
# AUPD built with the stub paragraphs of stubs/ instead of CICS, and its test driver run on one case: an account
# number that is not on file. FAKECICS prints each command it answers.
files("AUPD.cob", "ACCTREC.cpy", "FAKECICS.cob", "FAKEPARM.cpy", "AUPDTEST.cob", "aupd-case-1.txt",
"stubs/AUPDIO.cpy", "stubs/AUPDWS.cpy")
run("""
cobc -x -Wall -I stubs AUPDTEST.cob AUPD.cob FAKECICS.cob && DD_AUPDCASES=aupd-case-1.txt ./AUPDTEST
""") Output
$ cobc -x -Wall -I stubs AUPDTEST.cob AUPD.cob FAKECICS.cob && DD_AUPDCASES=aupd-case-1.txt ./AUPDTEST case 01: AC00009999 version 00000001, typed 5550002000 READ UPDATE AC00009999: RESP 13, RESP2 80 SEND MAP: No account with this number pass ALL 01 TESTS PASSED
Recorded with Python 3.14.8 on macOS 26 arm64. To run it yourself: mise exec python@3.14.8 -- python3 notfound_session.py
FAKECICS answered the READ with RESP 13 and RESP2 80, NOTFND, and AUPD sent “No account with this number” without a REWRITE: an error path of a CICS program ran on a laptop in seconds.
Checkpoint
Check: RESP, HANDLE CONDITION and stubs
Practise: commands, maps and responses
The questions cover the three sections above; each wrong choice names its slip.
Practice that adapts to you
Practise this lesson
9 questions about 6 ideas of this lesson. Each answer is explained at once, and what you get right is kept in this browser.
Every error path of AUPD proved with stubs, and the slip that hid a failure Pro: opens with a Pro, Premium or Ultimate pass
AUPD can end in five ways, and only one of them changes the file. This part runs all five against the stubs, reproduces a version that reported a change it never made, and has you write a fake REWRITE that answers as CICS does.
In this part:
- Five cases, five outcomes, recorded
- A program that never tested RESP, reproduced on the stubs
- Write a fake REWRITE that a slip cannot pass
- Write a fake REWRITE that answers as CICS does
- Results of the sample tests
1 diagram · 5 runnable examples (COB, Python, Text) · 1 exercise with sample tests · about 7 minutes
Opening this part with your pass…
This part opens with any MySmartCoPilot pass.
- Pro pass · 1 week₹79$2.99
- 30 days₹179$5.99
- 1 year₹1,699$45
One payment; a pass never renews. The price shown is the total you pay: no fees or charges are added at checkout.
Passes can’t be bought right now, so this part can’t be opened at the moment. The free part above stands on its own. If you have a pass, enter your licence key.
It also opens every other in-depth part in Learn and every Pro tool. Sales are final, except where the law gives you a right to withdraw, for example in the EU and the UK (refund policy).
Units of work, SYNCPOINT and abends: what CICS backs out, with the totals Pro: opens with a Pro, Premium or Ultimate pass
A change that touches two records must be all or nothing. This part follows a transfer of 500.00 through five endings in a model of CICS’s rules, and shows the two designs that lose the money.
In this part:
- What a unit of work commits, and when
- Five endings of one transfer, with the totals
- HANDLE ABEND and ABEND: ending a task on purpose
1 diagram · 1 runnable example (Python) · about 5 minutes
Opening this part with your pass…Pro part. It opens with the same pass as the part above.
From source to a running transaction: translator, map set and definitions Pro: opens with a Pro, Premium or Ultimate pass
None of the EXEC CICS lines is COBOL. This part follows AUPD from its source to a running transaction: the translator, the two assemblies of its map set, the bind, and the definitions CICS needs before the first teller presses Enter.
In this part:
- The integrated translator turns EXEC CICS into CALLs
- Two assemblies of one map set
- Defining and refreshing the resources
1 diagram · about 5 minutes
Opening this part with your pass…Pro part. It opens with the same pass as the part above.
Interview questions
A warm-up, then three questions about update programs that went wrong:
-
Fresher to mid · Warm-up
In CICS, when do you use LINK, and when XCTL?
Both run another program in the same task and can pass it a COMMAREA or a channel; they differ in where control goes afterwards. LINK runs the program one logical level below the caller, and when it issues RETURN, control comes back to the statement after the LINK, so the caller can use the results. XCTL runs the program at the same logical level and releases the program that issued it, so control never comes back; a RETURN from the new program goes to the level above. Use LINK for a service the caller needs an answer from, such as the business logic behind a screen, and XCTL to hand over for good, such as a menu passing control to the function the user chose. A program that cannot be found gives PGMIDERR with either command.
-
Mid to senior
An old update program issues HANDLE CONDITION NOTFND(NO-ACCOUNT) at its start. After a change adds a READ of a branch file, a missing branch record shows tellers "No account with this number". Explain why, and how you move the program to RESP without changing what already works.
-
Mid to senior
Tellers see "Mobile number changed", yet some numbers were never changed on the file. Every command in the program codes RESP. What is the likely cause, how do you prove it without a CICS region, and what stops it coming back?
-
Senior to staff
A transfer program debits one account and credits another. After abends, an audit finds debits without credits. Where can a transfer be split, what does CICS back out and what not, and how do you design the program so that a half-done transfer is never committed?
Organisations named on this page
MySmartCoPilot has no connection with IBM. The commands, conditions and values here are from IBM’s documentation of CICS TS 6.x and Enterprise COBOL 6.5; the test builds ran under GnuCOBOL 3.2.
Flashcards · 8 cards
Recall it, then check
Say the answer to yourself before you look: recalling it is what makes it stick.
-
What must come before a CICS REWRITE?
A READ with UPDATE of the record, which holds it for the change. A REWRITE with nothing held ends with INVREQ.
-
How do the CICS commands LINK and XCTL differ?
LINK runs a program one logical level down, and control returns to the statement after the LINK. XCTL passes control at the same level for good and releases the program that issued it.
-
What does RECEIVE MAP return when the user presses CLEAR, or Enter without typing?
MAPFAIL: there is nothing to map. It ends the task unless the program handles it.
-
What is a BMS map set made of, and what does assembling it give?
DFHMSD for the map set, DFHMDI for each map and DFHMDF for each field, with its position, length and attributes. Assembled twice, it gives a physical map for BMS and a symbolic map the program copies.
-
Which four names does the symbolic map give a field such as NEWMOB?
NEWMOBL, how many characters were typed; NEWMOBA, the attribute byte; NEWMOBI, the typed text in the input map; NEWMOBO, the text to send in the output map.
-
How does RESP differ from HANDLE CONDITION?
HANDLE CONDITION sends a condition to one label for the whole program, so any later NOTFND lands there. RESP puts each command's outcome in a fullword binary field that the next line tests, and RESP2 says why.
-
How can a CICS program's error paths be tested on a laptop?
Keep each CICS command in a paragraph of a copybook, and build a test version whose stub paragraphs answer with IBM's RESP and RESP2 values, such as 13 and 80 for NOTFND on a READ.
-
What do SYNCPOINT, ABEND and CEMT SET PROGRAM NEWCOPY do?
SYNCPOINT commits a task's changes so far, and SYNCPOINT ROLLBACK backs them out. ABEND ends a task abnormally. NEWCOPY, or PHASEIN, loads a rebuilt program.
Key takeaways
- CICS commands name their resources and end in NORMAL or a condition; a REWRITE needs a READ with UPDATE, and LINK returns to its caller, XCTL never.
- BMS maps define a screen once, as a physical map for BMS and a symbolic map the program copies, and RECEIVE MAP returns MAPFAIL when there is nothing to map.
- RESP hands every outcome to the program, which must test it, and a command in a paragraph of its own can be swapped for a stub that answers as CICS does.
Terms in this lesson
- BMS map
- A screen layout for CICS basic mapping support, defined with the DFHMDI and DFHMDF macros inside a map set. BMS uses it to build a 3270 screen from a program's data and to move the input back into named fields.
- HANDLE CONDITION
- An older CICS command that sends named conditions, such as NOTFND, to labels for the rest of the program, until a later HANDLE CONDITION or IGNORE CONDITION changes it or a command codes RESP or NOHANDLE.
- map set
- The unit in which BMS maps are defined and assembled, with the DFHMSD macro. Assembled twice, it gives a physical map, kept in the CICS load library for BMS, and a symbolic map that programs copy.
- RESP option
- An option of an EXEC CICS command that returns the command's outcome in a fullword binary field instead of letting CICS handle a condition. The program compares it with values such as DFHRESP(NORMAL) and must handle every outcome itself.
- stub
- A stand-in, written for tests, for a part that a program calls. It answers as the real part would, for example a paragraph that returns the RESP and RESP2 values of a CICS command on a computer without CICS.
- symbolic map
- The COBOL data definition made from a map set, which a CICS program copies. For each named field it holds a length, suffix L, an attribute, suffix A, and the data, inside an input map ending in I and an output map ending in O.
References
- CICS TS 6.x: SEND MAP command (IBM)
- CICS TS 6.x: RECEIVE MAP command (IBM)
- CICS TS 6.x: READ command (IBM)
- CICS TS 6.x: REWRITE command (IBM)
- CICS TS 6.x: UNLOCK command (IBM)
- CICS TS 6.x: LINK command (IBM)
- CICS TS 6.x: XCTL command (IBM)
- CICS TS 6.x: Using the HANDLE CONDITION command (IBM)
- CICS TS 6.x: Handling exception conditions by inline code (IBM)
- CICS TS 6.x: An example of exception handling in COBOL (IBM)
- CICS TS 6.x: Response codes of EXEC CICS commands (IBM)
- CICS TS 6.x: BMS macro DFHMSD (IBM)
- CICS TS 6.x: Creating the BMS map (IBM)
- CICS TS 6.x: Defining map fields by using DFHMDF (IBM)
- CICS TS 6.x: Processing the mapped input (IBM)
- CICS TS 6.x: Types of map sets (IBM)
- CICS TS 6.x: How CICS runs transactions, tasks, and programs (IBM)
- CICS TS 6.x: SYNCPOINT command (IBM)
- CICS TS 6.x: Recovery design (IBM)
- CICS TS 6.x: Dividing transactions into units of work (IBM)
- CICS TS 6.x: HANDLE ABEND command (IBM)
- CICS TS 6.x: ABEND command (IBM)
- CICS TS 6.x: The integrated CICS translator (IBM)
- CICS TS 6.x: The translation process (IBM)
- Enterprise COBOL for z/OS 6.5: CICS compiler option (IBM)
- CICS TS 6.x: Defining programs, map sets, and partition sets to CICS (IBM)
- CICS TS 6.x: CEMT SET PROGRAM (IBM)
- GnuCOBOL (GnuCOBOL project (GNU))
Report a problem with this lesson
Kept only in this browser. Your Learn progress