OSCプログラミング・サービス
本章では、OSCプログラミング・サービスについて説明します。
2. システム環境
システム環境サービスは、OSCが提供する保存領域へのアクセスを可能にする機能や、構造体およびポインター・アドレスを指定する機能、アプリケーション・プログラムが多様に活用できる環境変数値を取得する機能を提供します。
本節では、プログラム間のデータ共有のためのCOMMAREA、TWAと、プログラムおよびトランザクション間のデータ共有が可能なCWA、TCTUA、そしてこれらの領域を利用するためのコマンドについて説明します。
OSC保存領域
最初にOSCが提供する保存領域を紹介します。OSCアプリケーション・プログラムは、業務ロジックに必要なデータを管理するために、プログラムのローカル保存領域(COBOLの場合、WORKING-STORAGE SECTION)のほか、サーバーが提供するOSC保存領域を一時的に利用することができます。OSC保存領域は、プログラム間のデータ共有や1つのプログラムで実行された結果を他のトランザクションやプログラムに転送するためにも使用することができ、ユーザーが相互に連結された業務を構成することをサポートします。
-
COMMAREA
COMMAREA (Communication Area)は、1つのトランザクションになっている2つのプログラム間、または1つの端末で動作する2つのトランザクション間でデータを送受信するときに使用します。
-
同一トランザクション内部における2つのプログラム間の連結
LINKまたはXCTLコマンドのCOMMAREAオプションを利用し、必要な長さ(最大32KB)のデータをLINKまたはXCTLされるプログラムに渡します。また、DPLによるアプリケーション間のデータ送受信およびOTG、EXCIクライアントとアプリケーション間のデータ送受信にもCOMMAREAを使用します。
-
同一端末で開始された2つのトランザクション間の連結
RETURNコマンドのCOMMAREAオプションを使用して渡したデータを次に実行されるトランザクションで受信できます。疑似会話型(pseudo-conversational)プログラムを作成するときに有効な方法です。
ユーザーはADDRESSコマンドでCOMMAREAアドレス値を取得した後、当該領域に保存されているデータにアクセスできます。COBOLアプリケーション・プログラムではLINKAGE SECTIONにDFHCOMMAREAという名前で変数を宣言すると、ADDRESSコマンドを実行しなくても、この変数を使用してCOMMAREA領域にアクセスできます。
-
-
TWA
TWA (Transaction Work Area)は、トランザクションが発生するたびにシステムがトランザクションに割り当てる領域です。そのトランザクションがアクティブである間はTWAにアクセスできます。TWAはトランザクション内部で少量のデータを管理するときに有効です。
TWA領域の特徴は以下のとおりです。
-
TRANSACTIONリソース定義のTWASIZA項目に指定されたサイズの領域が割り当てられます。
-
トランザクションが発生するたびに“0x00”に初期化されます。
-
WORKING-STORAGE SECTIONなどのプログラム領域のような、ユーザー処理作業によるオーバーヘッドが殆どありません。
-
領域に対するリソース保護機能がありません。
-
-
CWA
CWA (Common Work Area)は、各OSCアプリケーション・サーバーに割り当てられるデータ領域です。OSCアプリケーション・サーバーが起動するときに生成され、システムがアクティブである間のみ存在します。
CWA領域の特徴は以下のとおりです。
-
設定ファイルのCWA_SIZE項目にサイズを指定します。
-
TWAのように特定値に初期化されません。
-
ユーザー処理によるオーバーヘッドが殆どありません。
-
領域に対するリソース保護機能がありません。
-
システム障害に対する復旧機能がありません。
-
すべてのトランザクションで同時アクセスができます。
上記の状況に対してはユーザーが直接対応しなければなりません。そして、単一のノード内でのみアクセスが可能なので、1つのリージョンをマルチノードで構成する場合には、限定的に使用することができます。
-
-
TCTUA
TCTUA (Terminal Control Table User Area)は、端末が提供するユーザー・データ領域です。該当する端末で実行されるすべてのトランザクション間で共有されます。
TCTUA領域の特徴は以下のとおりです。
-
TYPETERMリソース定義のUSERAREALEN項目に指定されたサイズの領域が割り当てられます。
-
特定値に初期化されません。
-
ユーザー処理によるオーバーヘッドが殆どありません。
-
該当する端末ユーザーのみアクセスできます。
-
システム障害に対する復旧機能がありません。
-
システム環境コマンド
システム環境コマンドは、OSC保存領域に対するアドレス値を取得するコマンド(ADDRESS)、取得したアドレス値を変換および指定できるコマンド(ADDRESS SET)、システム環境設定値を取得するコマンド(ASSIGN、INQUIRE SYSTEM)で構成されます。
以下は、システム環境コマンドについての説明です。各コマンドの詳細については該当する節を参照してください。
コマンド | 説明 |
---|---|
各種OSC保存領域のアドレス値を取得します。 |
|
ポインター参照型パラメータをアドレスに指定したり、逆にポインター参照型パラメータにメモリ・アドレスを保存するために使用します。 |
|
システム環境変数値を取得します。 |
|
サーバーのログオン・データにアクセスします。このデータはシステム初期化パラメータLGNMSGが「YES」に設定されている場合にのみ使用できます。 |
|
システム・インターフェース・コマンドであり、システム設定値を取得します。 |
|
ローカルOSCリージョンから他のOSCリージョン、または他のシステムへの接続情報を検索します。 |
|
MROまたはISCを定義する一部の属性を変更できます。 |
2.1. ADDRESS
各種OSC保存領域のアドレス値を取得するコマンドです。
-
構文
EXEC CICS ADDRESS [option …] END-EXEC.
-
オプション
オプション 説明 COMMAREA
COMMAREAアドレスを返します。
CWA
CWAアドレスを返します。
EIB
EIBアドレスを返します。
TCTUA
TCTUAアドレスを返します。
TWA
TWAアドレスを返します。
ACEEオプションは構文解析のみサポートしています。
2.2. ADDRESS SET
ポインター参照型パラメータをアドレスに指定したり、逆にポインター参照型パラメータにメモリ・アドレスを保存するために使用されるコマンドです。USINGオプションが指す値をSETオプションが指す位置に保存します。
-
構文
EXEC CICS ADDRESS SET [option …] END-EXEC.
-
オプション
オプション 説明 SET
ポインター参照を返します。
USING
ポインター値を指定します。
2.3. ASSIGN
システム環境変数値を取得するコマンドです。
-
構文
EXEC CICS ASSIGN [option …] END-EXEC.
-
オプション
-
ASSIGNコマンド・オプション
オプション 説明 ABCODE
現在のABCODE値です。
異常終了しなかった場合は、空白で埋められます。
ABPROGRAM
ABEND(異常終了)が発生したプログラムの名前です。
異常終了しなかった場合は、空白で埋められます。
ALTSCRNHT
現在の端末のALTRSCREEN属性のROW値を返します。
ALTSCRNWD
現在の端末のALTRSCREEN属性のCOLUMN値を返します。
APPLID
サーバーのAPPLID値です。
現在のプログラムが動作する8文字のリージョン名と同じです。
CHANNEL
現在のプログラムのチャンネル名を返します。
COLOR
現在接続している端末の色属性値です。
CWALENG
CWA領域の長さです。
DS3270
現在接続している端末が3270デバイスであるかどうかを返します。
EXTDS
端末が3270拡張データ・ストリームを受け入れるかどうかを返します。
FACILITY
現行トランザクションを実行させた端末名またはTDQを返します。
FCI
Facility Control Indicatorコードを返します。
現在のトランザクションが端末で実行されている場合は X'01’を返し、それ以外の場合は X'00’を返します。
HILIGHT
現在接続している端末のハイライト属性値です。
INVOKINGPROG
現在のプログラムを実行した上位プログラムの名前を返します。
KATAKANA
カタカナのサポートの可否を返します。
NETNAME
現在接続している端末のネットワーク名です。
NEXTTRANSID
RETURN TRANSIDによって設定されたトランザクション名を返します。設定されたトランザクションがない場合は空白を返します。
OUTLINE
現在接続している端末のアウトライン属性値です。
OPID
運用者の識別情報を返します。
PROGRAM
現在実行しているプログラムの名前を返します。
PS
現在接続している端末のPS属性値です。
QNAME
現在のトランザクションがTDQトリガー・レベルにより実行された場合、当該TDQの名前を返します。
RESTART
作業の再開始と一般開始のどちらが発生したかを返します。
RESSEC
現在のトランザクションにリソース・セキュリティが設定されているかどうかを返します。
RETURNPROG
現在のプログラムの実行が完了したとき、制御権限を戻すプログラム名を返します。
SCRNHT
現在のトランザクションに定義されている画面の高さを返します。
SCRNWD
現在のトランザクションに定義されている画面の幅を返します。
SOSI
1バイト文字と2バイト文字の混用モードのサポートの可否を返します。
STARTCODE
トランザクションの要求方法を返します。
SYSID
サーバーのSYSID値です。OpenFrame環境設定のosc.{servername}サブジェクト、GENERALセクションのSYSIDキーに設定された値です。詳細は、『OpenFrame 環境設定ガイド』を参照してください。
TCTUALENG
TCTUA領域の長さです。
TERMCODE
現在接続している端末の種類とモデル番号を組み合わせたコードを返します。
TWALENG
TWA領域の長さです。
USERID
現在サインオンしているユーザーのIDを返します。
USERNAME
現在サインオンしているユーザーの名前を返します。
VALIDATION
現在接続している端末のバリデーション属性値です。
ABDUMP、APLKYBD、APLTEXT、ASRAINTRPT、ASRAKEY、ASRAPSW、ASRAREGS、ASRASPC、ASRASTG,BTRANS、CMDSEC、DEFSCRNHT、DEFSCRNWD、DELIMITER、DESTCOUNT、DESTID,DESTIDLENG、DSSCS、EWASUPP、GCHARS、GCODES、GMMI,INITPARM、INITPARMLEN、INPARTN、LANGINUSE、LDCMNEM、LDCNUM、MAPCOLUMN、MAPHEIGHT、MAPLINE、MAPWIDTH、MSRCONTROL、NATLANGINUSE、NUMTAB、OPCLASS、OPERKEYS、OPSECURITY、ORGABCODE、PAGENUM、PARTNPAGE、PARTNS、PARTNSET、PRINSYSID、SIGDATA、STATIONID、TASKPRIORITY、TELLERID、TERMPRIORITY、TEXTKYBD、TEXTPRINT、TRANPRIORITY、UNATTEND、USERPRIORITYは、サポートしていないオプションです。
-
STARTCODEオプション
オプション 説明 D
SYNCONRETURNオプションが指定されていないDPL(Distributed Program Link)要求で、トランザクションを実行します。
DS
SYNCONRETURNオプションが指定されたDPL要求で、トランザクションを実行します。
QD
TDQのトリガー・レベルによってトランザクションを実行します。
SD
取得したデータと一緒にSTARTコマンドでトランザクションを実行します。
S
取得したデータなしでSTARTコマンドでトランザクションを実行します。
TD
端末から実行します。あるいは、tpcall/tpacall/tpconnectなどのTmax APIでトランザクションを実行します。
-
2.4. EXTRACT LOGONMSG
サーバーのログオン・データにアクセスします。このデータはシステム初期化パラメータLGNMSGが「YES」に設定されている場合にのみ使用できます。
-
構文
EXEC CICS EXTRACT LOGONMSG [option …] END-EXEC.
-
オプション
オプション 説明 INTO
抽出されたデータの受信フィールドを指定します。
SET
抽出されたデータのアドレスに設定されるポインター参照を指定します。
LENGTH
抽出されたデータの長さを指定します。使用できるデータがない場合は、LENGTHが0に設定されます。
2.5. INQUIRE CONNECTION
ローカルOSCリージョンから他のOSCリージョン、または他のシステムへの接続情報を検索します。
-
構文
EXEC CICS INQUIRE CONNECTION [option …] END-EXEC.
-
オプション
オプション 説明 ACCESSMETHOD
検索対象とローカル・システム間の接続方式を返します。
END
ブラウジングを中止します。
CONNECTION
検索しているリモート・システムまたはリージョンの4文字の識別子を指定します。
CONNSTATUS
検索するリージョンが起動している場合はACQUIREDを、起動していない場合はRELEASEDを返します。
NETNAME
コネクションの定義で設定されたNETNAME値で、ネットワークに知られたリモート・システムの8文字の名前を返します。
NEXT
INQUIREコマンドを繰り返し実行します。1つのリソース定義を返します。
PROTOCOL
使用しているプロトコルの値を返します。
START
ブラウジングを開始します。
ACQSTATUS、AUTOCONNECT、CHANGEAGENT、CHANGEAGREL、CHANGETIME、CHANGEUSERID、CONNSTATUS、CONNTYPE、CQP、DEFINESOURCE、DEFINETIME、EXITTRACING、GRNAME、INSTALLAGENT、INSTALLTIME、INSTALLUSRID、LINKSYSTEM、MEMBERNAME、NQNAME、PENDSTATUS、RECEIVECOUNT、RECOVSTATUS、REMOTENAME、REMOTESYSNET、REMOTESYSTEM、SENDCOUNT、SERVSTATUS、XLNSTATUS、ZCPTRACINGオプションはサポートしていません。
2.6. INQUIRE SYSTEM
システム・インターフェース・コマンドであり、システム設定値を取得します。
-
構文
EXEC CICS INQUIRE SYSTEM [option …] END-EXEC.
-
オプション
オプション 説明 DFLTUSER
サーバーの基本ユーザーIDを返します。OpenFrame環境設定のosc.{servername}サブジェクト、SAFセクションのDFLTUSERキーに設定された値です。
GMMLENGTH
サーバーのGood Morningメッセージのテキスト長を返します。
GMMTEXT
サーバーのGood Morningメッセージのテキスト長を返します。OpenFrame環境設定のosc.{servername}サブジェクト、GENERALセクションのGMTEXTキーに設定された値です。
GMMTRANID
サーバーのGood Morningメッセージのトランザクション値を返します。OpenFrame環境設定のosc.{servername}サブジェクト、GENERALセクションのGMTRANキーに設定された値です。
JOBNAME
サーバーのJOBNAME値を返します。OpenFrame環境設定のosc.{servername}サブジェクト、GENERALセクションのJOBNAMEキーに設定された値です。
SECURITYMGR
TACFの使用有無を返します。
CICSSTATUS
OSCの現在の実行状態を返します。
SHUTSTATUS
OSCの終了状態を示すCVDA値を返します。
osc.{servername}サブジェクトの設定方法については、OpenFrame OSC『環境設定ガイド』を参照してください。 |
2.7. SET CONNECTION
MROまたはISCを定義する一部の属性を変更することができます。
-
構文
EXEC CICS SET CONNECTION [option …] END-EXEC.
-
オプション
オプション 説明 CONNECTION
設定するリモート・システムまたはリージョンの4文字の識別子を指定します。
AFFINITY
一般リソースのグループである場合、保有した関係を終了するように指定します。
-
ACQSTATUS、CONNSTATUS、EXITTRACING、PENDSTATUS、PURGETYPE、RECOVSTATUS、SERVSTATUS、UOWACTION、ZCPTRACINGオプションはサポートしていません。
-
START、NEXT、ENDオプションは構文解析のみサポートしています。
-
3. 例外条件の処理
EXEC CICSコマンドを実行するたびに、RESP値を利用して当該コマンドの実行結果をアプリケーション・プログラムに返します。RESP、RESP2オプションまたはEIBのRESP値を利用してコマンドの実行結果を確認できます。こうしたオプションが指定されていない場合、例外条件が発生すると基本的にアプリケーション・サーバーがどのように動作するかが予め決まっています。
OSCシステムは、例外条件が発生した場合、基本的なエンジンの動作ではなく、ユーザーが指定した方式でアプリケーション・サーバーが動作するように指定できる機能を提供します。
デフォルト動作は『IBM CICS Application Programming Reference』、『CICS System Programming Reference』と同じです。 |
例外条件処理コマンド
例外条件が発生した場合、ユーザーは以下のコマンドを使用してシステム動作を変更することができます。
以下は、例外条件処理コマンドの一覧です。各コマンドの詳細については該当する節を参照してください。
コマンド | 説明 |
---|---|
アプリケーション・プログラムに特定状況が発生した際のシステム動作を指定します。 |
|
システムは特定の状況が発生した際のハンドリング情報を保存しています。 アプリケーション・プログラムで一時的に設定したハンドリング情報を適用させないようにする場合に使用します。 |
デフォルト動作の大部分はタスクが異常終了する場合ですが、WRITEQ TSのNOSPACEのように例外条件を無視して引き続き実行される場合もあります。
例外条件を無視して実行する場合については、IBMの『CICS Application Programming Reference』と『CICS System Programming Reference』を参照してください。 |
3.1. HANDLE CONDITION
特定の例外条件とラベルに対してオプションおよびオプション値を指定すると、当該例外条件が発生した場合に指定ラベルが設定されているプログラム・セクションが実行されます。
-
構文
EXEC CICS HANDLE CONDITION [option …] END-EXEC.
-
オプション
オプション 説明 condition
例外条件をオプション名に指定し、引数としてコントロールを渡すラベルを指定します。conditionオプションにラベルを指定せずに使用すると、デフォルト動作が設定されます。
-
TIMEDOUTは、構文解析のみをサポートします。
-
HANDLE CONDITIONコマンドは、関連条件が発生する可能性のあるコマンドが実行される前に実行する必要があることにご注意ください。
-
3.2. IGNORE CONDITION
特定の例外条件に対するデフォルト動作を無視し、その動作を実行しないコマンドです。
-
構文
EXEC CICS IGNORE CONDITION [option …] END-EXEC.
-
オプション
オプション 説明 condition
例外条件をオプション名に指定します。
4. 異常終了の処理
ユーザーがABENDコマンドを使用してトランザクションを即刻終了させる場合や、コマンド実行中にエラーが発生して現在実行中のタスクをシステムが終了させる場合など、プログラムの終了が正常ではないことを異常終了(ABEND)といいます。異常終了が発生した場合、該当するトランザクションで復旧できるリソースはロールバックされます。
アプリケーション・プログラムの異常終了は以下の場合に発生します。
-
EXEC CICS ABENDコマンドによるユーザーの要求
-
Tmaxサービス・タイムアウトによる異常終了
-
EXEC CICSコマンドの例外条件が発生した際のアプリケーション・サーバーのデフォルト動作
本節では、ユーザーの要求つまりEXEC CICS ABENDによる異常終了と、異常終了に対するハンドリングについて記述します。
異常終了処理コマンド
以下は、異常終了処理のためのコマンド一覧です。各コマンドの詳細については該当する節を参照してください。
コマンド | 説明 |
---|---|
現在のタスクの異常終了を要求します。 |
|
HANDLE ABENDは、異常終了(ABEND)が発生した場合に、指定したラベルやプログラムを実行した後に終了するように設定します。 |
4.1. ABEND
現在のタスクに対する異常終了を要求するコマンドです。
-
構文
EXEC CICS ABEND [option …] END-EXEC.
-
オプション
オプション 説明 ABCODE
異常終了コードを指定します。別途指定していない場合は‘????’と指定されます。
CANCEL
HANDLE ABENDコマンドで指定されたハンドリング処理を無視します。
NODUMPオプションは構文解析のみサポートしています。
4.2. HANDLE ABEND
異常終了(ABEND)が発生した場合に、指定したラベルやプログラムを実行した後に終了するように設定するコマンドです。このコマンドで設定されたハンドリング情報はPOP HANDLEおよびPUSH HANDLEコマンドの対象になります。
複数のプログラム・レベル(LINKコマンドを使ってプログラム呼び出し)で異常終了出口を指定した場合、OSCアプリケーション・サーバーは直近のHANDLE ABEND設定を使用します。
-
構文
EXEC CICS HANDLE ABEND [option …] END-EXEC.
-
オプション
オプション 説明 CANCEL
以前の異常終了設定をクリアします。
LABEL
タスクが異常終了する際にコントロールが分岐されるプログラミングのラベル名を指定します。
PROGRAM
タスクが異常終了する際にコントロールを渡すプログラム名を指定します。
RESET
以前にクリアされた異常終了の設定を再設定します。
5. リソースの復旧
タスクが異常終了した場合や、OSCアプリケーション・サーバーまたはシステム全体に問題が生じて再起動した場合、リソースを復旧する必要があります。このように復旧されたリソースは最後に正常終了した時点の状態に戻ります。
一般的に、復旧時点はタスクの開始前ですが、SYNCPOINTコマンドを使って復旧時点を任意で指定することもできます。復旧時点を基準にプログラムのフローが論理的に区分された区域をUOW(Unit of Work)またはLUW(Logical Unit of Work)といいます。
SYNCPOINTコマンドを実行すると、現在の区域に起きたすべての作業をコミットした後、新しいUOWを開始します。SYNCPOINT ROLLBACKコマンドは、現在の区域で起きた、復旧可能なリソース変更内容をすべてロールバックした後、新しいUOWを開始します。
RETURNコマンドでプログラムが終了した場合、自動コミットされます。ABENDコマンドでプログラムを終了した場合や例外条件が発生して異常終了した場合、復旧可能なリソースはロールバックされます。
OSCシステムで復旧機能をサポートするリソースは以下のとおりです。
-
ファイル
-
TSQ(Temporary Storage Queue)
-
TDQ(Transient Data Queue)
-
DL/Iデータベース
-
STARTコマンドのPROTECTオプションによる要求
ファイルは基本的に復旧可能です。TSQ、TDQはシステム管理者がリソース定義に設定した内容に従って復旧するか否かを決定できます。DL/IデータベースはHiDBの特性上、復旧が可能です。
リソース復旧コマンド
以下は、リソース復旧のためのコマンドの一覧です。各コマンドの詳細については該当する節を参照してください。
コマンド | 説明 |
---|---|
以前のSYNCPOINT時点以降に修正されたすべての復旧可能なリソースをコミットします。 |
|
以前のSYNCPOINT時点以降に修正されたすべての復旧可能なリソースをロールバックします。 |
6. 組み込み関数
OSCシステムは、DEEDITとDIGEST機能を組み込み関数(BIF)コマンドとして提供します。
組み込み関数コマンド
以下は、組み込み関数コマンドの一覧です。各コマンドの詳細については該当する節を参照してください。
コマンド | 説明 |
---|---|
DEEDIT機能を提供します。 |
|
SHA-1値を計算します。 |