CICS-クイックガイド
CICSは、オンラインアプリケーションで使用されるDB / DCシステムです。バッチオペレーティングシステムはバッチプログラムしか実行できないため、CICSが開発されました。CICSプログラムは、COBOL、C、C ++、Javaなどで作成できます。最近、ユーザーは数秒以内にリアルタイムで情報を求めています。このような迅速なサービスを提供するには、情報をオンラインで処理できるシステムが必要です。CICSを使用すると、ユーザーはバックエンドシステムと通信して、必要な情報を取得できます。オンラインプログラムの例には、オンラインバンキングシステム、フライト予約などが含まれます。次の画像は、CICSのコンポーネントとそれらがどのように相互に関連しているかを示しています。

CICSの機能
アプリケーションでCICSによって実行される主な機能は次のとおりです。
CICSは、アプリケーション内の同時ユーザーからの要求を管理します。
複数のユーザーがCICSシステムで作業していますが、ユーザーは自分が1人のユーザーであるように感じます。
CICSは、アプリケーションでデータファイルを読み取ったり更新したりするためのデータファイルへのアクセスを提供します。
CICSの機能
CICSの特徴は次のとおりです。
CICSは、独自のプロセッサー・ストレージを管理し、複数のプログラムの実行を処理する独自のタスク・マネージャーを持ち、独自のファイル管理機能を提供するため、それ自体がオペレーティング・システムです。
CICSは、バッチオペレーティングシステムでオンライン環境を提供します。送信されたジョブはすぐに実行されます。
CICSは、一般化されたトランザクション処理インターフェースです。
CICSはバックエンドのオペレーティングシステムでバッチジョブとして実行されるため、2つ以上のCICS領域を同時に持つことができます。
CICS自体がオペレーティングシステムとして機能します。その仕事は、アプリケーションプログラムをオンラインで実行するための環境を提供することです。CICSは、1つの領域、パーティション、またはアドレス・スペースで実行されます。CICSは、その下で実行されるプログラムのスケジューリングを処理します。CICSはバッチ・ジョブとして実行され、コマンドPREFIX CICS *を発行することにより、スプール内でそれを表示できます。CICSによって提供される5つの主要なサービスがあります。これらのサービスはすべて一緒にタスクを実行します。
CICS環境
以下は、ステップバイステップで詳細に説明するサービスです。
- システムサービス
- データ通信サービス
- データ処理サービス
- アプリケーションプログラミングサービス
- 監視サービス
- システムサービス
CICSは、システム内のリソースの割り振りまたは割り振り解除を管理するための制御機能を次のように維持します。
Task Control−タスク制御は、タスクのスケジューリングおよびマルチタスク機能を提供します。すべてのCICSタスクの状況を処理します。Task Controlは、並行CICSタスク間でプロセッサー時間を割り当てます。これは呼ばれますmultitasking。CICSは、最も重要なタスクへの応答時間を優先しようとします。
Program Control−プログラム制御は、アプリケーションプログラムのロードとリリースを管理します。タスクが開始されるとすぐに、タスクを適切なアプリケーションプログラムに関連付ける必要があります。多くのタスクが同じアプリケーションプログラムを使用する必要があるかもしれませんが、CICSはコードのコピーを1つだけメモリにロードします。各タスクはこのコードを個別に処理するため、多くのユーザーが、アプリケーションプログラムの同じ物理コピーを同時に使用しているトランザクションを実行できます。
Storage Control− Storage Controlは、メインストレージの取得と解放を管理します。ストレージ制御は、動的ストレージを取得、制御、および解放します。動的ストレージは、入出力領域、プログラムなどに使用されます。
Interval Control −間隔制御はタイマーサービスを提供します。
データ通信サービス
データ通信サービスは、アプリケーション・プログラムからのデータ通信要求を処理するために、BTAM、VTAM、TCAMなどの通信アクセス方式とインターフェースします。
CICSは、基本マッピング・サポート(BMS)を使用して、端末ハードウェアの問題を処理する負担からアプリケーション・プログラムを解放します。
CICSは、同じシステム内の複数のCICS領域が通信できるマルチリージョン操作(MRO)を提供します。
CICSは、システム内のCICS領域が別のシステム上のCICS領域と通信できるシステム間通信(ISC)を提供します。
データ処理サービス
データ処理サービスは、BDAM、VSAMなどのデータアクセス方法とインターフェースします。
CICSは、アプリケーション・プログラムからのデータ処理要求の処理を容易にします。CICSは、アプリケーション・プログラマーに、データ・セットとデータベースへのアクセスおよび関連する操作を処理するための一連のコマンドを提供します。
データ処理サービスは、IMS / DB、DB2などのデータベース・アクセス方式とインターフェースを取り、アプリケーション・プログラムからのデータベース要求の処理を容易にします。
CICSは、同時レコード更新の制御、タスク異常終了時のデータの保護、およびシステム障害時のデータの保護により、データの整合性の管理を容易にします。
アプリケーションプログラミングサービス
アプリケーションプログラミングサービスは、アプリケーションプログラムとインターフェイスします。CICSのアプリケーションプログラミングサービスは、コマンドレベル変換、CEDF(デバッグ機能)、CECI(コマンドインタープリター機能)などの機能を提供します。今後のモジュールでさらに詳しく説明します。
監視サービス
Monitoring Servicesは、CICSアドレス・スペース内のさまざまなイベントをモニターします。これは、システムの調整に使用できる一連の統計情報を提供します。
CICSがどのように機能するかをよりよく理解するには、CICSで使用される基本的な用語についての知識が必要です。アプリケーション・プログラムは、リモートおよびローカルの端末およびサブシステムとの通信にCICSを使用します。
IBM3270ターミナル
3270情報表示システムは、ディスプレイおよびプリンター端末のファミリーです。IBMコントローラーを介してメインフレームに接続するために3270端末が使用されていました。現在、3270エミュレーションソフトウェアが利用可能です。つまり、通常のPCでも3270端末として使用できます。3270端末はダム端末であり、それ自体は処理を行いません。すべての処理は、アプリケーションプログラムによって実行される必要があります。IBM端末は次のコンポーネントで構成されています-
CRTモニター
CRTモニターには、アプリケーションプログラムの出力フィールドまたは入力フィールドが表示されます。CRTモニターの3278モデルのスクリーンショットを以下に示します。以下の特徴があります-
1920文字を表示できます。
これらの1920文字の位置は、それぞれ個別にアドレス指定できます。
COBOLアプリケーションプログラムは、画面上のすべての位置にデータを送信できます。
フィールドの強度、保護、非保護などの表示特性は、BMSを使用して設定できます。これについては、今後のモジュールで詳しく説明します。

