CICS - 快速指南

CICS  - 概述

CICS是一个在线应用程序中使用的DB / DC系统。开发CICS是因为批处理操作系统只能执行批处理程序。 CICS程序可以用COBOL,C,C ++,Java等编写。现在,用户需要在几秒钟内实时获取信息。为了提供这种快速服务,我们需要一个可以在线处理信息的系统。 CICS允许用户与后端系统通信以获取所需信息。在线程序的示例包括在线银行系统,航班预订等。下图显示了CICS的组件以及它们之间的相互关系和减号;

CICS Overview

CICS的功能

CICS在应用程序中执行的主要功能如下 :

  • CICS管理来自应用程序中并发用户的请求。
  • 虽然多个用户正在使用CICS系统,但它让用户觉得他只是单个用户。
  • CICS提供对数据的访问权限用于在应用程序中读取或更新它们的文件。

CICS的功能

的功能CICS如下 :

  • CICS本身就是一个操作系统,因为它管理自己的处理器存储,有它的自己的任务管理器,负责处理multipl的执行e程序,并提供自己的文件管理功能。
  • CICS在批处理操作系统中提供在线环境。提交的作业立即执行。
  • CICS是一个通用的事务处理接口。
  • 可以同时拥有两个或多个CICS区域,因为CICS在后端的操作系统中作为批处理作业运行。

CICS  - 环境

CICS本身充当操作系统。它的工作是为在线执行应用程序提供一个环境。 CICS在一个区域或分区或地址空间中运行。 CICS处理在其下运行的程序的调度。 CICS作为批处理作业运行,我们可以通过发出命令PREFIX CICS *在假脱机中查看它。 CICS提供五种主要服务。所有这些服务一起执行任务。

CICS环境

以下是我们将逐步详细讨论的服务;

  • 系统服务
  • 数据通信服务
  • 数据处理服务
  • 应用程序编程服务
  • 监控服务
  • 系统服务

CICS维护控制功能,以管理系统内资源的分配或解除分配,如下所示;

  • 任务控制 : 任务控制提供任务调度和多任务功能。它负责所有CICS任务的状态。任务控制在并发CICS任务之间分配处理器时间。这称为多任务处理。 CICS尝试优先处理最重要任务的响应时间。
  • 程序控制 : 程序控制管理应用程序的加载和释放。一旦任务开始,就有必要将任务与适当的应用程序相关联。虽然许多任务可能需要使用相同的应用程序,但CICS只将一个代码副本加载到内存中。每个任务独立地通过此代码进行处理,因此许多用户都可以运行同时使用应用程序的相同物理副本的事务。
  • 存储控制 :  Storage Control管理主存储的获取和释放。存储控制获取,控制和释放动态存储。动态存储用于输入/输出区域,程序等。
  • 间隔控制 : 间隔控制提供定时器服务。

数据通信服务

带电信接入的数据通信服务接口用于处理来自应用程序的数据通信请求的方法,如BTAM,VTAM和TCAM。

  • CICS从中释放应用程序通过使用基本映射支持(BMS)处理终端硬件问题的负担。
  • CICS提供多区域操作(MRO),通过它可以使用多个CICS同一系统中的区域可以进行通信。
  • CICS提供系统间通信(ISC),系统中的CICS区域可以通过该系统与另一个系统上的CICS区域进行通信。系统。

数据处理服务

数据处理服务与数据访问方法(如BDAM)的接口,VSAM等。

  • CICS促进数据处理请求的服务从应用程序中获取。 CICS为应用程序编程人员提供了一组用于处理数据集和数据库访问及相关操作的命令。
  • 数据处理服务与数据库访问方法(如IMS /)的接口数据库,DB2等,便于从应用程序服务数据库请求。
  • CICS通过控制同步记录更新,保护数据,促进数据完整性管理作为任务ABEND和系统故障时的数据保护。

应用程序编程服务

应用程序编程服务与应用程序的接口。 CICS的应用程序编程服务提供诸如命令级转换,CEDF(调试工具)和CECI(命令解释器工具)之类的功能。我们将在即将发布的模块中详细讨论。

监控服务

监控服务监控CICS地址空间内的各种事件。它提供了一系列可用于系统调整的统计信息。

CICS  - 基本术语

我们必须了解所使用的基本术语CICS,以更好地了解它的工作原理。应用程序使用CICS与远程和本地终端及子系统进行通信。

IBM 3270终端

3270信息显示系统是一系列显示器,打印机终端。 3270终端用于通过IBM控制器连接到大型机。今天,3270仿真软件可用,这意味着即使是普通的PC也可以用作3270终端。 3270终端是哑终端,不自行处理。所有处理都需要由应用程序完成。 IBM终端由以下组件组成 :

CRT Monitor

CRT监视器显示应用程序的输出或输入字段。 3278型CRT显示器的屏幕截图如下所示。它具有以下特征 :

  • 它能够显示1920个字符。
  • 这些1920个字符位置中的每一个都是可单独寻址的。
  • COBOL应用程序可以将数据发送到该位置上的所有位置。屏幕。
  • 可以使用BMS设置强度,受保护,无保护字段等显示特性,我们将在即将发布的模块中详细讨论。

CICS CRT Monitor

键盘

IBM键盘键分为以下两类 :

  • 非AID密钥 : 字母,数字,标点符号等所有其他键都是非辅助键。当用户使用非辅助键键入文本或数字时,CICS甚至不知道用户是否输入任何内容。
  • AID键 :  AID密钥称为注意标识符密钥。 CICS只能检测AID密钥。输入所有输入后,只有当用户按下其中一个AID键时,CICS才会获得控制权。 AID键:ENTER,PF1至PF24,PA1至PA3,CLEAR。 AID键进一步分为两类 :
    • PF键 :  PF键称为功能键。 PF键允许从终端向CICS传输数据。 PF键为ENTER,PF1为PF24。
    • PA键 :  PA密钥称为程序访问密钥。 PA键不允许在终端和CICS之间传输数据。 PA键是PA1到PA3和CLEAR。

CICS Keyboard

Transaction

通过事务调用CICS程序。 CICS事务是应用程序中逻辑相关程序的集合。整个应用程序可以在逻辑上划分为多个事务。

  • 长度为1到4个字符的事务标识符用于标识用户想要做的事务。
  • 程序员将一个程序链接到事务标识符,该标识符用于调用该特定事务的所有应用程序。

任务

任务是一个特定于用户的工作单元。

  • 用户使用其中一个事务标识符调用应用程序。 CICS查找事务标识符以找出首先调用哪个程序来执行所请求的工作。它创建了一个完成工作的任务,并将控制转移到上述程序。
  • 交易可以通过多个任务完成。
  • 任务可以从启动它的终端接收数据并将数据发送到终端。它可以读写文件,也可以启动其他任务。

任务与交易

事务和任务之间的区别在于,多个用户可以调用事务,但每个用户都会启动自己的任务。

LUW

LUW看台对于逻辑工作单元。 LUW指出,一件作品应该完全完成或根本不完成。任务可以包含CICS中的多个Logical Unit of Works。我们将在即将发布的模块中讨论更多相关内容。

应用程序

应用程序是一系列逻辑分组的程序,用于形成多个事务,用于完成最终用户的特定任务。

CICS  -  Nucleus

前面介绍的五个CICS系统组件是CICS系统的一个方便的分组程序,每个程序都执行自己的专门功能。 CICS的核心,称为CICS Nucleus,由IBM提供的CICS控制程序和控制表组成。

