これはファイル・レベル・キーワードで、プログラムでこの表示装置ファイルをオープンする際に使用できる表示画面のサイズを指定するために使用します。
このキーワードの形式は次のとおりです。
DSPSIZ(*DSw [*DSx])
DSPSIZ(lines positions[condition-name-1][lines positions[condition-name-2]])
DSPSIZ キーワードは、任意指定のキーワードです。 このキーワードを指定しなかった場合には、表示装置ファイルは、24 x 80 の画面を備えた表示装置に対してのみオープンすることができます。このキーワードは次のいずれかの方法で指定します。
必要に応じて、*DS3 または *DS4 以外の画面サイズ条件名を定義することができます。 定義する画面サイズ条件名は、2 - 8 文字でなければならず、また、最初の文字はアスタリスク (*) でなければなりません。 ユーザー定義の画面サイズ条件名は、以降の DDS ステートメントの 7 - 16 桁目 (条件) にフィールド・レベルで指定することができます。 (このトピックに示す例 2 を参照。) ユーザー定義の画面サイズ条件名を指定しない場合には、IBM 提供の画面サイズ条件名を使用してフィールドの位置を条件付ける必要があります。
2 つ以上のパラメーター値を指定する場合には、次に示す『1 次画面サイズと 2 次画面サイズ』の項を参照してください。
オプション標識は、このキーワードでは無効です。
IBM 提供の画面サイズ条件名を使用するか、行数と桁数を直接指定するかにかかわらず、最初に指定した画面サイズが 1 次画面サイズ になります。 2 番目の画面サイズを指定すれば、それが 2 次画面サイズ になります。図 1 に、1 次画面サイズおよび 2 次画面サイズを指定する場合の例を示します。この図は、DSPSIZ(24 80 27 132) として指定されたキーワードを示しています。1 次画面サイズは 24 x 80、2 次画面サイズは 27 x 132 です。
DSPSIZ キーワードに 2 つ以上の画面サイズを指定する場合には、後続の DDS ステートメントの 7 - 16 桁目にレコード・レベルおよびフィールド・レベルで画面サイズ条件名を指定することができます。 指定した画面サイズ条件名は、フィールドの位置およびキーワードを条件付けるために用いられます。1 次および 2 次画面の両方を指定するとき、表示装置ファイルは両方のサイズの妥当性検査を行います。
27 x 132 のモードによる表示機能は、6040 または 6041 制御装置にローカル接続されているか、5294 または 5394 制御装置にリモート接続されている 3180-2 型表示装置あるいは 3197-D1 型、D2 型、W1 型、または W2 型表示装置でのみ使用できます。 これらの制御装置が使用されていない場合には、DSPSIZ キーワードに 27 x 132 モードの画面サイズを指定しても、それは無視されます。
次の表に有効な画面サイズを示します。
画面サイズ | 表示装置 | 意味 |
---|---|---|
*DS3 または 24 x 80 | 3179 3180 3196 3197 3476 3486 3487 (HA 型、HC 型、HG 型、および HW 型) 3488 5251 (11 型および 12 型) 5291 5292 | 24 行 x 80 桁、合計 1920 桁 |
*DS4 または 27 x 132 | 3180 3197 (D1 型、D2 型、W1 型、および W2 型) 3477 (FA 型、FC 型、FD 型、および FG 型) 3487 (HA 型、HC 型、HG 型、および HW 型) 3488 (27 x 132 の表示機能を使用するためには、ローカルの場合は 6040 または 6041 制御装置、リモートの場合は 5294 または 5394 制御装置を使用します。) | 27 行 x 132 桁、合計 3564 桁 |
1 次画面サイズとして指定する画面サイズは、当該表示装置ファイルで最も頻繁に使用する画面サイズにすることを推奨します。 実際に使用される画面サイズが 2 次画面サイズの場合には、余分な処理が実行されることになります。
画面サイズ条件名を使用することにより、任意のサイズの画面で 1 つの表示装置ファイルを効率よく使用することができます。 例えば、サブファイルを使用している場合には、27 x 132 の画面については 1 ページあたり 24 レコード、24 x 80 の画面については 1 ページあたり 22 レコードを指定することができます。
DSPSIZ を指定したときに、以下の特殊な場合が生じる可能性があります。
具体化またはプログラミングの目的で、これらのレコードは位置 00 (0 行目 - 0 行目まで) にあるものと見なされます。 出力命令時には、位置 00 にあるレコードは、その位置にくるレコードをオーバーレイします。 オーバーラップが生じた場合には、前のレコードは無視され、活動状態であるとは見なされなくなります。 位置 00 にある新しいレコードが活動状態となり、プログラムの読み取りが可能になります。
フィールドがオーバーラップする場合には、オプション指定のあるフィールドと見なされ、選択されません。 この実行時検査ができるように、データ記述仕様書作成の際には、条件名を指定した場合でも、1 レコード内のフィールドはすべて 1 次位置順序になるようにしなければなりません。 例えば、あるレコード様式で、入力フィールドが 1 つだけしか指定されておらず、しかもフィールドの位置指定に従うと、このフィールドが前の出力フィールドとオーバーラップするとします。 この場合には、この入力フィールドは表示されないので、ワークステーション・ユーザーはデータを入力することができません。
次の例は、DSPSIZ キーワードを用いて 1 次画面サイズと 2 次画面サイズを指定する方法を示しています。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00010A*
00020A* 1 2
00030A DSPSIZ(27 132 24 80)
00040A R RECORDA
00050A FIELDA 10 0 1 2
00060A FIELDB 10 0 1 81
00070A FIELDC 10 0 25 1
A
この例では、1 次画面サイズ 1 が 27 x 132 で、2 次画面サイズ 2 が 24 x 80 です。 FIELDB は 80 桁目を超えており、FIELDC は 24 桁目を超えています。したがって、データ記述処理プログラムは、2 次画面サイズ 24 x 80 の場合には、拡張ソース印刷出力で *NOLOC の位置をこの 2 つのフィールドに割り当てます。
データ記述処理プログラムが入力可能フィールドに *NOLOC を割り当てた場合には、実行時にそのフィールドは、ユーザーの入力バッファーに戻される入力バッファー・データを準備する段階まで処理されます。フィールド自体は表示されません。 したがって、ワークステーション・ユーザーは、このようなフィールドについては入力も変更も行うことができません。出力専用フィールドに ついては、どのような処理も行われません。
図 2 は、上の例に示したコーディング例のコンパイル・リストです。
以下に、DSPSIZ キーワードを用いて 1 次画面サイズと 2 次画面サイズを指定する場合の例をもう 1 つ示します。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00010A DSPSIZ(27 132 *WIDE 24 80 *NORMAL)
00020A R RECORDA
00030A FIELDA 10 0 1 2
00040A FIELDB 10 0 1 81
00050A *NORMAL 1 50
00060A FIELDC 10 0 25 1
00070A *NORMAL 23 1
A
この例は、例 1 と似ていますが、2 次画面サイズ (*NORMAL としてユーザーが定義したもの) の場合に有効な位置が FIELDB (1 行目、50 桁目) および FIELDC (23 行目、1 桁目) についてそれぞれ指定されている点が、前の例とは異なります。
次の例には、異なる画面サイズに対してファイルをオープンする場合の、フィールドの位置の指定方法を示します。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00010A DSPSIZ(24 80 27 132)
00020A R RECORDA
00030A FIELD1 10 0 23 2
00040A
00050A
00060A *DS4 26 2
A
この例では、FIELD1 に対して、両方の画面サイズで有効な位置が指定されています。 このフィールドは、どちらの画面サイズでも、最終行の 1 つ前の行に表示されます。
次の例に示すように、画面サイズ条件名を指定しなかった場合でも、DDS のプラス 機能が働く結果、フィールドの表示位置がやはり画面サイズにより決まることがあります。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00010A DSPSIZ(*DS4 *DS3)
00020A R RECORD1
00030A FIELD1 21 2 70
00040A FIELD2 10 +10
A
この例では、DSPSIZ キーワードに指定された各画面サイズについて、各フィールドの行および桁が算出されます。 プラスの値で示されたフィールドの位置が 80 桁目を超えた場合には、フィールドの位置は画面サイズに 応じて決まります。図 3 は、上の例に示したコーディング例のコンパイル・リストです。