iSeriesC の互換性に関する考慮事項

iSeries® 環境で実行するようにプログラムを準備する際には、プラットフォームに関するさまざまな事項を考慮する必要があります。

call ステートメントのエラー処理

call ステートメントのエラー処理は、プログラムでの例外処理の方法に応じて異なります。プログラムが v60ExceptionCompatibility プロパティーに YES を設定する場合は、call ステートメントが try ブロックに含まれていると、呼び出し先プログラムから送信されるエスケープ・メッセージを受け取ります。 sysVar.errorCode システム変数にはエスケープ・メッセージ ID が取り込まれます。エスケープ・メッセージ ID は、英数字文字 7 文字です。
aaannnn 
aaa
通常は、英字からなるメッセージ ID 接頭部です。
nnnn
0 から 9 および A から F までの範囲内の 16 進数値です。

サーバー・プログラムの呼び出しにより、他のサーバー・プログラム・プラットフォームと同じ sysVar.errorCode 値が返されます。

プログラムが v60ExceptionCompatibility プロパティーに NO を設定しており、try ブロックで catch されない例外が原因で呼び出し先プログラムが終了する場合、エラーは呼び出し側プログラムに伝搬されます。call ステートメントが try ブロック内にコーディングされており、onException ブロックがスローされた例外と一致する場合、制御がその onException ブロックに渡されます。 EGL 例外レコードに対して使用可能な追加情報はありません。例外が発生する一般的な理由を以下に示します。
  • プログラムが見つからない
  • セキュリティーが十分ではない
  • メモリーが不足している

可変長レコード

EGL は iSeries の可変長レコードをサポートしません。

DBCS データ型

EGL は、DBCHAR プリミティブ型をサポートします。MBCHAR プリミティブ型を使用するには、MBCHAR データ項目の値を設定または参照するときに、プログラムのプログラマーが DBCS データ区切り文字 (シフトアウトおよびシフトイン) を管理する必要があります。

メッセージ・テーブル

EGL メッセージ・テーブルは iSeries メッセージ・ファイルとして実装されます。 メッセージ・ファイル・コマンドのメニューを表示するには、任意の iSeries システム・コマンド・ラインから GO CMDMSGF と入力します。

メッセージ・テーブルからメッセージ・ファイルへの変換の結果、iSeriesC 用に生成された EGL プログラムでは、DataTable を操作する EGL ステートメントと式を使用してメッセージ・テーブルを参照することはできません。これらのステートメントと式には、move ステートメント、in 演算子を使用する条件式、および割り当てステートメントのソースとターゲットなどがあります。

シリアル・ファイル入出力

EGL 生成のプログラム内のシリアル・ファイルは、2 つのメソッド (OUTPUT または EXTEND) のいずれかで書き込みアクセスのために開かれます。これは、既存のファイルの後処理に影響します。OUTPUT と EXTEND は、COBOL OPEN verb 句です。特定のファイルに対する OPEN ステートメントで作成される句は、生成時点での EGL リソース関連ファイル・タイプ値によって異なります。

EGL では 2 つのファイル・タイプ値 (vsam および seq) がサポートされています。 シリアル・ファイルの場合、使用できるファイル・タイプは vsam または seq です。vsam ファイル・タイプでは、EXTEND 句が作成されます。EXTEND 句は、付加レコードを既存のファイルの終わりに追加します。seq ファイル・タイプでは、OUTPUT 句が作成されます。OUTPUT 句はファイルの内容を消去し、1 番目のレコード位置から書き込みます。

iSeries と COBOL は、ファイルが既にジョブで開いている場合に、その SHARE の状況を反映して、競合する OPEN メソッドの管理を試行します。シリアル・ファイルについて詳しくは、i5/OS™インフォメーション・センターおよび COBOL ランタイム・メッセージを参照してください。


フィードバック