控制程序

构建CICS核由控制程序和相应的控制表。它提供了独特的优势。它使CICS系统具有高度灵活性,因此易于维护。以下是CICS的重要控制程序 :

TCP

TCP称为终端控制程序。

  • TCP用于从终端接收消息。
  • 它维护硬件通信要求。
  • 它要求CICS启动任务。

KCP

KCP称为任务控制程序。

  • KCP用于同时控制任务及其相关属性的执行。
  • 它处理与多任务相关的所有问题。

PCP

PCP称为程序控制程序。

  • PCP用于定位和加载程序以供执行。
  • 它在程序之间传输控件,最后,它将控件返回给CICS。

FCP

FCP已知作为文件控制程序。

  • FCP用于为应用程序提供读取,插入,更新或删除记录等服务文件。
  • 它保留对记录的独占控制权,以便在记录更新期间保持数据完整性。

SCP

SCP称为存储控制程序。它用于控制CICS区域内存储的分配和释放。

控制表

CICS由IBM提供的CICS控制程序和表组成。需要使用应用程序信息相应地更新这些表,以便成功执行CICS应用程序。以下是重要的控制表 :

TCT

TCT称为终端控制表。

  • 当我们登录CICS终端时,在TCT表中输入一个条目。
  • TCT包含连接到当前CICS区域的终端ID。
  • 终端控制程序以及终端控制表识别来自终端的传入数据。

PCT

PCT称为程序控制表。

  • 它包含交易ID(TRANSID)和相应的程序名称或程序ID。
  • TRANSID在PCT表中是唯一的。

PPT

PPT称为处理程序表。 PPT包含程序名称或Mapset名称,任务使用计数器,语言,大小,主存储地址,加载库地址等。

  • 程序或映射集名称在PPT表中是唯一的。
  • CICS接收事务,并从PCT分配相应的程序名称到事务。它会检查程序是否已加载。如果已加载,则任务使用计数器增加1.如果未加载程序,则首先加载程序并将任务使用计数器设置为1.它从PPT表中获取加载库地址。 / p>

FCT

FCT称为文件控制表。

  • 它包含文件名,文件类型,记录长度等。
  • 全部CICS程序中使用的文件必须在FCT中声明,它们由CICS本身打开和关闭。

事务

当在CICS终端上输入事务标识符TP02时,首先它检查PCT表中是否存在与此事务标识符相关联的程序。如果找到一个,那么它会在PPT表中检查以找到执行它的程序的位置。

如果程序已在内存中可用,它将开始执行该特定程序;如果没有,它会将程序从辅助存储器加载到内存中,然后开始执行它。

CICS Transaction

交易生命周期

交易生命周期具有以下步骤 :

CICS Transaction Life Cycle

步骤1

终端操作员通过输入1来启动交易4个字符的事务ID并按下ENTER键。

步骤2

TCP定期检查所有终端的输入。当收到消息时,它会执行以下操作;

  • 指示SCP创建一个TIOA。
  • 将消息放入TIOA。
  • 将控件传递给KCP。

步骤3

KCP从TCP获取控制权并执行以下操作;

  • 验证交易ID和安全性。
  • 指示SCP创建任务控制区域。
  • 根据终端优先级(在TCT中设置),运营商优先级(在SNT中设置)和事务处理为任务分配优先级优先级(在PCT中设置)。
  • 将任务添加到等待程序的队列中。
  • 按优先顺序调度等待程序。
  • 将控制权传递给PCP。

步骤4

PCP从KCP获得控制并执行以下和减去;

  • 如有必要,找到程序并加载它。
  • 将控件传输到Application程序。

步骤5

应用程序从PCP获取控制权并执行以下操作;

  • 请求TCP将消息放入程序的WORKING STORAGE区域。
  • 请求FCP从文件中检索记录。

步骤6

FCP从应用程序中获取控制权并执行以下操作;

  • 从文件中请求文件工作区SCP。
  • 通知KCP此任务可以等到I / O完成。

第7步

KCP执行以下 :

  • 调度队列中的下一个任务。
  • 当I / O完成时重新调度旧任务。
  • 将控制转移到FCP。

步骤8

FCP将控制权返回给应用程序。

步骤9

应用程序执行以下操作 :

  • 处理文件数据。
  • 请求TCP发送I / O消息。
  • 将控制权交还给PCP。

步骤10

PCP将控制权返回给KCP,要求其结束任务。

步骤11

KCP指示SCP释放分配给任务的所有存储空间(TIOA除外)。

步骤12

TCP确实以下 :

  • 将输出发送到终端。
  • 请SCP释放TIOA。

CICS  - 交易

CICS事务用于在CICS区域中执行多个操作。我们将详细讨论IBM提供的重要CICS事务。

CESN

CESN称为CICS执行登录。

  • CESN用于登录CICS区域。
  • 我们需要提供CICS管理员提供的用户标识和密码才能登录到CICS。以下屏幕截图显示了登录屏幕的显示和减号;

CICS CESN

CEDA

CEDA称为CICS执行定义和管理。 CICS系统管理员使用它来定义CICS表条目和其他管理活动。

CEMT

CEMT称为CICS执行主终端。它用于查询和更新CICS环境的状态以及其他系统操作。

  • 使用CEMT命令,我们可以管理事务,任务,文件,程序等。
  • 要获得所有可能的选项,请键入CEMT并按Enter。它将显示所有选项。
  • CEMT主要用于将新程序加载到CICS中或用于将程序的新副本加载到CICS中程序或地图集已更改。

示例

可以覆盖文件的状态显示以更改它。下面的示例显示了如何关闭文件 :

 
 CEMT 
 **按ENTER&显示以下屏幕** 
状态:输入以下一项
查询
执行
设置
 **命令关闭a文件** 
 CEMT SET FILE(文件名)
 CEMT I FILE(文件名)

CECI

CECI称为CICS执行命令解释程序。可以使用CECI执行许多CICS命令。

  • CECI用于检查命令的语法。只有在语法正确的情况下,它才会执行命令。
  • 登录后在空CICS屏幕上键入CECI选项。它为您提供了可用选项。

示例

以下示例显示如何将映射的输出数据发送到终端。我们将在即将发布的模块中讨论MAPS。

 
 CECI SEND MAP(map-name)MAPSET(mapset-name)ERASE

CEDF

CEDF称为CICS执行调试工具。它用于逐步调试程序,这有助于查找错误。

键入CEDF并在CICS区域中按Enter键。将显示终端处于EDF模式的消息。现在输入交易ID并按Enter键。启动后,使用每个输入键,执行一行。在执行任何CICS命令之前,它会显示我们可以在继续进行之前修改值的屏幕。

CMAC

CMAC称为CICS消息对于Abend代码。它用于查找CICS Abend代码的解释和原因。

示例

以下示例显示如何检查Abend代码的详细信息 :

 
 CMAC abend-code

CESF

CESF称为CICS执行签名。它用于从CICS区域注销。

示例

以下示例显示如何从CICS区域注销 :

 
 CESF LOGOFF

CEBR

CEBR称为CICS执行临时存储浏览。它用于显示临时存储队列或TSQ的内容。

在调试时使用CEBR来检查是否正在正确写入和检索队列中的项目。我们将在即将发布的模块中讨论有关TSQ的更多信息。

示例

以下示例显示如何调用CEBR命令 :

 
 CEBR queue-id

CICS Concepts

