---
title: "CICS Sample Program, Explains How to use Link Command"
description: "How to LINK command in CICS to call sub-programs from main program."
url: https://srinimf.com/2016/04/06/cics-sample-program-for-link/
date: 2016-04-06
modified: 2026-10-10
author: "Srini"
image: https://i0.wp.com/srinimf.com/wp-content/uploads/2018/06/pexels-photo-773371-e1528634427263.jpeg?fit=1671%2C1253&ssl=1
categories: ["CICS Tips"]
tags: ["CICS LINK Sample Program", "CICS tips and Tricks"]
type: post
lang: en
---

# CICS Sample Program, Explains How to use Link Command

Two [sample program](https://srinimf.com/2016/04/06/cics-sample-code-for-header-and-footer/)s given below. Those are main program and sub-program.

Advertisements

## Link Command

1. Main program with Link command to call sub-program
2. Logic in Sub-program
3. How to add logic for function keys
4. Add a program to MAP in CICS
5. The logic for MAP definition

### **1# Main Program**

```
ID DIVISION.
 PROGRAM-ID. HAS.
 DATA DIVISION.
 WORKING-STORAGE SECTION.
 77 TID PIC X(4).
 77 MSG PIC X(50) VALUE 'IMPORTANT OF LINK PROGRAM'.
 77 A PIC X(35) VALUE 'THIS IS MAIN PROGRAM'.
 77 B PIC X(35) VALUE 'NOW CONTROL MOVE TO SUB'.
 77 C PIC X(40) VALUE 'THANK U BYE'.
 PROCEDURE DIVISION.
 EXEC CICS RECEIVE INTO (TID)
 LENGTH(LENGTH OF TID)
 END-EXEC.
 EXEC CICS SEND
 FROM(MSG)
 END-EXEC.
 EXEC CICS RECEIVE END-EXEC.
 EXEC CICS SEND
 FROM(A)
 ERASE
 END-EXEC.
 EXEC CICS RECEIVE END-EXEC.
 EXEC CICS SEND FROM(B) END-EXEC.
 EXEC CICS RECEIVE END-EXEC.
```

```
EXEC CICS LINK
PROGRAM('SUB')
END-EXEC.
EXEC CICS SEND FROM(C) ERASE END-EXEC.
EXEC CICS RECEIVE END-EXEC.
EXEC CICS RETURN END-EXEC.
```

The logic for [Sub program](https://srinimf.com/2013/05/07/3-rules-calling-sub-programs-from-cics/) when you use LINK in main program.

### #**2 Sub Program for LINK**

```
ID DIVISION.
 PROGRAM-ID. SEN.
 DATA DIVISION.
 WORKING-STORAGE SECTION.
 77 D PIC X(35) VALUE 'THIS IS SUB PROGRAM'.
 77 E PIC X(50) VALUE 'NOW CONTROL TO MAIN'.
 PROCEDURE DIVISION.
 EXEC CICS SEND FROM(D) END-EXEC.
 EXEC CICS RECEIVE END-EXEC.
 EXEC CICS SEND FROM(E) END-EXEC.
 EXEC CICS RECEIVE END-EXEC.
 EXEC CICS RETURN END-EXEC.
```

### **#3 CICS Function Key(EIBAID)**

```
ID DIVISION.
 PROGRAM-ID. AD12GM.
 DATA DIVISION.
 WORKING-STORAGE SECTION.
 COPY ADD001.
 01 RES.
 02 A PIC 9(3).
 02 B PIC 9(3).
 02 C PIC 9(4).
 77 Z PIC X(80).
 PROCEDURE DIVISION.
 MOVE LOW-VALUES TO ADD1I.
 MOVE LOW-VALUES TO ADD1O.
 EXEC CICS
 SEND MAP('ADD1') MAPSET('ADD001')
 END-EXEC.
 MAIN-PARA.
 EXEC CICS HANDLE AID
 PF1(ADD-PARA)
 PF2(SUB-PARA)
 ANYKEY(E-PARA)
 END-EXEC.
 EXEC CICS
 RECEIVE MAP('ADD1') MAPSET('ADD001')
 END-EXEC.
 ADD-PARA.
 MOVE NO1I TO A.
 MOVE NO2I TO B.
 COMPUTE C = A + B.
 MOVE C TO RESO.
 MOVE 'ADD SUCCESSFUL' TO MSGO.
 EXEC CICS
 SEND MAP('ADD1') MAPSET('ADD001')
 ERASE
 END-EXEC.
 EXEC CICS RETURN END-EXEC.
 SUB-PARA.
 MOVE NO1I TO A.
 MOVE NO2I TO B.
 COMPUTE C = A - B.
 MOVE C TO RESO.
 MOVE 'SUB SUCCESSFUL' TO MSGO.
 EXEC CICS
 SEND MAP('ADD1') MAPSET('ADD001')
 ERASE
 END-EXEC.
 EXEC CICS RETURN END-EXEC.
 E-PARA.
 MOVE 'PRESS F1 AND F2' TO MSGO.
 EXEC CICS SEND
 SEND MAP('ADD1') MAPSET('ADD001')
 ERASE
 END-EXEC.
 go to main-para.
```

[How to](https://srinimf.com/2015/12/28/how-ipconn-and-tcpipservice-need-to-define-in-cics-webservice/) write a piece of code to add logic for function keys [in CICS](https://srinimf.com/2015/06/29/mainframe-3-simple-ideas-to-handle-cursor-position-in-cics/).

### #**4 ADD Program in CICS-COBOL**

```
PROGRAM-ID. AD12GM.
 DATA DIVISION.
 WORKING-STORAGE SECTION.
 COPY ADD001.
 01 RES.
 02 A PIC 9(3).
 02 B PIC 9(3).
 02 C PIC 9(4).
 77 Z PIC X(80).
 PROCEDURE DIVISION.
 MOVE LOW-VALUES TO ADD1I.
 MOVE LOW-VALUES TO ADD1O.
 EXEC CICS
 SEND MAP('ADD1') MAPSET('ADD001')
 END-EXEC.
 EXEC CICS
 RECEIVE MAP('ADD1') MAPSET('ADD001')
 END-EXEC.
 MOVE NO1I TO A.
 MOVE NO2I TO B.
 COMPUTE C = A + B.
 MOVE C TO RESO.
 EXEC CICS
 SEND MAP('ADD1') MAPSET('ADD001')
 ERASE
 END-EXEC.
 EXEC CICS RETURN END-EXEC.
```

### **5# Map for Addition**

```
DFHMSD TYPE=&SYSPARM,                                         X
 MODE=INOUT,                                                   X
 TIOAPFX=YES,                                                  X
 STORAGE=AUTO,                                                 X
 LANG=COBOL,                                                   X
 CTRL=FREEKB
 ADD01   DFHMDI SIZE=(24,80),LINE=1,COLUMN=1
 DFHMDF INITIAL='ADD    PGM',POS=(1,38),LENGTH=10,ATTRB=PROT
 DFHMDF INITIAL='ENTER NO1:',POS=(05,11),LENGTH=10,ATTRB=PROT
 NO1        DFHMDF POS=(05,22),LENGTH=3,ATTRB=(UNPROT,IC),PICIN='999',         X
 INITIAL=''
 DFHMDF POS=(05,26),LENGTH=1,ATTRB=ASKIP
 DFHMDF INITIAL='ENTER NO2:',POS=(06,11),LENGTH=10,
ATTRB=ASKIP
 NO2       
DFHMDF POS=(06,22),LENGTH=03,ATTRB=UNPROT,PICIN='999',              X
 INITIAL=''
 DFHMDF INITIAL='RESULT  :',POS=(08,11),                        X
 LENGTH=09,ATTRB=PROT
 RES       DFHMDF POS=(08,22),ATTRB=UNPROT,                                    X
 LENGTH=04,PICOUT='9999',                                       X
 INITIAL='____'
```

**Also, read**

Related[JAVA Celebrating 20th B’day](https://srinimf.com/2015/12/27/java-celebrating-20th-bday/)

- [CICS XCTL Sample Logic to Call the Remote Program](https://srinimf.com/2016/04/06/cics-sample-program-for-xctl/)DateApril 6, 2016
- [How to write Menu Driven CICS programs](https://srinimf.com/2016/04/06/cics-menu-driven-programs/)DateApril 6, 2016
- [XCTL, LINK, RETURN in CICS: Here are Top Differences](https://srinimf.com/2015/08/05/cics-how-xctllink-and-return-controls-execution-of-programs/)DateAugust 5, 2015

### Share this:

-
- [Tweet](https://twitter.com/share)
- [![](https://i0.wp.com/assets.pinterest.com/images/pidgets/pinit_fg_en_rect_gray_20.png)](https://www.pinterest.com/pin/create/link/?url=https%3A%2F%2Fsrinimf.com%2F2016%2F04%2F06%2Fcics-sample-program-for-link%2F&media=https%3A%2F%2Fi0.wp.com%2Fsrinimf.com%2Fwp-content%2Fuploads%2F2018%2F06%2Fpexels-photo-773371-e1528634427263.jpeg%3Ffit%3D1200%252C900%26ssl%3D1&description=CICS%20Sample%20Program%2C%20Explains%20How%20to%20use%20Link%20Command)
-
- [Share on Tumblr](https://www.tumblr.com/share)
- [Share on WhatsApp (Opens in new window) WhatsApp](https://srinimf.com/2016/04/06/cics-sample-program-for-link/?share=jetpack-whatsapp)
- [More](#)
-

- [Print (Opens in new window) Print](https://srinimf.com/2016/04/06/cics-sample-program-for-link/?share=print)
- [Share on Reddit (Opens in new window) Reddit](https://srinimf.com/2016/04/06/cics-sample-program-for-link/?share=reddit)
- [Share on Telegram (Opens in new window) Telegram](https://srinimf.com/2016/04/06/cics-sample-program-for-link/?share=telegram)
- [Email a link to a friend (Opens in new window) Email](mailto:?subject=%5BShared%20Post%5D%20CICS%20Sample%20Program%2C%20Explains%20How%20to%20use%20Link%20Command&body=https%3A%2F%2Fsrinimf.com%2F2016%2F04%2F06%2Fcics-sample-program-for-link%2F&share=email)
-

### Like this:

Like Loading…
