Command CICSまたはCommand-CICSは、組織が再プログラミングなしで「マクロ レベル」のCICSから「コマンド レベル」の CICS に移行できるようにするソフトウェア製品です。これにより、企業はマクロ レベルのアプリケーション プログラムをサポートしていない CICS の後のバージョンに移行できます。 [ 1 ] CICS の後のバージョンは以前のバージョンよりも多くの利点を提供しましたが、数万ものアプリケーション プログラムが、同じオペレーティング システム上で 2 つの異なるバージョンの CICS を実行する準備ができていない限り、新しいバージョンから事実上締め出され、運用と保守の両方の問題を引き起こしました。また、2 つの異なる CICS ライセンスを同時に必要としました。
IBMが1960年代後半にCICSを初めてリリースしたとき、 CICSテレプロセッシングモニタカーネルへのAPIシステムコールを生成するためにIBMアセンブラマクロが使用されていました。これは、プログラムがCOBOLやPL/1で記述されている場合でも同様でした。英国のAPT Ltd.のCEOであり、独立系プログラマーであったケン・デイキンは、ミドルウェア製品を作成することで、ほぼすべての状況でこの問題を解決できることに気づきました。ケン・デイキンはIBMに製品の販売を打診しましたが、当時IBMは関心を示しませんでした。何万もの顧客のアプリケーションプログラムをCICSの新バージョンに合わせて変換または書き直す必要があり、数百万ドルの費用がかかるにもかかわらずです。
Command-CICS は、ロード モジュール ( MVS ) またはフェーズ ( DOS/VSE )の前に配置されたリンク編集 (静的) 「スタブ」を介してマクロ レベルのアプリケーションをインターセプトしました。CICS プログラム制御プログラム (PCP) から制御を取得すると、一意の擬似「共通システム領域」(CSA) へのポインタ、トランザクション制御領域とトランザクション作業領域 (TCA+TWA) へのポインタ、擬似端末制御端末エントリ (TCTTE) およびマクロ レベル環境のその他のアーティファクトからなる「擬似マクロ レベル」環境が確立されました。Command-CICS は、制御を元のプログラム エントリ ポイントに直接渡す前に、実際の汎用レジスタR13 と R12 を設定して、擬似制御ブロックを指すようにしました。CSA は、実際のマクロ レベル CICS 環境において、CICS カーネル プログラム (ファイル制御プログラム、ストレージ制御プログラムなど) へのポインタを保持する主要な制御ブロックでした。Command-CICS の CSA は、代わりに Command-CICS エントリ ポイントへの代替ポインタを持っていました。 Command-CICSを使用している場合、CEDFを使用してアプリケーションプログラムの呼び出しをデバッグすることが可能でした。
アプリケーション プログラムは、最初のマクロ レベル API 呼び出しまで通常のマシン コード命令を実行し続け、その時点まではプログラムにオーバーヘッドを一切追加しませんでした。API 呼び出しがアプリケーション プログラムから出るとすぐに、コマンド CICS コードが制御権を取得し、元のリンクを独自の同等のコマンド レベル呼び出しに置き換えました。初期のコマンド レベル CICS バージョン (マクロ レベル プログラムとコマンド レベル プログラムの両方をサポート) では、CICS 「実行インターフェース プログラム」(DFHEIP) がコマンド レベル呼び出しを実際のマクロ レベル呼び出しに変換していました。これにより、CICS 呼び出し時のみごくわずかなオーバーヘッドが追加されました。しかし、後のバージョンの CICS では、CICS API が直接実行されるため、追加の「後方互換性」オーバーヘッドは発生しませんでした。
Command-CICSは当初、英国ではAPT Ltd、ヨーロッパ本土およびその他の地域ではAPT Internationalによって販売されていました。現在、Command-CICSは米国フロリダ州ネープルズのAdvanced Software Products Group, Inc.によって提供されています。
CICS/COMET for z/OS - UNICOM Systems Inc. の類似製品[ 2 ](スタブを動的に追加する必要があるため)多少のオーバーヘッドが発生します。