可以通过执行一系列CICS宏来实现每个命令。我们将讨论一些基本功能,这些功能将帮助我们更好地理解概念;

多任务处理

操作系统的这一特性允许多个任务同时执行。任务可能是共享相同的程序或使用不同的程序。 CICS在其自己的区域中安排任务。

多线程

操作系统的此功能允许同时执行多个任务共享同一个程序。要使多线程成为可能,应用程序应该是操作系统下的可重入程序或CICS下的准可重入

Re-entrancy

重入程序是一个不会自行修改并可以自行重新进入并在操作系统中断后继续处理的程序。

准可重入

准可重入程序是CICS环境下的可重入程序。 CICS通过为每项任务获取唯一的存储区域来确保重新进入。在CICS命令之间,CICS具有使用CPU资源的专有权,并且它可以执行其他任务的其他CICS命令。

有时许多用户同时使用相同的程序;这就是我们所说的多线程。例如,假设有50个用户正在使用程序A.此处,CICS将为该程序提供50个工作存储,但只有一个程序部门。这种技术称为准重入

CICS  -  COBOL基础知识

CICS程序是用COBOL语言编写的在大型机中。我们将讨论编写一个简单的COBOL-CICS程序,编译它,然后执行它。

CICS程序

我们将编写一个简单的COBOL-CICS程序,它在CICS输出屏幕上显示一些消息。该程序用于演示执行COBOL-CICS程序所涉及的步骤。以下是编写简单程序的步骤 :

步骤1

登录大型机并打开TSO会话。

第2步

创建一个新的PDS,我们将在其中编写程序。

第3步

在PDS中创建一个新成员并编写以下程序 :

 
 IDENTIFICATION DIVISION。 
 PROGRAM-ID。你好。 
 DATA DIVISION。 
文件部分。 
工作 - 储存部分。 
 01 WS-MESSAGE PIC X(40)。 
 01 WS-LENGTH PIC S9(4)COMP。 
程序部门。 
 A000-MAIN-PARA。 
移动'Hello World'到WS-MESSAGE 
移动'+12'到WS-LENGTH 
 EXEC CICS发送文本
 FROM(WS-MESSAGE)
 LENGHT( WS-LENGTH)
 END-EXEC 
 EXEC CICS返回
 END-EXEC。

步骤4

编写程序后,我们需要编译它。我们可以使用以下JCL&minus编译程序;

 
 // SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C 
 // CICSCOB EXEC CICSCOB,
 // COPYLIB = ABC.XYZ.COPYLIB,
 // LOADLIB = ABC.XYZ.LOADLIB 
 // LIB JCLLIB ORDER = CICSXXX.CICS。 XXXPROC 
 // CPLSTP EXEC DFHEITVL 
 //TRN.SYSIN DD DSN = ABC.XYZ.PDS(HELLO),DISP = SHR 
 //LKED.SYSIN DD * 
 NAME HELLO(R)
 //

步骤5

打开CICS会话。

第6步

我们现在将使用以下命令安装程序 :

 
 CEMT SET PROG(HELLO)新。

步骤7

使用关联的transaction-id执行程序。 Transaction-id由管理员提供。它将显示以下输出 :

CICS Output

程序编译

以下流程图显示了编译COBOL-CICS程序时使用的步骤 :

CICS Compilation

翻译器

翻译器的功能是检查CICS命令中的语法错误。它将它们转换为等效的COBOL语句。

编译器

编译器的功能是扩展COBOL副本。它在检查源代码以查找语法错误后编译代码。

链接编辑器

链接编辑器的功能是将不同的对象模块链接到创建单个加载模块。

CICS  -  BMS

BMS称为基本映射支持。应用程序由格式化的屏幕组成,它们充当终端和CICS程序之间的桥梁。为了在终端和CICS程序之间进行通信,我们使用CICS终端输入/输出服务。我们使用BMS创建具有适当位置和属性的屏幕设计。以下是BMS&minus的功能;

  • BMS充当终端和CICS程序之间的接口。
  • 屏幕的设计和格式与应用逻辑分开。
  • BMS制作应用程序硬件独立。

格式化屏幕

下面显示的屏幕是菜单屏幕,可以使用BMS设计。它的关键点如下:

  • 屏幕上可能有标题,日期和其他任何信息。显示。
  • 选项1,2和3是未命名的字段,它们是屏幕的标题。
  • 在Selection字段中,我们需要提供输入。然后将此输入发送到CICS程序以进行进一步处理。
  • 在屏幕底部显示操作键。
  • 所有字段和屏幕本身都是使用BMS宏定义的。定义整个地图后,我们可以使用JCL来组装它。

CICS Screen

BMS基本条款

以下是我们将在即将推出的模块中使用的基本术语 :

地图

地图是单屏格式,可以使用BMS宏设计。它可以包含1到7个字符的名称。

Mapset

Mapset是一组地图,它们链接在一起形成一个加载模块。它应该有一个PPT条目。它可以有1到7个字符的名称。

BMS宏

BMS地图是一个用汇编语言编写来管理屏幕的程序。用于定义屏幕的三个宏是DFHMSD,DFHMDI和DFHMDF。

DFHMSD

DFHMSD宏生成Mapset定义。它是宏标识符,表明我们正在启动一个mapset。 mapset名称是加载模块名称,必须存在PPT表中的条目。下表显示了可在DFHMSD minus中使用的参数列表;

Sr.No 参数描述
1

类型

TYPE用于定义地图类型。如果TYPE =
MAP  - 创建物理地图
DSECT  - 创建符号地图
SYSPARM  - 物理符号,两者都创建为最终 - 表示地图集编码的结束。

2

MODE

MODE用于指示输入/输出操作。 IF MODE =
IN  - 仅用于输入映射
OUT  - 仅用于输出映射
INOUT用于输入和输出。输出图

3

LANG

LANG = ASM / COBOL / PL1
它决定DSECT结构的语言,以便复制到应用程序中。

4

STORAGE

如果STORAGE =
自动 - 为每个地图集获取单独的符号地图区域
BASE  - 为多个地图集的符号地图提供相同的存储基础

CTRL

CRTL用于定义设备控制请求。如果CTRL =
FREEKB  - 解锁键盘
FRSET  - 将MDT重置为零状态
ALARM  - 在屏幕显示时设置警报
打印 - 指示地图集到被发送到打印机。

6

TERM

TERM = type确保设备独立性,如果使用3270终端以外则需要。

7

TIOAPFX

TIOAPFX = YES / NO
YES  - 保留BMS命令的前缀空间(12个字节)以正确访问TIOA。 CICS命令级别必需。

以下示例显示如何编码地图集定义 minus;

 MPST01 DFHMSD TYPE = SYSPARM,X
   CTRL =(FREEKB,FRSET),X
   LANG = COBOL,X
   STORAGE = AUTO,X
   TIOAPFX = YES,X
   MODE = INOUT,X
   TERM = 3270
   DFHMSD TYPE = FINAL
END

DFHMDI

DFHMDI宏生成映射定义。它表明我们正在开始一张新地图。 Mapname后跟DFHMDI宏。 Mapname用于发送或接收地图。下表显示了我们在DFHMDI宏中使用的参数 minus;

Sr.No 参数描述
1

SIZE

SIZE =(Line,Column)
此参数给出地图的大小。 BMS允许我们使用多个地图构建屏幕,当我们在单个地图集中使用多个地图时,此参数变得很重要。

2

订单

它表示地图的起始行号。

3