キーボード
IBMキーボードのキーは、次の2つのカテゴリに分類されます-
Non-AID Keys−アルファベット、数字、句読点などの他のすべてのキーは、非補助キーです。ユーザーが非補助キーを使用してテキストまたは数字を入力すると、CICSはユーザーが何かを入力しているかどうかさえ知りません。
AID Keys− AIDキーは、アテンションIDキーと呼ばれます。CICSは、AIDキーのみを検出できます。すべての入力を入力した後、ユーザーがAIDキーの1つを押した場合にのみ、CICSが制御を引き継ぎます。AIDキー:ENTER、PF1からPF24、PA1からPA3、CLEAR。AIDキーはさらに2つのカテゴリに分類されます-
PF Keys−PFキーはファンクションキーと呼ばれます。PFキーを使用すると、端末からCICSにデータを転送できます。PFキーは、ENTERおよびPF1〜PF24です。
PA Keys− PAキーは、プログラムアクセスキーと呼ばれます。PAキーでは、端末とCICS間でデータを転送することはできません。PAキーは、PA1からPA3およびCLEARです。
トランザクション
CICSプログラムは、トランザクションを介して呼び出されます。CICSトランザクションは、アプリケーション内の論理的に関連するプログラムのコレクションです。アプリケーション全体を論理的にいくつかのトランザクションに分割することができます。
1〜4文字の長さのトランザクション識別子は、ユーザーが実行したいトランザクションを識別するために使用されます。
プログラマーは、1つのプログラムを、その特定のトランザクションのすべてのアプリケーションプログラムを呼び出すために使用されるトランザクション識別子にリンクします。
仕事
タスクは、ユーザーに固有の作業単位です。
ユーザーは、トランザクション識別子の1つを使用してアプリケーションを呼び出します。CICSは、トランザクションIDを検索して、要求された作業を実行するために最初に呼び出すプログラムを見つけます。作業を行うためのタスクを作成し、前述のプログラムに制御を移します。
トランザクションは、いくつかのタスクを通じて完了することができます。
タスクは、タスクを開始した端末との間でデータを送受信できます。ファイルの読み取りと書き込みが可能で、他のタスクも開始できます。
タスクとトランザクション
トランザクションとタスクの違いは、複数のユーザーがトランザクションを呼び出すことができますが、各ユーザーが独自のタスクを開始することです。
LUW
LUWはLogicalUnit ofWorkの略です。LUWは、作業の一部を完全に実行するか、まったく実行しないようにする必要があると述べています。タスクには、CICSの複数の論理作業単位を含めることができます。これについては、今後のモジュールで詳しく説明します。
応用
アプリケーションは、論理的にグループ化された一連のプログラムであり、エンドユーザーの特定のタスクを完了するために使用されるいくつかのトランザクションを形成します。
前述の5つのCICSシステム・コンポーネントは、CICSシステム・プログラムの便利なグループであり、それぞれが独自の特殊な機能を実行します。IBM提供のCICS制御プログラムと制御テーブルで構成されるCICSNucleusとして知られる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には、プログラム名またはマップセット名、タスク使用カウンター、言語、サイズ、メインストレージアドレス、ロードライブラリアドレスなどが含まれます。
プログラム名またはマップセット名は、PPTテーブル内で一意です。
CICSはトランザクションを受け取り、対応するプログラム名がPCTからトランザクションに割り当てられます。プログラムがロードされているかどうかをチェックします。ロードされている場合、タスク使用カウンターは1増加します。プログラムがロードされていない場合、プログラムが最初にロードされ、タスク使用カウンターが1に設定されます。PPTテーブルからロードライブラリアドレスを取得します。
FCT
FCTはファイル制御テーブルとして知られています。
ファイル名、ファイルタイプ、レコード長などが含まれます。
CICSプログラムで使用されるすべてのファイルは、FCTで宣言する必要があり、CICS自体によって開閉されます。
トランザクション
トランザクションIDTP02がCICS端末に入力されると、最初に、PCTテーブルにこのトランザクションIDに関連付けられたプログラムがあるかどうかがチェックされます。見つかった場合は、PPTテーブルをチェックインして、実行するプログラムの場所を見つけます。
プログラムがすでにメモリ内で使用可能な場合、その特定のプログラムの実行を開始します。そうでない場合は、プログラムを2次ストレージからメモリーにロードしてから、実行を開始します。
トランザクションのライフサイクル
トランザクションライフサイクルには次のステップがあります-
ステップ1
端末オペレーターは、1〜4文字のtransaction-idを入力し、ENTERキーを押すことにより、トランザクションを開始します。
ステップ2
TCPは、すべての端末の入力を定期的にチェックします。メッセージを受信すると、次のことを行います。
SCPにTIOAを作成するように指示します。
メッセージをTIOAに配置します。
制御をKCPに渡します。
ステップ3
KCPはTCPから制御を取得し、次のことを行います。
トランザクションIDとセキュリティを検証します。
SCPにタスク制御領域を作成するように指示します。
ターミナル優先度(TCTで設定)、オペレーター優先度(SNTで設定)、およびトランザクション優先度(PCTで設定)に基づいてタスクに優先度を割り当てます。
待機中のプログラムのキューにタスクを追加します。
待機中のプログラムを優先順にディスパッチします。
制御をPCPに渡します。
ステップ4
PCPはKCPから制御を取得し、次のことを行います。
プログラムを見つけて、必要に応じてロードします。
制御をアプリケーションプログラムに移します。
ステップ5
アプリケーションプログラムはPCPから制御を取得し、次のことを行います。
TCPに、メッセージをプログラムのWORKINGSTORAGE領域に配置するように要求します。
FCPにファイルからレコードを取得するように要求します。
ステップ6
FCPは、アプリケーションプログラムから制御を取得し、次のことを行います。
SCPからファイル作業領域を要求します。
このタスクがI / Oが完了するまで待機できることをKCPに通知します。
ステップ7
KCPは次のことを行います-
キュー内の次のタスクをディスパッチします。
I / Oが完了したら、古いタスクを再ディスパッチします。
制御をFCPに転送します。
ステップ8
FCPは制御をアプリケーションプログラムに戻します。
ステップ9
アプリケーションプログラムは次のことを行います-
ファイルデータを処理します。
TCPにI / Oメッセージの送信を要求します。
制御をPCPに戻します。
ステップ10
PCPは、制御をKCPに戻し、タスクの終了を要求します。
ステップ11
KCPは、タスクに割り当てられたすべてのストレージ(TIOAを除く)を解放するようにSCPに指示します。
ステップ12
TCPは次のことを行います-
出力を端末に送信します。
SCPにTIOAを解放するように要求します。
CICSトランザクションは、CICS領域で複数の操作を実行するために使用されます。IBMが提供する重要なCICSトランザクションについて詳しく説明します。
CESN
CESNは、CICS実行サインオンとして知られています。
CESNは、CICS領域へのサインオンに使用されます。
CICSにログオンするには、CICS管理者から指定されたユーザーIDとパスワードを指定する必要があります。次のスクリーンショットは、サインオン画面がどのように見えるかを示しています-
CEDA
CEDAは、CICS Execute Definition andAdministrationとして知られています。これは、CICSシステム管理者がCICSテーブルエントリおよびその他の管理アクティビティを定義するために使用します。
CEMT
CEMTは、CICS実行マスター端末として知られています。これは、CICS環境の状況を照会および更新するため、およびその他のシステム操作のために使用されます。
CEMTコマンドを使用して、トランザクション、タスク、ファイル、プログラムなどを管理できます。
可能なすべてのオプションを取得するには、CEMTと入力してEnterキーを押します。すべてのオプションが表示されます。
CEMTは基本的に、新しいプログラムをCICSにロードするため、またはプログラムまたはマップセットが変更された後にプログラムの新しいコピーをCICSにロードするために使用されます。
例
表示されているファイルのステータスを上書きして変更することができます。次の例は、ファイルを閉じる方法を示しています-
CEMT ** Press ENTER & Following Screen is displayed ** STATUS: ENTER ONE OF THE FOLLOWING Inquire Perform Set ** Command to close a file ** CEMT SET FILE (file-name) CEMT I FILE (file-name)
CECI
CECIは、CICS実行コマンドインタープリターとして知られています。多くのCICSコマンドは、CECIを使用して実行できます。
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メッセージとして知られています。これは、CICS異常終了コードの説明と理由を見つけるために使用されます。
例
次の例は、異常終了コードの詳細を確認する方法を示しています-
CMAC abend-code
CESF
CESFは、CICS実行サインオフとして知られています。これは、CICS領域からサインオフするために使用されます。
例
次の例は、CICS領域からログオフする方法を示しています-
CESF LOGOFF
CEBR
CEBRは、CICS Execute Temporary storageBrowseとして知られています。一時記憶域キューまたはTSQの内容を表示するために使用されます。
CEBRは、デバッグ中にキューの項目が正しく書き込まれ、取得されているかどうかを確認するために使用されます。TSQについては、今後のモジュールで詳しく説明します。
例
次の例は、CEBRコマンドを呼び出す方法を示しています-
CEBR queue-id
CICSの概念
各コマンドは、一連のCICSマクロを実行することで実行できます。概念をよりよく理解するのに役立ついくつかの基本的な機能について説明します-
マルチタスク
オペレーティングシステムのこの機能により、複数のタスクを同時に実行できます。タスクは、同じプログラムを共有している場合と、異なるプログラムを使用している場合があります。CICSは、独自の領域でタスクをスケジュールします。
マルチスレッド
オペレーティングシステムのこの機能により、同じプログラムを共有して複数のタスクを同時に実行できます。マルチスレッドを可能にするには、アプリケーションプログラムはre-entrant program オペレーティングシステムまたは quasi-reentrant CICSの下。
再入可能
再入可能プログラムとは、それ自体を変更せず、オペレーティングシステムによって中断された後、それ自体に再入して処理を続行できるプログラムです。
準再入可能
準再入可能プログラムは、CICS環境での再入可能プログラムです。CICSは、タスクごとに固有のストレージ領域を取得することにより、再入可能性を保証します。CICSコマンド間で、CICSはCPUリソースを使用する排他的権利を持ち、他のタスクの他のCICSコマンドを実行できます。
多くのユーザーが同じプログラムを同時に使用している場合があります。これは私たちが呼ぶものですmulti-threading。たとえば、50人のユーザーがプログラムAを使用していると仮定します。ここで、CICSは、そのプログラムに50個の作業用ストレージを提供しますが、1つのプロシージャー部門を提供します。そして、このテクニックはとして知られていますquasi-reentrancy。
CICSプログラムは、メインフレームでCOBOL言語で記述されています。簡単なCOBOL-CICSプログラムの作成、コンパイル、および実行について説明します。
CICSプログラム
CICS出力画面にメッセージを表示する単純なCOBOL-CICSプログラムを作成します。このプログラムは、COBOL-CICSプログラムの実行に関連するステップを示すためのものです。以下は、簡単なプログラムをコーディングする手順です。
ステップ1
メインフレームにログインし、TSOセッションを開きます。
ステップ2
プログラムをコーディングする新しいPDSを作成します。
ステップ3
PDS内に新しいメンバーを作成し、次のプログラムをコーディングします-
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. FILE SECTION. WORKING-STORAGE SECTION. 01 WS-MESSAGE PIC X(40). 01 WS-LENGTH PIC S9(4) COMP. PROCEDURE DIVISION. A000-MAIN-PARA. MOVE 'Hello World' TO WS-MESSAGE MOVE '+12' TO WS-LENGTH EXEC CICS SEND TEXT FROM (WS-MESSAGE) LENGHT(WS-LENGTH) END-EXEC EXEC CICS RETURN END-EXEC.
ステップ4
プログラムをコーディングした後、それをコンパイルする必要があります。次のJCLを使用してプログラムをコンパイルできます-
//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) NEW.
ステップ7
関連するトランザクションIDを使用してプログラムを実行します。Transaction-idは管理者によって提供されます。次の出力が表示されます-
プログラムのコンパイル
次のフローチャートは、COBOL-CICSプログラムのコンパイルに使用されるステップを示しています。
翻訳者
トランスレーターの機能は、CICSコマンドの構文エラーをチェックすることです。それらを同等のCOBOLステートメントに変換します。
コンパイラ
コンパイラーの機能は、COBOLコピーブックを拡張することです。ソースコードの構文エラーをチェックした後、コードをコンパイルします。
リンケージエディタ
リンケージエディタの機能は、さまざまなオブジェクトモジュールをリンクして、単一のロードモジュールを作成することです。
BMSは、基本マッピングサポートとして知られています。アプリケーションは、端末とCICSプログラム間のブリッジとして機能するフォーマット済み画面で構成されます。端末とCICSプログラム間で通信を行うために、CICS端末入出力サービスを使用します。BMSを使用して、適切な位置と属性を持つ画面デザインを作成します。以下はBMSの機能です-
BMSは、端末とCICSプログラム間のインターフェースとして機能します。
画面のデザインとフォーマットは、アプリケーションのロジックとは別のものです。
BMSは、アプリケーションハードウェアを独立させます。
フォーマットされた画面
以下に示す画面はメニュー画面であり、BMSを使用して設計できます。その要点は以下の通りです−
画面には、タイトル、日付、および表示されるその他の情報を含めることができます。
オプション1、2、および3は、画面のタイトルである名前のないフィールドです。
[選択]フィールドに、入力を入力する必要があります。次に、この入力は、さらに処理するためにCICSプログラムに送信されます。
画面下部にアクションキーが表示されます。
すべてのフィールドと画面自体は、BMSマクロで定義されています。マップ全体が定義されたら、JCLを使用してマップをアセンブルできます。
BMSの基本用語
以下は、今後のモジュールで使用する基本的な用語です。
地図
マップは、BMSマクロを使用して設計できる単一画面形式です。1〜7文字を含む名前を付けることができます。
マップセット
マップセットは、ロードモジュールを形成するためにリンクされたマップのコレクションです。PPTエントリが必要です。1〜7文字の名前を付けることができます。
BMSマクロ
BMSマップは、画面を管理するためにアセンブリ言語で記述されたプログラムです。画面の定義に使用される3つのマクロは、DFHMSD、DFHMDI、およびDFHMDFです。
DFHMSD
DFHMSDマクロは、マップセット定義を生成します。これは、マップセットを開始していることを示すマクロ識別子です。マップセット名はロードモジュール名であり、PPTテーブルのエントリが存在する必要があります。次の表に、DFHMSDで使用できるパラメーターのリストを示します。
シニア番号 パラメータと説明 1 TYPE
TYPEは、マップタイプを定義するために使用されます。TYPE =
MAPの場合-物理マップが作成され
ます
DSECT-シンボリックマップが作成されます&& SYSPARM-物理およびシンボリック、両方が作成されます
FINAL-マップセットコーディングの終了を示します。2 MODE
MODEは、入出力操作を示すために使用されます。IF MODE =
IN-入力マップの場合のみ
OUT-出力マップの場合のみ
INOUT入力マップと出力マップの両方の場合3 LANG
LANG = ASM / COBOL / PL1
アプリケーション・プログラムにコピーするために、DSECT構造の言語を決定します。4 STORAGE
STORAGE =
AUTOの場合-マップセットごとに個別のシンボリックマップ領域を取得するBASE-
複数のマップセットからのシンボリックマップに同じストレージベースを使用する5 CTRL
CRTLは、デバイス制御要求を定義するために使用されます。CTRL =
FREEKBの場合-キーボードのロックを解除するには
FRSET-MDTをゼロステータスにリセットするにはALARM-
画面表示時にアラームを設定するに
はPRINT-プリンタに送信するマップセットを指定するには6 TERM
TERM = typeは、デバイスの独立性を保証します。3270端末以外が使用されている場合に必要です。
7 TIOAPFX
TIOAPFX = YES / NO
YES-BMSコマンドがTIOAに正しくアクセスするためのプレフィックススペース(12バイト)を予約します。CICSコマンドレベルに必要です。例
次の例は、マップセット定義をコーディングする方法を示しています。
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マクロ内で使用するパラメーターを示しています。
シニア番号 パラメータと説明 1 SIZE
SIZE =(Line、Column)
このパラメーターは、マップのサイズを示します。BMSを使用すると、複数のマップを使用して画面を作成できます。このパラメーターは、単一のマップセットで複数のマップを使用している場合に重要になります。2 LINE
マップの開始行番号を示します。
3 COLUMN
マップの開始列番号を示します。
4 JUSTIFY
これは、マップ全体または左寄せまたは右寄せするマップフィールドを指定するために使用されます。
5 CTRL
CRTLは、デバイス制御要求を定義するために使用されます。CTRL =
FREEKBの場合-キーボードのロックを解除するには
FRSET-MDTをゼロステータスにリセットするにはALARM-
画面表示時にアラームを設定するにはPRINT-
プリンタに送信するマップを指定するには6 TIOAPFX
TIOAPFX =はい/いいえ
YES-BMSコマンドがTIOAに正しくアクセスするためのプレフィックススペース(12バイト)を予約します。CICSコマンドレベルに必要です。
例
次の例は、マップ定義をコーディングする方法を示しています-
MAPSTD DFHMDI SIZE = (20,80), X LINE = 01, X COLUMN = 01, X CTRL = (FREEKB,FRSET)
DFHMDF
DFHMDFマクロは、フィールド名を定義するために使用されます。DFHMDFマクロがコーディングされるフィールド名が記載されています。このフィールド名は、プログラム内で使用されます。プログラム内で使用したくない定数フィールドに対してフィールド名を書き込むことはありません。次の表は、DFHMDFマクロ内で使用できるパラメーターのリストを示しています。
シニア番号 パラメータと説明 1 POS
これは、フィールドが表示される画面上の位置です。フィールドはその属性バイトで始まるため、POS =(1,1)とコーディングすると、そのフィールドの属性バイトは列1の1行目にあり、実際のデータは列2から始まります。
2 LENGTH
これはフィールドの長さであり、属性バイトはカウントされません。
3 INITIAL
これは、出力フィールドの文字データです。これを使用して、画面のラベルとタイトルを指定し、プログラムから独立させます。たとえば、メニュー画面の最初のフィールドには、INITIAL = 'MENU'とコーディングします。
4 JUSTIFY
これは、マップ全体または左寄せまたは右寄せするマップフィールドを指定するために使用されます。
5 ATTRB
ATTRB =(ASKIP / PROT / UNPROT、NUM、BRT / NORM / DRK、IC、FSET)フィールドの属性を記述します。
ASKIP-自動スキップ。このフィールドにデータを入力することはできません。カーソルは次のフィールドにスキップします。
PROT-保護されたフィールド。このフィールドにデータを入力することはできません。データを入力すると、入力禁止状態になります。
UNPROT-保護されていないフィールド。データを入力でき、これはすべての入力フィールドに使用されます。
NUM-数値フィールド。数字(0から9)と特殊文字( '。'と '-')のみが許可されます。
BRT-フィールドの明るい表示(ハイライト)。
NORM-通常の表示。
DRK-暗い表示。
IC-カーソルを挿入します。カーソルはこのフィールドに置かれます。ICが複数回指定されている場合、カーソルは最後のフィールドに置かれます。
FSET-フィールドセット。MDTは、フィールドが実際にユーザーによって変更されたかどうかに関係なく、フィールドデータが端末からホストコンピューターに送信されるように設定されています。
6 PICIN
PICINは、PICIN = 9(8)のように入力として使用されるデータフィールドに適用されます。
7 PICOUT
PICINは、PICOUT = Z(8)のように出力として使用されるデータフィールドに適用されます。
例
次の例は、フィールド定義をコーディングする方法を示しています-
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)
BMSは、ユーザーが入力したデータを受け取り、それをシンボリックマップ領域にフォーマットします。アプリケーションプログラムは、シンボリックマップに存在するデータにのみアクセスできます。アプリケーションプログラムがデータを処理し、出力がシンボリックマップに送信されます。BMSは、シンボリックデータの出力を物理マップとマージします。
物理的な地図
物理マップは、ロードライブラリ内のロードモジュールであり、マップの表示方法に関する情報が含まれています。
マップ内のすべてのフィールドの属性とその位置に関する詳細が含まれています。
これには、特定の端末のマップの表示形式が含まれています。
これは、BMSマクロを使用してコーディングされています。これは個別にアセンブルされ、CICSライブラリーにリンク編集されます。
シンボリックマップ
シンボリックマップは、図書館にあるコピーブックです。コピーブックは、CICSアプリケーションプログラムが端末とデータを送受信するために使用します。
これには、プログラムのWORKINGSTORAGEセクションにコピーされるすべての変数データが含まれています。
すべての名前付きフィールドがあります。アプリケーションプログラマは、これらのフィールドを使用して、データをマップに読み書きします。
スキッパーとストッパーフィールド
保護されていない名前付きフィールドの場合、マップで長さ10を指定した場合、これは、名前フィールドが10を超えることのできない値を取ることができることを意味します。ただし、CICSを使用してこのマップを表示し、このフィールドの値の入力を開始すると、画面では、10文字以上、つまり画面の最後まで入力でき、次の行にも入力できます。これを防ぐために、スキッパーフィールドまたはストッパーフィールドを使用します。スキッパーフィールドは通常、名前付きフィールドの後に指定された長さ1の名前のないフィールドです。
スキッパーフィールド
名前付きの保護されていないフィールドの後にスキッパーフィールドを配置すると、値を入力しているときに、指定された長さに達すると、カーソルは自動的に次の保護されていないフィールドに移動します。次の例は、スキッパーフィールドを追加する方法を示しています-
NUMBER DFHMDF POS = (01,01), X LENGTH = 5, X ATTRB = (UNPROT,IC) DFHMDF POS = (01,07), X LENGTH = 1, X ATTRB = (ASKIP)
ストッパーフィールド
名前付きの保護されていないフィールドの後にストッパーフィールドを配置すると、値の入力中に、指定された長さに達すると、カーソルはその位置を停止します。次の例は、ストッパーフィールドを追加する方法を示しています-
NUMBER DFHMDF POS = (01,01), X LENGTH = 5, X ATTRB = (UNPROT,IC) DFHMDF POS = (01,07), X LENGTH = 1, X ATTRB = (PROT)
属性バイト
フィールドの属性バイトには、フィールドの物理プロパティに関する情報が格納されます。次の図と表は、各ビットの重要性を説明しています。
ビット位置 説明 ビット設定 0&1 ビット2から7の内容によって決定されます 2&3 保護とシフト 00-保護されていない英数字
01-保護されていない数値
10-保護された停止
11-保護されたスキップ4&5 強度 00-通常
01-通常
10-明るい
11-表示なし(暗い)6 常にゼロでなければなりません 7 変更されたデータタグ 0-フィールドは変更されていません
1-フィールドは変更されています変更されたデータタグ
変更されたデータタグ(MDT)は、属性バイトの最後のビットです。
MDTは、1ビットを保持するフラグです。値をシステムに転送するかどうかを指定します。
フィールド値が変更されると、デフォルト値は1になります。
MDTが0の場合、データを転送できません。MDTが1の場合、データを転送できます。
地図を送る
send mapコマンドは、フォーマットされた出力を端末に書き込みます。アプリケーションプログラムから端末にマップを送信するために使用されます。次のコードセグメントは、端末にマップを送信する方法を示しています-
EXEC CICS SEND MAP('map-name') MAPSET('mapset-name') [FROM(data-area)] [LENGTH(data_value)] [DATAONLY] [MAPONLY] [CURSOR] [ERASE/ERASEAUP] [FREEKB] [FRSET] END-EXEC
次の表に、sendmapコマンドで使用されるパラメータとその重要性を示します。
シニア番号 パラメータと説明 1 Map-name
送信したい地図の名前です。それが必須です。
2 Mapset-name
これは、マップ名を含むマップセットの名前です。マップ名と同じでない限り、マップセット名が必要です。
3 FROM
別のDSECT名を使用することにした場合に使用されます。SENDMAPコマンドとともにオプションFROM(dsect-name)を使用する必要があります。
4 MAPONLY
これは、プログラムからのデータがマップにマージされず、マップ内の情報のみが送信されることを意味します。
5 DATAONLY
これは、MAPONLYの論理的な反対です。これを使用して、すでに作成されているディスプレイの変数データを変更します。プログラムからのデータのみが画面に送信されます。マップ内の定数は送信されません。
6 ERASE
送信しているものが表示される前に、画面全体が消去されます。
7 ERASEUP
保護されていないフィールドのみが消去されます。
8 FRSET
フラグリセットは、送信するものがそこに配置される前に、画面上のすべてのフィールドの属性バイトの変更されたデータタグをオフにします。
9 CURSOR
ターミナル画面にカーソルを置くために使用できます。カーソルは、フィールドのL部分に-1を移動してから、マップを送信することで設定できます。
10 ALARM
可聴アラームが鳴ります。
11 FREEKB.
マップまたはSENDコマンドのいずれかでFREEKBを指定すると、キーボードのロックが解除されます。
12 PRINT
これにより、SENDコマンドの出力をプリンターで印刷できます。
13 FORMFEED
これにより、出力が印刷される前に、プリンタは用紙を次のページの先頭に戻します。
地図を受け取る
端末から入力を受け取りたい場合は、RECEIVEMAPコマンドを使用します。MAPおよびMAPSETパラメーターは、SENDMAPコマンドの場合とまったく同じ意味を持ちます。次のコードセグメントは、マップを受信する方法を示しています-
EXEC CICS RECEIVE MAP('map-name') MAPSET('mapset-name') [INTO(data-area)] [FROM(data-area)] [LENGTH(data_value)] END-EXEC
マップセットの実行
マップセットを開発して実行するには、次の手順が必要です。
Step 1 −TSOセッションを開きます。
Step 2 −新しいPDSを作成します。
Step 3 −要件に応じて、新しいメンバーにマップセットをコーディングします。
Step 4 −CICS管理者から提供されたJCLを使用してマップセットをアセンブルします。
Step 5 −CICSセッションを開きます。
Step 6 −コマンドを使用してプログラムをインストールします−
CEMT SET PROG(mapset-name)NEW
Step 7 −次のコマンドを入力して、マップを端末に送信します−
CECI SEND MAP(map-name)MAPSET(mapset-name)ERASE FREEKB
すべてのアプリケーションプログラムには、CICSと対話するためのインターフェースが必要です。EIB(実行インターフェース・ブロック)は、アプリケーション・プログラムがCICSと通信できるようにするためのインターフェースとして機能します。EIBには、プログラムの実行中に必要な情報が含まれています。
制限されたCOBOL動詞
CICSプログラムのコーディング中は、制御をMVSに直接戻すコマンドを使用することはできません。これらのCOBOL動詞をコーディングすると、コンパイルエラーは発生しませんが、予期しない結果が生じる可能性があります。以下は、CICSプログラムで使用してはならないCOBOL動詞です。
Open、Read、Write、Rewrite、Close、Delete、StartなどのファイルI / Oステートメント。CICSのすべてのファイルI / Oは、ファイル制御モジュールによって処理され、READ、WRITE、REWRITE、DELETEなどの独自のステートメントのセットがあります。これについては、次のモジュールで説明します。
ファイルセクションと環境部門は必要ありません。
Accept、Date / Timeなどのオペレーティングシステム関数を呼び出すCOBOLステートメントは使用できません。
DISPLAY、MERGE、STOP RUN、およびGOBACKは使用しないでください。
インターフェイスブロックの実行
実行インターフェース・ブロック(EIB)は、すべてのプログラムに対してCICSによって自動的にロードされる制御ブロックです。
EIBはタスクに固有であり、タスクの期間中存在します。これには、タスクに対応するシステム関連情報のセットが含まれています。
これには、アプリケーション・プログラムの実行中にCICSによって使用されるトランザクションID、時刻、日付などに関する情報が含まれています。
タスクの一部として実行されるすべてのプログラムは、同じEIBにアクセスできます。
実行時のEIBのデータは、CEDFモードでプログラムを実行することで表示できます。
EIBフィールド
次の表に、EIBに存在するフィールドのリストを示します。
EIBフィールド 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プログラムは、以下の3つのカテゴリーに分類され、1つずつ説明します。
- 非会話プログラム
- 会話プログラム
- 疑似会話プログラム-次のモジュールで説明します
非会話プログラム
非会話型プログラムを実行している間、人間の介入は必要ありません。プログラムの開始時に、必要なすべての入力が提供されます。
これらは、バッチモードで実行されるバッチプログラムに似ています。したがって、CICSでは、それらが開発されることはめったにありません。
一定の時間間隔で一連の画面を表示するためだけに使用されていると言えます。
例
次の例は、CICS端末に出力として「HELLOWORLD」を表示するだけの非会話型プログラムを示しています。
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-MESSAGE PIC X(30). PROCEDURE DIVISION. ******************************************************** * SENDING DATA TO SCREEN * ******************************************************** MOVE 'HELLO WORLD' TO WS-MESSAGE EXEC CICS SEND TEXT FROM (WS-MESSAGE) END-EXEC ******************************************************** * TASK TERMINATES WITHOUT ANY INTERACTION FROM THE USER* ******************************************************** EXEC CICS RETURN END-EXEC.
会話プログラム
端末にメッセージを送信し、ユーザーからの応答を受信することを、 conversation。オンラインアプリケーションは、SENDコマンドとRECEIVEコマンドのペアによって、ユーザーとアプリケーションプログラム間の会話を実現します。会話プログラムの要点は次のとおりです。
システムは画面にメッセージを送信し、ユーザーの応答を待ちます。
ユーザーが応答するのにかかる時間は、 Think Time。この時間はかなり長く、これは会話型プログラムの大きな欠点です。
ユーザーは必要な入力を提供し、AIDキーを押します。
アプリケーションはユーザーの入力を処理し、出力を送信します。
プログラムは最初にメインストレージにロードされ、タスクが終了するまで保持されます。
例
次の例は、ユーザーからの入力を受け取り、CICS端末に出力と同じ入力を表示する変換プログラムを示しています。
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-MESSAGE PIC X(30) VALUE SPACES. PROCEDURE DIVISION. MOVE 'ENTER MESSAGE' TO WS-MESSAGE ******************************************************** * SENDING DATA FROM PROGRAM TO SCREEN * ******************************************************** EXEC CICS SEND TEXT FROM (WS-MESSAGE) END-EXEC ******************************************************** * GETTING INPUT FROM USER * ******************************************************** EXEC CICS RECEIVE INTO(WS-MESSAGE) END-EXEC EXEC CICS SEND TEXT FROM (WS-MESSAGE) END-EXEC ******************************************************** * COMMAND TO TERMINATE THE TRANSACTION * ******************************************************** EXEC CICS RETURN END-EXEC.
これまで、非変換および変換プログラムについて説明してきました。変換プログラムには大きな欠点があります。think timeかなり高いです。この問題を克服するために、疑似変換プログラミングが登場しました。次に、疑似変換プログラムについて詳しく説明します。
疑似変換プログラム
以下は、疑似変換プログラムで発生する一連のイベントです。
Step 1 −システムは画面にメッセージを送信してトランザクションを終了し、ユーザー入力を受信したときに開始するトランザクションを指定します。
Step 2−システムは、このトランザクションで使用されるリソースを、システムで実行されている他のトランザクションに割り当てます。したがって、ユーザーが入力を行うまで、疑似変換プログラムのリソースを利用できます。
Step 3−システムは一定の時間間隔で端末入力をポーリングします。入力を受信すると、それが処理され、出力が表示されます。
Step 4 −アプリケーションプログラムは、必要に応じてメインストレージにロードされ、使用されていないときに解放されます。

疑似変換技術
疑似会話で注意すべき重要な点は、すべてのタスク間でデータを渡すことです。データを渡すための手法について説明します。
COMMAREA
COMMAREAはコミュニケーションエリアとして知られています。COMMAREAは、タスク間でデータを渡すために使用されます。次の例は、WSCOMMAREAおよびWS-COMMAREA-LENGTHが作業用ストレージセクションで宣言されているCOMMAREAを渡す方法を示しています。
EXEC CICS RETURN
TRANSID ('transaction-id')
COMMAREA (WS-COMMAREA)
LENGTH (WS-COMMAREA-LENGTH)
END-EXEC.
DFHCOMMAREA
DFHCOMMAREAは、CICSによってすべてのタスクに提供される特別なメモリー領域です。
あるプログラムから別のプログラムにデータを渡すために使用されます。プログラムは、同じトランザクションまたは異なるトランザクションに存在することもできます。
これは、プログラムのリンケージセクションで01レベルで宣言されています。
WS-COMMAREAと同じpicture句が必要です。
MOVEステートメントを使用して、データをDFHCOMMAREAからWS-COMMAREAに戻すことができます。
MOVE DFHCOMMAREA TO WS-COMMAREA.
例
マップを送信した後、タスクは終了し、ユーザーの応答を待ちます。タスクは終了しましたが、トランザクションは終了していないため、この段階でデータを保存する必要があります。このトランザクションを再開する場合は、タスクの以前のステータスが必要になります。ユーザーが入力を入力します。これは、RECEIVE MAPコマンドで受信してから、検証する必要があります。次の例は、COMMAREAとDFHCOMMAREAを宣言する方法を示しています。
WORKING-STORAGE SECTION.
01 WS-COMMAREA.
05 WS-DATA PIC X(10).
LINKAGE SECTION.
01 DFHCOMMAREA.
05 LK-DATA PIC X(10).
擬似コード
以下に示すのは、疑似プログラミングで使用する疑似コードのロジックです。
MOVE DFHCOMMAREA TO WS-COMMAREA
IF EIBCALEN = 0
STEP1: SEND MAP
STEP2: MOVE <internal-transaction-id1> to WS-COMMAREA
STEP3: ISSUE CONDITIONAL RETURN
ELSE
IF WS-COMMAREA = <internal-transaction-id1>
STEP4: RECEIVE MAP
STEP5: PROCESS DATA
STEP6: SEND OUTPUT MAP
STEP7: MOVE <internal-transaction-ID2> to WS-COMMAREA
STEP8: ISSUE CONDITIONAL RETURN
END-IF
END-IF
STEP9: REPEAT STEP3 TO STEP7 UNTIL EXIT
例
次の例は、疑似変換プログラムを示しています。
******************************************************************
* PROGRAM TO DEMONSTRATE PSEUDO-CONVERSATION *
******************************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-MESSAGE PIC X(30).
01 WS-COMMAREA PIC X(10) VALUE SPACES.
LINKAGE SECTION.
01 DFHCOMMAREA PIC X(10).
PROCEDURE DIVISION.
MOVE DFHCOMMAREA TO WS-COMMAREA
IF WS-COMMAREA = SPACES
******************************************************************
* TRANSACTION GETTING EXECUTED FOR THE FIRST TIME *
******************************************************************
MOVE 'HELLO' TO WS-MESSAGE
EXEC CICS SEND TEXT
FROM (WS-MESSAGE)
END-EXEC
MOVE 'FIRST' TO WS-COMMAREA
******************************************************************
* TASK ENDS AS A RESULT OF RETURN. IF AID KEY PRESSED, NEXT *
* TRANSACTION SHOULD BE TP002. DATA PASSED FROM WS-COMMAREA TO *
* DFHCOMMAREA *
******************************************************************
EXEC CICS RETURN
TRANSID('TP002')
COMMAREA(WS-COMMAREA)
END-EXEC
******************************************************************
* IF COMMAREA IS NOT EMPTY , THEN TP002 HAS BEEN EXECUTED ONCE *
* ALREADY, USER INTERACTION IS FACILITATED BY RECEIVE *
******************************************************************
ELSE
EXEC CICS RECEIVE
INTO(WS-MESSAGE)
END-EXEC
EXEC CICS SEND TEXT
FROM (WS-MESSAGE)
END-EXEC
******************************************************************
* TASK ENDS AS A RESULT OF RETURN, NO NEXT TRANSACTION SPECIFIED *
* TO BE EXECUTED *
******************************************************************
EXEC CICS RETURN
END-EXEC
END-IF.
疑似変換の利点
疑似変換の利点は次のとおりです-
リソースを最大限に活用します。プログラムが一時的に中断されるとすぐにリソースが解放されます。
会話モードのように見えます。
応答時間が長くなります。
戻りステートメント
以下は、CICSで使用される2種類のreturnステートメントです。
リターン-1
次の無条件のreturnステートメントが発行されると、タスクとトランザクション(プログラム)は終了します。
EXEC CICS RETURN
END-EXEC.
リターン-2
次の条件付き戻り値、つまりTRANSIDステートメントを使用した戻り値が発行されると、制御は実行される次のtransidとともにCICSに戻ります。次のトランザクションは、ユーザーがAIDキーを押すと開始されます。
EXEC CICS RETURN
TRANSID ('trans-id')
[COMMAREA(WS-COMMAREA)]
END-EXEC.
前のモジュールで説明したように、AIDキーはアテンション識別子キーと呼ばれます。CICSは、AIDキーのみを検出できます。すべての入力を入力した後、ユーザーがAIDキーの1つを押した場合にのみ、CICSが制御を引き継ぎます。AIDキーには、ENTER、PF1からPF24、PA1からPA3、およびCLEARが含まれます。
AIDキーの検証
ユーザーが押したキーは、EIBAIDを使用してチェックされます。
EIBAIDは1バイト長であり、3270入力ストリームで使用される実際のアテンションID値を保持します。
CICSは、次のステートメントを記述することにより、アプリケーション・プログラムで使用できる事前にコード化された変数のセットを提供します。
DFHAIDをコピー
DFHAID
DFHAIDは、CICSで事前にコード化された変数のセットを含めるためにアプリケーション・プログラムで使用されるコピーブックです。DFHAIDコピーブックには次の内容が含まれています-
01 DFHAID.
02 DFHNULL PIC X VALUE IS ' '.
02 DFHENTER PIC X VALUE IS ''''.
02 DFHCLEAR PIC X VALUE IS '_'.
02 DFHCLRP PIC X VALUE IS '¦'.
02 DFHPEN PIC X VALUE IS '='.
02 DFHOPID PIC X VALUE IS 'W'.
02 DFHMSRE PIC X VALUE IS 'X'.
02 DFHSTRF PIC X VALUE IS 'h'.
02 DFHTRIG PIC X VALUE IS '"'.
02 DFHPA1 PIC X VALUE IS '%'.
02 DFHPA2 PIC X VALUE IS '>'.
02 DFHPA3 PIC X VALUE IS ','.
02 DFHPF1 PIC X VALUE IS '1'.
02 DFHPF2 PIC X VALUE IS '2'.
02 DFHPF3 PIC X VALUE IS '3'.
02 DFHPF4 PIC X VALUE IS '4'.
02 DFHPF5 PIC X VALUE IS '5'.
02 DFHPF6 PIC X VALUE IS '6'.
02 DFHPF7 PIC X VALUE IS '7'.
02 DFHPF8 PIC X VALUE IS '8'.
02 DFHPF9 PIC X VALUE IS '9'.
02 DFHPF10 PIC X VALUE IS ':'.
02 DFHPF11 PIC X VALUE IS '#'.
02 DFHPF12 PIC X VALUE IS '@'.
02 DFHPF13 PIC X VALUE IS 'A'.
02 DFHPF14 PIC X VALUE IS 'B'.
02 DFHPF15 PIC X VALUE IS 'C'.
02 DFHPF16 PIC X VALUE IS 'D'.
02 DFHPF17 PIC X VALUE IS 'E'.
02 DFHPF18 PIC X VALUE IS 'F'.
02 DFHPF19 PIC X VALUE IS 'G'.
02 DFHPF20 PIC X VALUE IS 'H'.
02 DFHPF21 PIC X VALUE IS 'I'.
02 DFHPF22 PIC X VALUE IS '¢'.
02 DFHPF23 PIC X VALUE IS '.'.
02 DFHPF24 PIC X VALUE IS '<'.
例
次の例は、アプリケーションプログラムでDFHAIDコピーブックを使用する方法を示しています。
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY DFHAID.
PROCEDURE DIVISION.
A000-AIDKEY-PARA.
EVALUATE EIBAID
WHEN DFHAID
PERFORM A000-PROCES-PARA
WHEN DFHPF1
PERFORM A001-HELP-PARA
WHEN DFHPF3
PERFORM A001-EXIT-PARA
END-EVALUATE.
カーソル位置
マップ定義で指定された位置をオーバーライドする方法は2つあります。
1つの方法は、sendmapコマンドのCURSORオプションで行番号と列番号を基準にした画面位置を指定することです。
もう1つの方法は、接尾辞Lが付いたシンボリックマップ変数に-1を移動することです。次に、SENDMAPでCURSORオプションを指定してマップを送信します。
例
次の例は、NAMEフィールドのカーソル位置をオーバーライドする方法を示しています-
MOVE -1 TO NAMEL
EXEC CICS SEND
MAP ('map-name')
MAPSET ('name-field')
ERASE
FREEKB
CURSOR
END-EXEC.
属性を動的に変更する
マップの送信中に、マップで指定されている以外のフィールドに異なる属性を設定する場合は、プログラムでフィールドを設定することでそれをオーバーライドできます。以下は、フィールドの属性をオーバーライドするための説明です-
フィールドの属性を上書きするには、アプリケーションプログラムにDFHATTRを含める必要があります。これはCICSによって提供されます。
必要な属性はリストから選択して、「A」の接尾辞が付いたシンボリックフィールド変数に移動できます。
DFHATTRは以下の内容を保持しています-
01 CICS-ATTRIBUTES.
05 ATTR-UXN PIC X(01) VALUE SPACE.
05 ATTR-UXMN PIC X(01) VALUE '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) VALUE 'Q'.
05 ATTR-U9MBL PIC X(01) VALUE 'R'.
05 ATTR-U9D PIC X(01) VALUE '*'.
05 ATTR-U9MD PIC X(01) VALUE ')'.
05 ATTR-PXN PIC X(01) VALUE '-'.
05 ATTR-PXMN PIC X(01) VALUE '/'.
05 ATTR-PXNL PIC X(01) VALUE 'U'.
05 ATTR-PXMNL PIC X(01) VALUE 'V'.
05 ATTR-PXBL PIC X(01) VALUE 'Y'.
05 ATTR-PXMBL PIC X(01) VALUE 'Z'.
05 ATTR-PXD PIC X(01) VALUE '%'.
05 ATTR-PSN PIC X(01) VALUE '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) VALUE '@'.
05 ATTR-PSMD PIC X(01) VALUE "'".
CICSを使用すると、さまざまな方法でファイルデータにアクセスできます。処理されるトランザクションはバッチ処理されず、どのような順序にもソートされないため、ほとんどのファイルアクセスはオンラインシステムではランダムです。したがって、CICSは、通常の直接アクセス方式(VSAMおよびDAM(直接アクセス方式))をサポートします。また、データベースマネージャーを使用してデータにアクセスすることもできます。
ランダムアクセス
以下は、ランダム処理に使用されるコマンドです。
シニア番号 | コマンドと説明 |
---|---|
1 | 読んだ READコマンドは、主キーを使用してファイルからデータを読み取ります。 |
2 | 書く 書き込みコマンドは、ファイルに新しいレコードを追加するために使用されます。 |
3 | リライト REWRITEコマンドは、ファイルにすでに存在するレコードを変更するために使用されます。 |
4 | 削除 DELETEコマンドは、ファイルに存在するレコードを削除するために使用されます。 |
シーケンシャルアクセス
以下は、順次処理に使用されるコマンドです。
シニア番号 | コマンドと説明 |
---|---|
1 | STARTBR STARTBRは開始ブラウズとして知られています。 |
2 | READNEXT / READPREV STARTBRコマンドを発行しても、レコードは使用可能になりません。 |
3 | RESETBR RESETBRコマンドを使用すると、参照の途中で開始点をリセットできます。 |
4 | ENDBR ファイルの順次読み取りが終了したら、ENDBRコマンドを使用して参照を終了します。 |
多くの種類があります abendsまた、CICSアプリケーションの使用中に直面する可能性のあるエラー。ソフトウェアのハードウェアとソフトウェアの両方の問題が原因でエラーが発生する可能性があります。このモジュールでは、エラーとエラー処理について説明します。
CICSエラー
以下は、CICSアプリケーションの実行中に発生する可能性のあるCICSエラーです。
予想されるCICSエラーは、CICSシステムの状態が正常でない場合に発生します。たとえば、特定のレコードを読み取っていて、そのレコードが見つからない場合、「見つかりません」というエラーが発生します。Mapfail同様のエラーです。このカテゴリのエラーは、プログラムの明示的なロジックによって処理されます。
論理エラーは、ゼロ除算、数値フィールドの不正な文字、トランザクションIDエラーなどの理由で発生します。
ハードウェアまたはその他のシステム状態に関連するエラーは、アプリケーションプログラムの制御を超えています。たとえば、ファイルへのアクセス中に入出力エラーが発生します。
エラー処理コマンド
CICSは、エラーを識別し、プログラムでそれらを処理するためのいくつかのメカニズムを提供します。以下は、予想されるCICSエラーを処理するために使用されるコマンドです。
シニア番号 | コマンドと説明の処理 |
---|---|
1 | ハンドルコンディション ハンドル条件は、プログラムの制御を段落またはプロシージャラベルに移すために使用されます。 |
2 | 異常終了を処理する 入出力エラーなどの理由でプログラムが異常終了した場合は、Handle AbendCICSコマンドを使用して処理できます。 |
3 | 異常終了 異常終了コマンドは、タスクを意図的に終了するために使用されます。 |
4 | 条件を無視する 無視条件は、無視条件内に記載されている特定の異常終了またはエラーが発生した場合にアクションを実行したくない場合に使用されます。 |
5 | ノーハンドル どのCICSコマンドにもハンドルを指定できません。 |
CICSプログラム制御プログラム(PCP)は、アプリケーション・プログラムのフローを管理します。すべてのアプリケーションプログラムには、処理プログラムテーブルのエントリが必要です。以下は、プログラム制御サービスに使用されるコマンドです。
- XCTL
- Link
- Load
- Release
- Return
プログラムの論理レベル
CICSで実行されるアプリケーション・プログラムには、さまざまな論理レベルがあります。制御を直接受け取る最初のプログラムは、最高の論理レベル、つまりレベル1にあります。リンクされたプログラムは、リンクプログラムの次の論理レベルにあります。XCTLプログラムは同じレベルで実行されます。このモジュールの後半で、LinkとXCTLをいつ実行するかは明らかです。次の画像は論理レベルを示しています-

XCTL
XCTLの基本的な説明は次のとおりです-
XCTLコマンドは、あるプログラムから同じレベルの別のプログラムに制御を渡すために使用されます。
コントロールが戻ることは期待していません。
これはGOTOステートメントに似ています。
XCTLプログラムは、疑似会話型にすることができます。
例
次の例は、XCTLコマンドを使用して制御を別のプログラムに渡す方法を示しています。
IDENTIFICATION DIVISION.
PROGRAM-ID. PROG1.
WORKING-STORAGE SECTION.
01 WS-COMMAREA PIC X(100).
PROCEDURE DIVISION.
EXEC CICS XCTL
PROGRAM ('PROG2')
COMMAREA (WS-COMMAREA)
LENGTH (100)
END-EXEC.
このコマンドは、100バイトのデータを使用してプログラム「PROG2」に渡される制御を転送します。COMMAREAはオプションのパラメーターであり、渡されるデータを含む領域、または結果が返される領域の名前です。
リンク
リンクコマンドは、制御を下位レベルの別のプログラムに転送するために使用されます。コントロールが戻ることを期待しています。リンクされたプログラムを疑似会話型にすることはできません。
例
次の例は、Linkコマンドを使用して制御を別のプログラムに渡す方法を示しています-
IDENTIFICATION DIVISION.
PROGRAM-ID. PROG1.
WORKING-STORAGE SECTION.
01 WS-COMMAREA PIC X(100).
PROCEDURE DIVISION.
EXEC CICS LINK
PROGRAM ('PROG2')
COMMAREA (WS-COMMAREA)
LENGTH (100)
END-EXEC.
負荷
Loadコマンドは、プログラムまたはテーブルをロードするために使用されます。以下は、Loadコマンドの構文です。
EXEC CICS LOAD
PROGRAM ('name')
END-EXEC.
リリース
Releaseコマンドは、プログラムまたはテーブルを解放するために使用されます。以下はリリースコマンドの構文です-
EXEC CICS RELEASE
PROGRAM ('name')
END-EXEC.
戻る
Returnコマンドは、制御を1つ上の論理レベルに戻すために使用されます。以下はReturnコマンドの構文です-
EXEC CICS RETURN
PROGRAM ('name')
COMMAREA (data-value)
LENGTH (data-value)
END-EXEC.
間隔制御操作
間隔制御操作には、次の2つのタイプがあります。
ASKTIME
ASKTIMEは、現在の日時またはタイムスタンプを要求するために使用されます。次に、この値をプログラム内の作業用ストレージ変数に移動します。以下はASKTIMEコマンドの構文です-
EXEC CICS ASKTIME
[ABSTIME(WS-TIMESTAMP)]
END-EXEC.
FORMATTIME
FORMATTIMEは、オプションに基づいてタイムスタンプを必要な形式にフォーマットします。オプションは、日付のYYDDD、YYMMDD、またはYYDDMMです。DATESEPは、TIMEのTIMESEP変数と同様に、DATEの区切り文字を示します。以下は、FORMATTIMEコマンドの構文です。
EXEC CICS FORMATTIME
ABSTIME(WS-TIMESTAMP)
[YYDDD(WS-DATE)]
[YYMMDD(WS-DATE)]
[YYDDMM(WS-DATE)]
[DATESEP(WS-DATE-SEP)]
[TIME(WS-TIME)]
[TIMESEP(WS-TIME-SEP)]
END-EXEC.
データを保存したり、トランザクション間でデータを転送したりするために、CICSで使用できるさまざまなスクラッチパッドがあります。このモジュールで説明するCICSによって提供される5つのストレージ領域があります。
COMMAREA
COMMAREAは、同じトランザクション内または異なるトランザクションから、あるプログラムから別のプログラムにデータを渡すために使用できるスクラッチパッドのように動作します。リンケージセクションでDFHCOMMAREA名を使用して定義する必要があります。
共通の作業領域
CICS領域内のすべてのトランザクションは、共通作業域にアクセスできるため、その形式と使用は、それを使用することを決定したシステム内のすべてのトランザクションによって合意される必要があります。CICS領域全体にCWAは1つだけです。
トランザクション作業領域
トランザクション作業領域は、同じトランザクションで実行されるアプリケーションプログラム間でデータを渡すために使用されます。TWAは、トランザクションの期間中のみ存在します。そのサイズは、プログラム制御テーブルで定義されています。
一時ストレージキュー
一時記憶域キュー(TSQ)は、一時記憶域制御プログラム(TSP)によって提供される機能です。
TSQは、同じCICS領域内の異なるタスクまたはプログラムによって作成、読み取り、および削除できるレコードのキューです。
キューIDは、TSQを識別するために使用されます。
TSQ内のレコードは、アイテム番号と呼ばれる相対位置によって識別されます。
TSQのレコードは、TSQ全体が明示的に削除されるまでアクセス可能なままです。
TSQのレコードは、順次または直接読み取ることができます。
TSQは、DASDの主記憶装置または補助記憶装置に書き込むことができます。
WRITEQ TS
このコマンドは、既存のTSQにアイテムを追加するために使用されます。また、このコマンドを使用して新しいTSQを作成できます。以下は、WRITEQTSコマンドの構文です。
構文
EXEC CICS WRITEQ TS
QUEUE ('queue-name')
FROM (queue-record)
[LENGTH (queue-record-length)]
[ITEM (item-number)]
[REWRITE]
[MAIN /AUXILIARY]
END-EXEC.
以下は、WRITEQTSコマンドで使用されるパラメーターの詳細です。
QUEUEは、このパラメーターに記載されている名前で識別されます。
FROMおよびLENGTHオプションは、キューに書き込まれるレコードとその長さを指定するために使用されます。
ITEMオプションが指定されている場合、CICSはキュー内のレコードに項目番号を割り当て、そのオプションで指定されたデータ域を項目番号に設定します。レコードが新しいキューを開始する場合、割り当てられたアイテム番号は1であり、後続のアイテム番号が順番に続きます。
REWRITEオプションは、キューにすでに存在するレコードを更新するために使用されます。
MAIN / AUXILIARYオプションは、レコードを主記憶装置または補助記憶装置に保管するために使用されます。デフォルトはAUXILIARYです。
READQ TS
このコマンドは、一時ストレージキューを読み取るために使用されます。以下は、READQTSの構文です。
構文
EXEC CICS READQ TS
QUEUE ('queue-name')
INTO (queue-record)
[LENGTH (queue-record-length)]
[ITEM (item-number)]
[NEXT]
END-EXEC.
DELETEQ TS
このコマンドは、一時ストレージキューを削除するために使用されます。以下は、DELETEQTSの構文です。
構文
EXEC CICS DELETEQ TS
QUEUE ('queue-name')
END-EXEC.
一時データキュー
一時データキューは、すばやく作成および削除できるため、本質的に一時的なものです。シーケンシャルアクセスのみを許可します。
キューの内容は、読み取りが実行されると破棄されるため、1回だけ読み取ることができるため、Transientという名前が付けられています。
更新できません。
DCTへの入力が必要です。
WRITEQ TD
このコマンドは、一時データキューを書き込むために使用され、常にファイルに書き込まれます。以下は、WRITEQTDコマンドの構文です。
構文
EXEC CICS WRITEQ TD
QUEUE ('queue-name')
FROM (queue-record)
[LENGTH (queue-record-length)]
END-EXEC.
READQ TD
このコマンドは、一時データキューの読み取りに使用されます。以下は、READQTDの構文です。
構文
EXEC CICS READQ TD
QUEUE ('queue-name')
INTO (queue-record)
[LENGTH (queue-record-length)]
END-EXEC.
DELETEQ TD
このコマンドは、一時データキューを削除するために使用されます。以下は、DELETEQTDの構文です。
構文
EXEC CICS DELETEQ TD
QUEUE ('queue-name')
END-EXEC.
2つ以上のシステム間で行われる相互通信は、 intercommunication。
相互通信の利点
相互通信の重要な利点は次のとおりです-
すべてのシステムでデータを複製する必要はありません。
ユーザーは、保存されているデータにアクセスするために複数のシステムへの接続を保持する必要はありません。
これにより、アプリケーションのパフォーマンスが向上します。
基本的な用語
CICSシステムで使用される基本的な用語の知識が必要です。以下は基本的な用語です-
ローカルシステム
ローカルシステムは、相互通信の要求を開始するシステムです。
ローカルリソース
ローカルリソースは、ローカルシステム上にあるリソースです。
リモートシステム
リモートシステムは、相互通信要求の結果として開始されるシステムです。
リモートリソース
リモートリソースは、リモートシステム上にあるリソースです。
MVSシスプレックス
MVSシスプレックスは、複数のMVSオペレーティング・システムの構成です。これらは、機能とプログラムを共有することにより、単一のシステムとして機能します。
CICSPlex
CICSPlexは通常、顧客のワークロードを処理する相互接続されたCICS領域のセットとして説明されます。CICSPlexは、端末、アプリケーション、リソースなどを所有する相互接続されたCICS領域のセットです。
相互通信方法
CICSが他のシステムと通信する方法は2つあります-
MRO −マルチリージョン操作は、同じMVSPLEX内の2つのCICSリージョンが相互に通信する必要がある場合に使用されます。
ISC −システム間通信は、LOCALサーバーのCICS領域がREMOTEサーバーのCICS領域と通信する必要がある場合に使用されます。
CICSの使用中に、異常終了が発生する場合があります。以下は、問題の解決に役立つ一般的な異常終了コードとその説明です。
シニア番号 | コードと説明 |
---|---|
1 | ASRA プログラムチェックの例外 |
2 | AEI0 プログラムIDエラー |
3 | AEI9 マップ失敗状態 |
4 | AEIO 重複キー |
5 | AEIN 重複レコード |
6 | AEID ファイルの終わりに達しました |
7 | AEIS ファイルが開いていません |
8 | AEIP 無効なリクエスト条件 |
9 | AEY7 リソースの使用が許可されていません |
10 | APCT プログラムが見つかりません |
11 | AFCA データセットが見つかりません |
12 | AKCT タイムアウトエラー |
13 | ABM0 指定されたマップが見つかりません |
14 | AICA 無限ループでプログラムする |
15 | AAOW 内部論理エラー |