它指示地图的起始列号。

4

JUSTIFY

它用于指定要左对齐或右对齐的整个地图或地图字段。

CTRL

CRTL用于定义设备控制请求。如果CTRL =
FREEKB  - 解锁键盘
FRSET  - 将MDT重置为零状态
ALARM  - 在屏幕显示时设置警报
打印 - 指示地图到被发送到打印机

6

TIOAPFX

TIOAPFX =是/否

是 - 为BMS命令保留前缀空间(12个字节)以正确访问TIOA。 CICS命令级别必需。

以下示例显示如何编码地图定义 minus;

 MAPSTD DFHMDI SIZE =(20,80),X
   LINE = 01,X
   COLUMN = 01,X
   CTRL =(FREEKB,FRSET)

DFHMDF

DFHMDF宏用于定义字段名称。提到了对DFHMDF宏进行编码的字段名称。该字段名称在程序中使用。我们不对在程序内部不想使用的常量字段写字段名称。下表显示了可在DFHMDF宏内使用的参数列表 minus;

Sr.No 参数描述
1

POS

这是屏幕上应显示该字段的位置。字段以其属性字节开头,因此如果您编码POS =(1,1),则该字段的属性字节位于第1列的第1行,实际数据从第2列开始。

2

LENGTH

这是字段的长度,不计算属性字节。

3

INITIAL

这是输出字段的字符数据。我们使用它来指定屏幕的标签和标题,并使它们独立于程序。例如,对于菜单屏幕中的第一个字段,我们将编码:INITIAL =' MENU'。

4

JUSTIFY

它用于指定要左对齐或右对齐的整个地图或地图字段。

ATTRB

ATTRB =(ASKIP / PROT / UNPROT,NUM,BRT / NORM / DRK,IC,FSET)它描述了该字段的属性。

ASKIP  -  Autoskip。无法在此字段中输入数据。光标跳到下一个字段。

PROT  - 受保护的领域。无法在此字段中输入数据。如果输入数据,将导致输入禁止状态。

UNPROT  - 未受保护的领域。可以输入数据,这用于所有输入字段。

NUM  - 数字字段。只允许使用数字(0到9)和特殊字符('。'和#39;  - ')。

BRT  - 明亮的场地显示(高亮显示)。

NORM  - 正常显示。

DRK  - 暗显示。

IC  - 插入光标。光标将位于此字段中。如果IC被指定多次,则光标将放在最后一个字段中。

FSET  - 字段集。 MDT被设置为使得字段数据将从终端发送到主计算机,而不管用户是否实际修改了字段。

6

PICIN

PICIN适用于像PICIN = 9(8)那样用作输入的数据字段。

7

PICOUT

PICIN适用于像PICOUT = Z(8)那样用作输出的数据字段。

以下示例显示了如何编写字段定义 minus;

 DFHMDF POS =(01,01),X
   LENGTH = 7,X
   INITIAL ='SCREEN1',X
      ATTRB =(PROT,NORM)
      STDID DFHMDF POS =(01,70),X
      LENGTH = 08,X
      ATTRB =(PROT,NORM)

CICS  -  MAP

BMS接收用户输入的数据,然后将其格式化为符号映射区域。应用程序只能访问符号映射中的数据。应用程序处理数据,输出发送到符号映射。 BMS将符号数据的输出与物理图合并。

CICS MAPS

物理地图

物理地图是加载库中的加载模块,其中包含有关应如何显示地图的信息。

  • 它包含有关地图中所有字段的属性及其位置的详细信息。
  • 它包含给定终端的地图显示格式。
  • 它使用BMS宏编码。它单独组装并链接编辑到CICS库中。

符号地图

符号图是库中的复制书。 CICS应用程序使用Copy book来从终端发送和接收数据。

  • 它包含复制到程序的WORKINGSTORAGE部分的所有可变数据。
  • 它有所有命名的字段。应用程序员使用这些字段来读取和写入数据到地图中。

船长和塞子场

对于未受保护的命名字段,在地图中,如果我们指定长度为10,这意味着名称字段可以采用长度不能超过10的值。但是当您使用CICS显示此地图并开始输入此字段的值时在屏幕上,我们可以输入10个以上的字符,即直到屏幕的末尾,我们甚至可以输入下一行。为了防止这种情况,我们使用Skipper字段或stop字段。 Skipper字段通常是长度为1的未命名字段,在指定字段后指定。

CICS Skipper Stopper Field

船长场

如果我们在命名的不受保护的字段之后放置一个skipper字段,那么在输入值时,一旦达到指定的长度,光标将自动定位到下一个不受保护的字段。以下示例显示如何添加skipper字段 minus;

 NUMBER DFHMDF POS =(01,01),X
   LENGTH = 5,X
   ATTRB =(UNPROT,IC)
      DFHMDF POS =(01,07),X
      LENGTH = 1,X
      ATTRB =(ASKIP)

塞子场

如果我们在命名的不受保护的字段之后放置一个停止字段,那么在输入值时,一旦达到指定的长度,光标将停止其定位。以下示例显示如何添加塞子字段 minus;

 NUMBER DFHMDF POS =(01,01),X
   LENGTH = 5,X
ATTRB =(UNPROT,IC)
DFHMDF POS =(01,07),X
      LENGTH = 1,X
      ATTRB =(PROT)

属性字节

任何字段的属性字节都存储有关字段物理属性的信息。下图和表格解释了每个位的重要性。

CICS属性字节

位位置 描述 位设置
0 1   由位2到7的内容确定
2 3 保护与保护转移 00  - 未受保护的字母数字
01  - 未受保护的数字
10  - 受保护的停止
11  - 受保护的跳过
4五 强度 00  - 正常
01  - 正常
10  - 亮11  - 无显示(暗)
6   必须始终为零
7 修改数据标记 0  - 字段未被修改
1  - 字段已被修改

修改数据标记

修改数据标记(MDT)是属性字节中的最后一位。

  • MDT是一个持有一位的标志。它指定是否将值传输到系统。
  • 当字段值改变时,其默认值为1。
  • 如果MDT为0,则无法传输数据;如果MDT为1,则可以传输数据。

发送地图

send map命令将格式化输出写入终端。它用于从应用程序将地图发送到终端。以下代码段显示了如何将地图发送到终端 minus;

 EXEC CICS SEND
   MAP('地图名称')
   地图集('地图集名')
   [FROM(数据区域)]
   [LENGTH(data_value)]
   [的dataonly]
   [MAPONLY]
   [光标]
   [ERASE / ERASEAUP]
   [FREEKB]
   [FRSET]
END-EXEC

下表列出了send map命令中使用的参数及其重要性。

Sr.No 参数描述
1

地图名称

这是我们要发送的地图的名称。这是强制性的。

2

地图集名称

它是包含mapname的地图集的名称。除非与地图名称相同,否则需要地图集名称。

3

FROM

如果我们决定使用不同的DSECT名称,则使用它,我们必须使用选项FROM(dsect-name)和SEND MAP命令。

4

MAPONLY

这意味着您的程序中的数据不会合并到地图中,只会传输地图中的信息。

的dataonly

它与MAPONLY的逻辑相反。我们使用它来修改已经创建的显示中的变量数据。只有程序中的数据才会发送到屏幕。不发送地图中的常量。

6

ERASE

它会导致整个屏幕在我们发送的内容之前被删除。

7

ERASEUP

它只会导致不受保护的字段被删除。

8

FRSET

标记重置会关闭屏幕上所有字段的属性字节中的已修改数据标记,然后将放置的内容放在此处。

9

CURSOR

它可用于将光标定位在终端屏幕上。可以通过将-1移动到字段的L部分然后发送地图来设置光标。

10

ALARM

它会使声音警报响起。

11

FREEKB。

如果我们在地图或SEND命令中指定FREEKB,键盘将被解锁。

12

打印

它允许在打印机上打印SEND命令的输出。

13

FORMFEED

它会导致打印机在打印输出之前将纸张还原到下一页的顶部。

接收地图

当我们想要从终端接收输入时,我们使用RECEIVE MAP命令。 MAP和MAPSET参数与SEND MAP命令的含义完全相同。以下代码段显示了如何接收地图 minus;

 EXEC CICS RECEIVE
   MAP('地图名称')
   地图集('地图集名')
   [INTO(数据区域)]
   [FROM(数据区域)]
   [LENGTH(data_value)]
END-EXEC

 

Mapset执行

开发和执行mapset minus需要以下步骤;

  • 第1步 minus;打开TSO会话。
  • 第2步 minus;创建一个新的PDS。
  • 第3步 minus;根据要求在新成员中编码地图集。
  • 第4步 minus;使用CICS管理员提供的JCL组装映射集。
  • 第5步 minus;打开CICS会话。
  • 第6步 minus;使用命令 minus安装程序;

    CEMT SET PROG(mapset-name)新

  • 第7步 minus;输入以下命令将Map发送到终端 minus;

    CECI发送MAP(地图名称)MAPSET(mapset-name)ERASE FREEKB

CICS  - 接口块

任何应用程序都需要一个接口来与CICS交互。 EIB(执行接口块)充当接口,以允许应用程序与CICS通信。 EIB包含执行程序期间所需的信息。

受限制的COBOL动词

在编写CICS程序时,我们不能使用将控件直接返回MVS的命令。如果我们编写这些COBOL动词,它不会给出任何编译错误,但我们可能会得到不可预测的结果。以下是不应在CICS程序中使用的COBOL动词 minus;

  • 文件I / O语句,如打开,读取,写入,重写,关闭,删除和启动。 CICS中的所有文件I / O都由文件控制模块处理,它们有自己的一组语句,如READ,WRITE,REWRITE和DELETE,我们将在即将发布的模块中讨论这些语句。
  • 文件部分和环境部门不是必需的。
  • 不能使用调用Accept,Date / Time等操作系统函数的COBOL语句。
  • 不要使用DISPLAY,MERGE,STOP RUN和GO BACK。

执行接口块

执行接口块(EIB)是一个控制块,由CICS为每个程序自动加载。

  • EIB对于任务是唯一的,并且在任务期间存在。它包含一组与任务对应的系统相关信息。
  • 它包含有关事务标识符,时间,日期等的信息,这些信息由CICS在执行应用程序期间使用。
  • 作为任务的一部分执行的每个程序都可以访问相同的EIB。
  • 可以通过在CEDF模式下执行程序来查看运行时EIB中的数据。

EIB Fields

下表提供了EIB minus中存在的字段列表;

EIB Field PIC条款 描述
EIBAID X(1) 援助钥匙按下
EIBCALEN S9(4)COMP 它包含DFHCOMMAREA的长度
EIBDATE S9(7)COMP-3 它包含当前系统日期
EIBRCODE X(6) 它包含最后一笔交易的退货代码
EIBTASKN S9(7)COMP-3 它包含任务编号
EIBTIME S9(7)COMP-3 它包含当前系统时间
EIBTRMID X(4) 终端标识符
EIBTRNID X(4) 交易标识符

CICS程序分类

CICS计划分为以下三类,我们将逐一讨论和减去;

  • 非会话计划
  • 会话程序
  • 伪对话程序 - 我们将在下一个模块中讨论

非会话计划

在执行非会话程序时,不需要人为干预。程序启动时提供所有必要的输入。

  • 它们类似于以批处理模式运行的批处理程序。所以在CICS中,很少开发它们。
  • 我们可以说它们仅用于以固定的时间间隔显示一系列屏幕。

以下示例显示了一个非会话程序,它将简单地显示"HELLO WORLD" 。在CICS终端上作为输出 minus;

 IDENTIFICATION DIVISION。
PROGRAM-ID。你好。
数据部门。
工作储存部分。
01 WS-MESSAGE PIC X(30)。
程序部门。
************************************************** ******
*将数据发送到屏幕*
************************************************** ******
   移动'你好世界'致WS-MESSAGE
   EXEC CICS发送文本
      FROM(WS-MESSAGE)
   END-EXEC
************************************************** ******
*任务终止,不得与用户进行任何互动*
************************************************** ******
   EXEC CICS RETURN
END-EXEC。

会话计划

向终端发送消息并从用户接收响应称为会话。在线应用程序通过一对SEND和RECEIVE命令实现用户与应用程序之间的对话。会话计划的关键点如下 minus;

  • 系统向屏幕发送消息并等待用户的响应。
  • 用户响应所需的时间称为思考时间。这个时间相当高,这是会话计划的一个主要缺点。
  • 用户提供必要的输入并按下AID键。
  • 应用程序处理用户的输入并发送输出。
  • 程序在开始时加载到主存储器中并保留到任务结束。

CICS转换程序

以下示例显示了一个转换程序,该程序从用户获取输入,然后在CICS终端上显示相同的输入作为输出 minus;

 IDENTIFICATION DIVISION。
PROGRAM-ID。你好。
数据部门。
工作储存部分。
01 WS-MESSAGE PIC X(30)值空间。
程序部门。
   移动'输入消息'致WS-MESSAGE
************************************************** ******
*从节目到屏幕发送数据*
************************************************** ******
   EXEC CICS发送文本
      FROM(WS-MESSAGE)
   END-EXEC
************************************************** ******
*从用户获得输入*
************************************************** ******
   EXEC CICS RECEIVE
      INTO(WS-MESSAGE)
   END-EXEC
   EXEC CICS发送文本
      FROM(WS-MESSAGE)
   END-EXEC
************************************************** ******
*终止交易的命令*
************************************************** ******
   EXEC CICS RETURN
END-EXEC。

CICS  - 伪编程

截至目前,我们已涵盖非转换和转换计划。转换计划有一个主要缺点,因为他们的思考时间相当高。为了克服这个问题,伪转换编程进入了画面。我们现在将讨论有关伪转换程序的更多信息。

伪转换程序

以下是在伪转换程序中发生的事件序列 minus;

  • 第1步 minus;系统向屏幕发送消息并终止事务,指定在收到用户输入时要启动的事务。
  • 第2步 minus;系统将此事务使用的资源分配给系统中运行的其他事务。因此,我们可以利用伪转换程序中的资源,直到用户提供输入。
  • 第3步 minus;系统定期轮询终端输入。收到输入后,将对其进行处理并显示输出。
  • 第4步 minus;应用程序在需要时加载到主存储器中,并在不使用时释放。

 CICS伪转换程序

伪转换技术

在伪对话中要注意的重点是在每个任务之间传递数据。我们将讨论传递数据的技术。

COMMAREA

COMMAREA被称为通信领域。 COMMAREA用于在任务之间传递数据。以下示例显示如何传递COMMAREA,其中WSCOMMAREA和WS-COMMAREA-LENGTH在工作存储部分 minus中声明;

 EXEC CICS RETURN
   TRANSID(' transaction-id')
   COMMAREA(WS-COMMAREA)
   长度(WS-COMMAREA-LENGTH)
END-EXEC。

DFHCOMMAREA

DFHCOMMAREA是一个特殊的内存区域,由CICS提供给每个任务。

  • 它用于将数据从一个程序传递到另一个程序。程序可以存在于同一事务中,也可以存在于不同的事务中。
  • 它在01级的程序的链接部分中声明。
  • 它应该与WS-COMMAREA具有相同的图片子句。
  • 可以使用MOVE语句将数据从DFHCOMMAREA移回WS-COMMAREA。
将DFHCOMMAREA移至WS-COMMAREA。

发送映射后,任务结束并等待用户响应。在此阶段,需要保存数据,因为虽然任务已经结束,但事务却没有。当要恢复此事务时,它将需要任务的先前状态。用户输入输入。现在必须由RECEIVE MAP命令接收,然后验证。以下示例显示如何声明COMMAREA和DFHCOMMAREA minus;

工作 - 存储部分。
01 WS-COMMAREA。
   05 WS-DATA PIC X(10)。
   
链接部分。
01 DFHCOMMAREA。
   05 LK-DATA PIC X(10)。

伪代码

下面给出的是我们在伪编程中使用的伪代码的逻辑 minus;

将DFHCOMMAREA移至WS-COMMAREA
如果EIBCALEN = 0
   第1步:发送地图
   步骤2:移动< internal-transaction-id1>到WS-COMMAREA
   第3步:问题有条件的回归
其他
   如果WS-COMMAREA =< internal-transaction-id1>
      第4步:接收地图
      第5步:处理数据
      第6步:发送输出图
      步骤7:移动<内部交易-ID2>到WS-COMMAREA
      第8步:问题有条件的回归
   万一
万一
第9步:重复步骤3到步骤7直到退出

以下示例显示了伪转换程序 minus;

 ***************************************** *************************
*计划伪造对话的计划*
************************************************** ****************
识别部门。
PROGRAM-ID。你好。
数据部门。
工作储存部分。
01 WS-MESSAGE PIC X(30)。
01 WS-COMMAREA PIC X(10)值空间。
链接部分。
01 DFHCOMMAREA PIC X(10)。
程序部门。
   将DFHCOMMAREA转移到WS-COMMAREA
   如果WS-COMMAREA = SPACES
************************************************** ****************
*交易第一次执行*
************************************************** ****************
   移动' HELLO'致WS-MESSAGE
   EXEC CICS发送文本
      FROM(WS-MESSAGE)
   END-EXEC
   移动'第一'到WS-COMMAREA
************************************************** ****************
*任务因退货而结束。 IF AID KEY PRESSED,NEXT *
*交易应该是TP002。数据从WS-COMMAREA传递到*
* DFHCOMMAREA *
************************************************** ****************
   EXEC CICS RETURN
      TRANSID(' TP002')
      COMMAREA(WS-COMMAREA)
   END-EXEC
************************************************** ****************
*如果COMMAREA不是空的,那么TP002已经执行*
*已经通过接收促进用户互动*
************************************************** ****************
   其他
      EXEC CICS RECEIVE
         INTO(WS-MESSAGE)
   END-EXEC
      EXEC CICS发送文本
      FROM(WS-MESSAGE)
   END-EXEC
************************************************** ****************
*作为退货结果的任务结束,未指明下一笔交易*
*待执行*
************************************************** ****************
   EXEC CICS RETURN
   END-EXEC
END-IF。

伪转换的优点

以下是伪转换的优点 minus;

  • 资源得到最好的利用。程序暂停后立即释放资源。
  • 它看起来好像处于对话模式。
  • 它有更好的响应时间。

退货声明

以下是在CICS minus中使用的两种类型的return语句;

返回-1

当发出以下无条件返回语句时,任务和事务(程序)终止。

 EXEC CICS RETURN
END-EXEC。

返回-2

当发出以下条件返回(即,返回TRANSID语句)时,控件返回到CICS,并执行下一个transid。当用户按下AID键 时,下一个事务开始。

 EXEC CICS RETURN
   TRANSID(' trans-id')
   [COMMAREA(WS-COMMAREA)]
END-EXEC。

CICS  - 援助键

正如我们在早期模块中所讨论的那样,AID密钥称为注意标识符密钥。 CICS只能检测AID密钥。键入所有输入后 ,仅当用户按下其中一个AID键时,CICS才会获得控制权。 AID键包括ENTER,PF1至PF24,PA1至PA3和CLEAR。

验证AID密钥

使用EIBAID检查用户按下的键。

  • EIBAID长度为一个字节,并保存3270输入流中使用的实际注意标识符值。
  • CICS为我们提供了一组预编码变量,可以通过编写以下语句 minus来在应用程序中使用。

    COPY DFHAID

DFHAID

DFHAID是一个副本,在应用程序中用于包含CICS预编码的变量集。 DFHAID字帖中包含以下内容 minus;

 01 DFHAID。
   02 DFHNULL PIC X VALUE是' &#39 ;.
   02 DFHENTER PIC X VALUE是''''
   02 DFHCLEAR PIC X值是' _'。
   02 DFHCLRP PIC X值是' |'。
   02 DFHPEN PIC X值是' ='。
   02 DFHOPID PIC X值是' W'。
   02 DFHMSRE PIC X值是' X'。
   02 DFHSTRF PIC X值是' h'。
   02 DFHTRIG PIC X值是''。
   02 DFHPA1 PIC X值是'%'。
   02 DFHPA2 PIC X值是'>'。
   02 DFHPA3 PIC X值是','。
   02 DFHPF1 PIC X值是' 1'。
   02 DFHPF2 PIC X值是' 2'。
   02 DFHPF3 PIC X值是' 3'。
   02 DFHPF4 PIC X值是' 4'。
   02 DFHPF5 PIC X值是' 5'。
   02 DFHPF6 PIC X值为' 6'。
   02 DFHPF7 PIC X值是' 7'。
   02 DFHPF8 PIC X值是' 8'。
   02 DFHPF9 PIC X值是' 9'。
   02 DFHPF10 PIC X值是':'。
   02 DFHPF11 PIC X值是'#'。
   02 DFHPF12 PIC X值是' @'。
   02 DFHPF13 PIC X值是' A'。
   02 DFHPF14 PIC X值是' B'。
   02 DFHPF15 PIC X值是' C'。
   02 DFHPF16 PIC X值是' D'。
   02 DFHPF17 PIC X值是E' E'。
   02 DFHPF18 PIC X值是' F'。
   02 DFHPF19 PIC X值是' G'。
   02 DFHPF20 PIC X值是' H'。
   02 DFHPF21 PIC X值是'我'。
   02 DFHPF22 PIC X值是'¢'。
   02 DFHPF23 PIC X值是'。'。
   02 DFHPF24 PIC X值是'<'。

以下示例显示如何在应用程序 minus中使用DFHAID副本;

 IDENTIFICATION DIVISION。
PROGRAM-ID。你好。
数据部门。
工作储存部分。
COPY DFHAID。
程序部门。
A000-AIDKEY-PARA。
   评估EIBAID
      当DFHAID
         执行A000-PROCES-PARA
      当DFHPF1
         执行A001-HELP-PARA
      当DFHPF3
         执行A001-EXIT-PARA
    END-EVALUATE。

光标定位

有两种方法可以覆盖地图定义中指定的位置。

  • 一种方法是在send map命令的CURSOR选项中指定相对于行号和列号的屏幕位置。
  • 其他方法是将-1移动到以L为后缀的符号映射变量。然后,在SEND MAP中发送带有CURSOR选项的映射。

以下示例显示如何覆盖NAME字段的光标位置 minus;

 MOVE -1 TO NAMEL
   EXEC CICS发送
      地图('地图名称')
      MAPSET(' name-field')
      ERASE
      FREEKB
      光标
   END-EXEC。

动态修改属性

在发送地图时,如果我们想要为地图中指定的字段设置不同的属性,那么我们可以通过在程序中设置字段来覆盖 它。以下是覆盖字段 minus的属性的解释;

  • 要覆盖字段的属性,我们必须在应用程序中包含DFHATTR。它由CICS提供。
  • 可以从列表中选择所需的属性,并将其移动到后缀为' A'的符号字段变量。

DFHATTR持有以下内容 minus;

 01 CICS-ATTRIBUTES。
   05 ATTR-UXN PIC X(01)VALUE SPACE。
   05 ATTR-UXMN PIC X(01)值' A'。
   05 ATTR-UXNL PIC X(01)VALUE' D'。
   05 ATTR-UXMNL PIC X(01)VALUE' E'。
   05 ATTR-UXBL PIC X(01)VALUE' H'。
   05 ATTR-UXMBL PIC X(01)VALUE' I'。
   05 ATTR-UXD PIC X(01)VALUE'<'
   05 ATTR-UXMD PIC X(01)VALUE'('。
   05 ATTR-U9N PIC X(01)VALUE''。
   05 ATTR-U9MN PIC X(01)VALUE' J'。
   05 ATTR-U9NL PIC X(01)VALUE' M'。
   05 ATTR-U9MNL PIC X(01)VALUE' N'。
   05 ATTR-U9BL PIC X(01)值' Q'。
   05 ATTR-U9MBL PIC X(01)VALUE' R'。
   05 ATTR-U9D PIC X(01)值' *'。
   05 ATTR-U9MD PIC X(01)VALUE')'。
   05 ATTR-PXN PIC X(01)值'  - '。
   05 ATTR-PXMN PIC X(01)VALUE' /'。
   05 ATTR-PXNL PIC X(01)值' U'。
   05 ATTR-PXMNL PIC X(01)VALUE' V'。
   05 ATTR-PXBL PIC X(01)值' Y'。
   05 ATTR-PXMBL PIC X(01)VALUE' Z'。
   05 ATTR-PXD PIC X(01)值'%'。
   05 ATTR-PSN PIC X(01)值' 0'。
   05 ATTR-PSMN PIC X(01)VALUE' 1'。
   05 ATTR-PSNL PIC X(01)VALUE' 4'。
   05 ATTR-PSMNL PIC X(01)VALUE' 5'。
   05 ATTR-PSBL PIC X(01)VALUE' 8'。
   05 ATTR-PSMBL PIC X(01)VALUE' 9'。
   05 ATTR-PSD PIC X(01)值' @'。
   05 ATTR-PSMD PIC X(01)VALUE"'"。

CICS  - 文件处理

CICS允许我们以多种方式访问文件数据。大多数文件访问在在线系统中是随机的,因为要处理的事务不是批处理 的并且被分类成任何类型的顺序。因此,CICS支持通常的直接访问方法 minus; VSAM和DAM(直接访问方法) 。它还允许我们使用数据库管理器访问数据。

随机访问

以下是用于随机处理的命令 minus;

Sr.No 命令描述
1 阅读

READ命令使用主键从文件中读取数据。

2 写入

Write命令用于向文件添加新记录。

3 REWRITE

REWRITE命令用于修改文件中已存在的记录。

4 删除

DELETE命令用于删除文件中存在的记录。

顺序访问

以下是用于顺序处理的命令 minus;

Sr.No 命令描述
1 STARTBR

STARTBR称为开始浏览。

2 READNEXT / READPREV

当我们发出STARTBR命令时,它不会使记录可用。

3 RESETBR

RESETBR命令允许我们在浏览过程中重置起点。

4 ENDBR

当我们顺序读完文件后,我们使用ENDBR命令终止浏览。

CICS  - 错误处理

在使用CICS应用程序时,可能会遇到许多类型的异常终止和错误。由于软件问题的硬件,可 能会出现错误。我们将讨论此模块中的错误和错误处理。

CICS错误

以下是在执行CICS应用程序期间可能出现的CICS错误 minus;

  • 当CICS系统中的条件不正常时,会出现一些预期的CICS错误。例如,如果我们正在阅读特定记录并且未 找到记录,那么我们将得到"未找到" 记录。错误。 Mapfail 是一个类似的错误。此类别中的错 误由程序中的显式逻辑处理。
  • 由于某些原因(如零除,数字字段中的非法字符或事务ID错误)而出现逻辑错误。
  • 与硬件或其他系统条件相关的错误超出了应用程序的控制范围。例如,访问文件时出现输入/输出错误 。

错误处理命令

CICS提供了几种机制来识别错误并在我们的程序中处理它们。以下是用于处理预期的CICS错误 minus的命 令;

Sr.No 处理命令描述
1 处理条件

句柄条件用于将程序的控制转移到段落或过程标签。

2 处 理Abend

如果程序因输入输出错误等原因而异常终止,则可以使用Handle Abend CICS命令处理该程序 。

3 Abend

Abend命令用于故意终止任务。

4 忽略条件

如果我们希望在忽略条件中提到的特定异常终止或错误发生时不采取任何操作,则使用忽略条 件。

Nohandle

可以为任何CICS命令指定Nohandle。

CICS  - 控制操作

CICS程序控制程序(PCP)管理应用程序的流程。所有应用程序必须在处理程序表中有一个条目。以下是用于程 序控制服务的命令 minus;

  • XCTL
  • 链接
  • 加载
  • 发布
  • 返回

程序逻辑级别

在CICS下执行的应用程序具有各种逻辑级别。直接接收控制的第一个程序处于最高逻辑级别,即级别1.链接程序 处于链接程序的下一个逻辑级别。 XCTL程序运行在同一级别。很明显,我们将在本单元的后面部分介绍Link和XCTL 。下图显示了逻辑电平 minus;

CICS控制操作

XCTL

XCTL的基本解释如下 minus;

  • XCTL命令用于将控件从一个程序传递到同一级别的另一个程序。
  • 它不期望控制回来。
  • 它类似于GO TO声明。
  • XCTL程序可以是伪会话。

以下示例显示如何使用XCTL命令将控件传递给另一个程序 minus;

 IDENTIFICATION DIVISION。
PROGRAM-ID。 PROG1。
工作储存部分。
01 WS-COMMAREA PIC X(100)。
程序部门。

EXEC CICS XCTL
   计划(' PROG2')
   COMMAREA(WS-COMMAREA)
   长度(100)
END-EXEC。

该命令将控制传递给程序' PROG2' 100字节的数据。 COMMAREA是一个可选参数,是包含要传递的 数据或要返回结果的区域的区域的名称。

链接

链接命令用于将控件传送到较低级别的另一个程序。它期待控制回来。链接的程序不能是伪对话的。

以下示例显示如何使用Link命令将控件传递给另一个程序 minus;

 IDENTIFICATION DIVISION。
PROGRAM-ID。 PROG1。
工作储存部分。
01 WS-COMMAREA PIC X(100)。
程序部门。

EXEC CICS LINK
   计划(' PROG2')
   COMMAREA(WS-COMMAREA)
   长度(100)
END-EXEC。

加载

加载命令用于加载程序或表。以下是Load命令 minus的语法;

 EXEC CICS LOAD
   计划('名称')
END-EXEC。

发布

释放命令用于释放程序或表。以下是Release命令 minus的语法;

 EXEC CICS RELEASE
   计划('名称')
END-EXEC。

返回

返回命令用于将控件返回到下一个更高的逻辑级别。以下是Return命令 minus的语法;

 EXEC CICS RETURN
   计划('名称')
   COMMAREA(数据值)
   长度(数据值)
END-EXEC。

间隔控制操作

间隔控制操作有以下两种类型 minus;

ASKTIME

ASKTIME用于请求当前时间和日期或时间戳。然后,我们将此值移动到程序内的工作存储变量中。以下是ASKTIME 命令 minus的语法;

 EXEC CICS ASKTIME
   [绝对时间(WS-时间戳)]
END-EXEC。

FORMATTIME

FORMATTIME根据选项将时间戳格式化为所需格式,日期可以是YYDDD,YYMMDD或YYDDMM。 DATESEP表示DATE的分 隔符,TIME表示TIMESEP变量。以下是FORMATTIME命令 minus的语法;

 EXEC CICS FORMATTIME
   绝对时间(WS-时间戳)
   [YYDDD(WS-DATE)]
   [YYMMDD(WS-DATE)]
   [YYDDMM(WS-DATE)]
   [DATESEP(WS-DATESEP)]
   [TIME(WS-TIME)]
   [TIMESEP(WS-TIMESEP)]
END-EXEC。

CICS  - 临时存储

CICS中提供了不同的暂存区,用于保存数据或在事务之间传输数据。 CICS提供了五个存储区域,我们将在本单 元中讨论。

COMMAREA

COMMAREA的行为类似于便笺簿,可用于将数据从一个程序传递到另一个程序,在同一事务中或从不同的事务中传 递。它应该在使用DFHCOMMAREA名称的LINKAGE SECTION中定义。

共同工作区

CICS区域中的任何事务都可以访问公共工作区,因此系统中决定使用它的所有事务必须同意其格式和使用。整个 CICS区域中只有一个CWA。

交易工作区

事务工作区用于在同一事务中执行的应用程序之间传递数据。 TWA仅在交易期间存在。其大小在程序控制表中定 义。

临时存储队列

临时存储队列(TSQ)是临时存储控制程序(TSP)提供的功能。

  • TSQ是可以由同一CICS区域中的不同任务或程序创建,读取和删除的记录队列。
  • 队列标识符用于标识TSQ。
  • TSQ中的记录由称为项目编号的相对位置标识。
  • 在明确删除整个TSQ之前,TSQ中的记录仍然可访问。
  • TSQ中的记录可以按顺序或直接读取。
  • TSQ可以写在DASD中的主存储器或辅助存储器中。

WRITEQ TS

此命令用于将项添加到现有TSQ。此外,我们可以使用此命令创建新的TSQ。以下是WRITEQ TS命令的语法 minus;

句法

 EXEC CICS WRITEQ TS
   队列('队列名称')
   FROM(队列记录)
   [LENGTH(队列记录长度)]
   [项目(项目编号)]
   [改写]
   [MAIN / AUXILIARY]
END-EXEC。

以下是WRITEQ TS命令中使用的参数的详细信息 minus;

  • QUEUE由此参数中提到的名称标识。
  • FROM和LENGTH选项用于指定要写入队列的记录及其长度。
  • 如果指定了ITEM选项,则CICS会将项目编号分配给队列中的记录,并将该选项中提供的数据区域设置为 项目编号。如果记录开始新队列,则分配的项目编号为1,后续项目编号按顺序执行。
  • REWRITE选项用于更新队列中已存在的记录。
  • MAIN / AUXILIARY选项用于在主存储或辅助存储中存储记录。默认为AUXILIARY。

READQ TS

使用此命令读取临时存储队列。以下是READQ TS minus的语法;

句法

 EXEC CICS READQ TS
   队列('队列名称')
   INTO(队列记录)
   [LENGTH(队列记录长度)]
   [项目(项目编号)]
   [下一个]
END-EXEC。

DELETEQ TS

此命令用于删除临时存储队列。以下是DELETEQ TS minus的语法;

句法

 EXEC CICS DELETEQ TS
   队列('队列名称')
END-EXEC。

瞬态数据队列

瞬态数据队列本质上是瞬态的,因为它可以快速创建和删除。它只允许顺序访问。

  • 队列的内容只能读取一次,因为一旦执行读取就会被销毁,因此名称为Transient。
  • 它无法更新。
  • 它需要在DCT中输入。

WRITEQ TD

此命令用于写入瞬态数据队列,它们始终写入文件。以下是WRITEQ TD命令的语法 minus;

句法

 EXEC CICS WRITEQ TD
   队列('队列名称')
   FROM(队列记录)
   [LENGTH(队列记录长度)]
END-EXEC。

READQ TD

使用此命令读取Transient数据队列。以下是READQ TD minus的语法;

句法

 EXEC CICS READQ TD
   队列('队列名称')
   INTO(队列记录)
   [LENGTH(队列记录长度)]
END-EXEC。

DELETEQ TD

此命令用于删除Transient数据队列。以下是DELETEQ TD minus的语法;

句法

 EXEC CICS DELETEQ TD
   队列('队列名称')
END-EXEC。

CICS  - 互通

在两个或多个系统之间发生的相互通信称为相互通信

互通的好处

互通的重要好处如下 minus;

  • 我们不需要在所有系统上复制数据。
  • 用户无需保持与多个系统的连接即可访问存储在其上的数据。
  • 它提高了应用程序的性能。

基本术语

必须具备CICS系统中使用的基本术语的知识。以下是基本术语 minus;

本地系统

本地系统是发起相互通信请求的系统。

本地资源

本地资源是位于本地系统上的资源。

远程系统

远程系统是由于相互通信请求而启动的系统。

远程资源

远程资源是位于远程系统上的资源。

MVS Sysplex

MVS Sysplex是多个MVS操作系统的配置。它们通过共享功能和程序作为单个系统工作。

的CICSPlex

CICSPlex通常被描述为一组处理客户工作负载的互连CICS区域。 CICSPlex是一组互连的CICS区域,拥有终端, 应用程序,资源等。

互通方法

CICS可以通过两种方式与其他系统进行通信 minus;

  • MRO minus;当同一MVSPLEX中的两个CICS区域需要相互通信时,使用多区域 操作。
  • ISC minus;当LOCAL服务器中的CICS区域必须与REMOTE服务器中的CICS区域 通信时,将使用"系统间通信" 。

CICS  - 状态代码

使用CICS时,您可能会遇到异常终止。以下是常见的异常终止代码及其说明,可帮助您解决问题 minus;

Sr.No 代码描述
1

ASRA

程序检查例外

2

AEI0

程序ID错误

3

AEI9

映射失败条件

4

AEIO

重复密钥

AEIN

重复记录

6

AEID

到达文件结尾

7

AEIS

文件未打开

8

AEIP

请求条件无效

9

AEY7

未授权使用该资源

10

APCT

找不到程序

11

AFCA

数据集未找到

12

AKCT

超时错误

13

ABM0

找不到指定的地图

14

AICA

无限循环编程

15

AAOW

内部逻辑错误