バージョン 8.1.3
 —  コマンドリファレンス  —

LF コマンド:フィールド定義の読み込み

LF コマンドは、ファイル内の全フィールドの定義情報を読み込みます。

このドキュメントでは、次のトピックについて説明します。


機能および使用

LF コマンドは、ファイルのフィールド定義情報を読み込むのに使用します。 このコマンドは本来 Adabas サブシステムで使用されるものであり、一般にアプリケーションプログラムでは使用されません。

ユーザーは取得するフィールド定義があるファイルの番号を指定します。

Adabas はコマンドオプション 2 フィールドの指定に従って、レコードバッファに 3 種類のフォーマットでフィールド情報を返します。

Top of page

ACB インターフェイスダイレクトコール:LF コマンド

このセクションでは、LF コマンドの ACB インターフェイスダイレクトコールについて説明します。 本書には、次のトピックが含まれています。

コントロールブロックとバッファの概要

コントロールブロック

ダイレクトコールが開始される前に、未使用の ACB フィールドにバイナリの 0 を設定することをお勧めします。

フィールド 位置 フォーマット Adabas コール前 Adabas コール後
  1~2 -- -- --
コマンドコード 3~4 英数字 F U
  5~8 -- -- --
ファイル番号 9~10 バイナリ F U
レスポンスコード 11~12 バイナリ -- A
  13~26 -- -- --
レコードバッファ長 27~28 バイナリ F U
  29~35 -- -- --
コマンドオプション 2 36 英数字 F U
  37~48 -- -- --
アディション 3 49~56 英数字 F A
  57~72 -- -- --
コマンドタイム 73~76 バイナリ -- A
ユーザーエリア 77~80 -- -- U

バッファエリア

バッファ Adabas コール前 Adabas コール後
フォーマット * --
レコード -- A

上記の意味は次に示すとおりです。

F Adabas コール前にユーザーが入力するフィールド
A Adabas により入力されるフィールド
U Adabas コール後も変化なし
* 使用しませんが、コールステートメントのパラメータリストに含める必要があります。
-- 未使用

コントロールブロックフィールドの説明

ダイレクトコールが開始される前に、未使用の ACB フィールドにバイナリの 0 を設定することをお勧めします。

コマンドコード(ACBCMD)

LF

ファイル番号(ACBFNR)

フィールド定義情報を取得するファイルの番号。

注意:
2 バイトファイル番号およびデータベース ID を使用する場合は、コントロールブロックの先頭バイトに X'30' を入力しなければなりません。

レスポンスコード(ACBRSP)

Adabas はこのフィールドに、コマンドのレスポンスコードを返します。 レスポンスコード 0 は、このコマンドが正しく実行されたことを示します。 LF コマンドによってゼロ以外のレスポンスコードが返された場合、Adabas コントロールブロックのバイト 45~48(アディション 2 フィールドの下位 2 バイト)に、レスポンスコードの意味を正確に定義したサブコードが含まれていることがあります。 レスポンスコードとサブコードについては、『Adabas メッセージおよびコード』を参照してください。

レコードバッファ長(ACBRBL)

レコードバッファ長(バイト単位)。 指定長は、そのファイルのフィールド定義情報が十分入るだけの長さが必要です。ただし、ユーザープログラムで定義したレコードバッファエリアのサイズを超えない値を指定する必要があります。 内部フォーマット(I)コマンドオプションを指定した場合、最大で 4 アソシエータブロックの出力が可能です。

コマンドオプション 2:表示する情報のタイプ(ACBCOP2)

コマンドオプション 2 フィールドの設定により、レコードバッファに返されるフィールド情報のフォーマットと種類が決定されます。

オプション 説明
S 照合ディスクリプタ、サブフィールド、スーパーフィールド、サブディスクリプタ、スーパーディスクリプタ、ハイパーディスクリプタ、フォネティックディスクリプタの情報を含む全フィールド情報が返されます。

Adabas 8 を使用している場合、コマンドオプション 2 に "S" を設定して LF コマンドを実行したときに、ラージオブジェクト(LB)フィールドが検出されると、LB フィールドの状態が F タイプのフィールドエレメントに返されます。 第 2 フォーマットバイト(エレメントのオフセット 7 またはバイト 8)のビット 6 が、このフィールドに LB(ラージオブジェクト)オプションが設定されたことを示すために設定されました。 第 2 フォーマットバイトのビット 1 は、LB フィールドの定義に NB(空白圧縮なし)オプションが指定されているかどうかを表します。

注意:
ACB インターフェイスダイレクトコールでは、あまり大きな LB フィールドデータを格納したり、読み込んだりすることができません。すべてのデータは、最大 32 KB(- 1 バイト)長のレコードバッファセグメントに収まる大きさである必要があります。

I Adabas の内部形式で全フィールド情報が返されます。

空白またはバイナリの 0 を指定すると、サブディスクリプタ、スーパーディスクリプタ、ハイパーディスクリプタ、フォネティックディスクリプタ、照合ディスクリプタの情報を除くフィールド情報が返されます。 これは、Adabas バージョン 4 と同じ形式です。

アディション 3:パスワード(ACBADD3)

セキュリティ保護のためのパスワードを指定します。 使用するファイルがセキュリティ保護されていない場合、このフィールドは空白にしておきます。 ファイルがセキュリティ保護されている場合は、該当するパスワードを指定しなければなりません。

アクセスしたファイルがパスワード保護されている場合は、パスワード値を保護するために、コマンド処理後空白が設定されます。

ACB の例

ファイル 1 のフィールド定義情報を読み込みます。

コントロールブロック

コマンドコード LF  
ファイル番号 1 ファイル 1 のフィールド定義を要求します。
レコードバッファ長 100  
コマンドオプション 2 S 全ディスクリプタおよびサブ/スーパーフィールドの情報が返されます。
アディション 3 bbbbbbbb(空白) ファイルはセキュリティ保護されていません

Top of page

ACBX インターフェイスダイレクトコール:LF コマンド

このセクションでは、LF コマンドの ACBX インターフェイスダイレクトコールについて説明します。 本書には、次のトピックが含まれています。

コントロールブロックとバッファの概要

コントロールブロック

ダイレクトコールが開始される前に、未使用の ACBX フィールドにバイナリの 0 を設定することをお勧めします。

フィールド 位置 フォーマット Adabas コール前 Adabas コール後
  1~2 --- --- ---
バージョンインジケータ 3~4 バイナリ F U
  5~6 --- --- ---
コマンドコード 7~8 英数字 F U
  9~10 --- --- ---
レスポンスコード 11~12 バイナリ --- A
  13~16 --- --- ---
データベース ID 17~20 数値 F U
ファイル番号 21~24 数値 F U
  25~49 --- --- ---
コマンドオプション 2 50 英数字 F U
  51~68 --- --- ---
アディション 3 69~76 英数字/バイナリ F A
  77~114 --- --- ---
エラーサブコード 115~116 バイナリ --- A
  117~144 --- --- ---
コマンドタイム 145~152 バイナリ --- A
ユーザーエリア 153~168 該当なし --- U
--- 169~193 操作不可 --- ---

ABD とバッファ

ABD とバッファ Adabas コール前 Adabas コール後
フォーマット * --
レコード -- A

上記の意味は次に示すとおりです。

F Adabas コール前にユーザーが入力するフィールド
A Adabas により入力されるフィールド
U Adabas コール後も変化なし
* 使用しませんが、Adabas コールに含める必要があります。含めない場合は、Adabas コールが自動的に生成されます。
-- 未使用

コントロールブロックフィールドの説明

ダイレクトコールが開始される前に、未使用の ACBX フィールドにバイナリの 0 を設定することをお勧めします。

バージョンインジケータ(ACBXVER)

F2

コマンドコード(ACBXCMD)

LF

レスポンスコード(ACBXRSP)

Adabas はこのフィールドに、コマンドのレスポンスコードを返します。 レスポンスコード 0 は、このコマンドが正しく実行されたことを示します。 ゼロ以外のレスポンスコードは、エラーサブコード(ACBXERRC)フィールドにサブコードを伴う場合があります。詳細は、Adabas メッセージおよびコード のドキュメントを参照してください。

データベース ID(ACBXDBID)

このフィールドを使用して、データベース ID を指定します。 Adabas コールはこのデータベースに送られます。

このフィールドは 4 バイトのバイナリフィールドですが、現時点では 2 バイトのデータベース ID のみがサポートされています。 したがって、データベース ID はフィールドの下位部分(右端のバイト)に指定し、その前にバイナリの 0 を付加する必要があります。

このフィールドがバイナリの 0 に設定されている場合は、Adabas API は DDCARD 入力データで指定された ADARUN カードのデータベース ID か、リンクされているかリンクルーチンによりロードされた LNKGBLS モジュールで指定されているデフォルトのデータベース ID 値のいずれかを使用します。

ファイル番号(ACBXFNR)

このフィールドは、フィールド定義情報を取得するファイルの番号を指定するのに使用します。

このフィールドは 4 バイトのバイナリフィールドですが、ファイル番号はフィールドの下位部分(右端のバイト)に指定し、その前にバイナリの 0 を付加する必要があります。

コマンドオプション 2:表示する情報のタイプ(ACBXCOP2)

コマンドオプション 2 フィールドの設定により、レコードバッファに返されるフィールド情報のフォーマットと種類が決定されます。

オプション 説明
S 照合ディスクリプタ、サブフィールド、スーパーフィールド、サブディスクリプタ、スーパーディスクリプタ、ハイパーディスクリプタ、フォネティックディスクリプタの情報を含む全フィールド情報が返されます。

Adabas 8 を使用している場合、コマンドオプション 2 に "S" を設定して LF コマンドを実行したときに、ラージオブジェクト(LB)フィールドが検出されると、LB フィールドの状態が F タイプのフィールドエレメントに返されます。 第 2 フォーマットバイト(エレメントのオフセット 7 またはバイト 8)のビット 6 が、このフィールドに LB(ラージオブジェクト)オプションが設定されたことを示すために設定されました。 第 2 フォーマットバイトのビット 1 は、LB フィールドの定義に NB(空白圧縮なし)オプションが指定されているかどうかを表します。

I Adabas の内部形式で全フィールド情報が返されます。

空白またはバイナリの 0 を指定すると、サブディスクリプタ、スーパーディスクリプタ、ハイパーディスクリプタ、フォネティックディスクリプタ、照合ディスクリプタの情報を除くフィールド情報が返されます。 これは、Adabas バージョン 4 と同じ形式です。

アディション 3:パスワード(ACBXADD3)

セキュリティ保護のためのパスワードを指定します。 使用するファイルがセキュリティ保護されていない場合、このフィールドは空白にしておきます。 ファイルがセキュリティ保護されている場合は、該当するパスワードを指定しなければなりません。

アクセスしたファイルがパスワード保護されている場合は、パスワード値を保護するために、コマンド処理後空白が設定されます。

エラーサブコード(ACBXERRC)

コマンドがゼロ以外のレスポンスコードを返したときは、このフィールドにレスポンスコードの正確な意味を定義したサブコードが含まれます。 レスポンスコードとサブコードについては、『Adabas メッセージおよびコード』を参照してください。

Top of page

バッファ

LF コマンドには、次のバッファが適用されます。

フォーマットバッファ

フォーマットバッファは LF コマンドでは使用されませんが、Adabas コールに含める必要があります。 これが ACB インターフェイスダイレクトコールであり、フォーマットバッファが指定されていない場合は、処理エラーが発生します。ACB インターフェイスダイレクトコールはセットシーケンスにバッファが指定されていることを要求します。 これが ACBX インターフェイスダイレクトコールであり、フォーマットバッファが指定されていない場合は、バッファが自動的に生成されます。

レコードバッファ

全フィールド定義は、レコードバッファに返されます。

コマンドオプション 2 が "S" の場合

コマンドオプション 2 フィールドに "S" を指定すると、照合ディスクリプタ、サブディスクリプタ、スーパーディスクリプタ、ハイパーディスクリプタ、フォネティックディスクリプタ、サブフィールド、スーパーフィールドなど、あらゆるフィールド情報が次のフォーマットで返されます。

注意:
Adabas 8 を使用している場合、コマンドオプション 2 に "S" を設定して LF コマンドを実行したときに、ラージオブジェクト(LB)フィールドが検出されると、LB フィールドの状態が F タイプの FDT フィールド定義に返されます。 第 2 フォーマットバイト(エレメントのオフセット 7 またはバイト 8)のビット 6 が、このフィールドに LB(ラージオブジェクト)オプションが設定されたことを示すために設定されました。 第 2 フォーマットバイトのビット 1 は、LB フィールドの定義に NB(空白圧縮なし)オプションが指定されているかどうかを表します。

バイト 使用方法
1~2 情報の合計長
3~4 FDT にあるフィールド数(SDT を含む)
5~n フィールド定義。各エントリは 8 バイトで、最大エントリ数は 926 です。
(n+1)m 次の情報からなる特殊ディスクリプタテーブル(SDT)
  • サブ/スーパーディスクリプタ(またはサブ/スーパーフィールド)

  • フォネティックディスクリプタ

  • ハイパーディスクリプタ

  • 照合ディスクリプタ

サブ/フォネティック/照合ディスクリプタエレメントの長さは 8 バイトです。 スーパー/ハイパーディスクリプタエレメントの長さは、8 バイトのエントリが 2 つ以上入る大きさとなります。
FDT フィールド定義

FDT フィールド定義の構文は次のとおりです。

'F' field-name option level length format

次の表でこの構文について説明します。

記号 バイト 使用方法
'F' 1 'F'は FDT フィールド定義を示します。
field-name 2~3 フィールド名
option 4 定義オプション
ビット 1 = 1 ディスクリプタ
ビット 2 = 1 固定長
ビット 3 = 1 マルチプルバリューフィールド
ビット 4 = 1 空値省略
ビット 5 = 1 ピリオディックグループフィールド
ビット 6 = 1 フォネティックディスクリプタの親
ビット 7 = 1 サブ/スーパーディスクリプタの親
ビット 8 = 1 ユニークディスクリプタ
level 5 レベル番号(バイナリ)
length 6 長さ
format 7 データのタイプ
A 英数字
B バイナリ
F 固定小数点
G 浮動小数点
P パック 10 進数
U アンパック 10 進数
W ワイド文字
8 オプション(続き)
ビット 1 未使用。ただし、Adabas 8 を使用しており、コマンドオプション 2 に "S" を設定して LF コマンドを実行したときに、ラージオブジェクト(LB)フィールドが検出された場合を除く。 この場合、ビット 1 は LB フィールドが NB(空白圧縮なし)オプションで定義されているかどうかを示します。
ビット 2 = 1 NV(変換なし)オプション
ビット 3 (未使用)
ビット 4 = 1 XI(UQ から PE オカレンス番号を除外する)オプション
ビット 5 = 1 LA(ロング英数字フィールド)オプション
ビット 6 未使用。ただし、Adabas 8 を使用しており、コマンドオプション 2 に "S" を設定して LF コマンドを実行したときに、ラージオブジェクト(LB)フィールドが検出された場合を除く。 この場合、ビット 6 はフィールドに LB(ラージオブジェクト)オプションが設定されていることを示します。
ビット 7 = 1 NN オプション
ビット 8 = 1 NC オプション

注意:
ピリオディックグループ内のフィールドは、次の属性を持ちます。オプションフィールド(バイト 4)のビット 5 = 1。レベルフィールド(バイト 5)は 1 より大きいレベル番号になります。 ピリオディックグループフィールド自体は、常にオプションのビット 5 = 1 で、レベル番号 1 です。

SDT フィールド定義
X  SDT-definition

X には次のいずれかが入ります。

C 照合ディスクリプタ(「照合ディスクリプタ定義」セクション参照)
H ハイパーディスクリプタ(「ハイパーディスクリプタ定義」セクション参照)
P フォネティックディスクリプタ(「フォネティック定義」セクション参照)
S サブフィールド/ディスクリプタ(「サブフィールド/サブディスクリプタ定義」セクション参照)
T スーパーフィールド/ディスクリプタ(「スーパーフィールド/スーパーディスクリプタ定義」セクション参照)
X'00' エレメントの続き

照合ディスクリプタ定義

'C' name option exit length p-field-name
記号 バイト 使用方法
C 1 照合ディスクリプタを示します。
name 2~3 照合ディスクリプタ名
option 4 定義オプション
ビット 1 = 1 ディスクリプタ
ビット 2 = 1 UQ から PE オカレンス番号を除外
ビット 3 = 1 マルチプルバリュー形式
ビット 4 = 1 空値省略
ビット 5 = 1 ピリオディックグループフィールド
ビット 6~7 (未使用)
ビット 8 = 1 ユニークディスクリプタ
exit 5 照合ディスクリプタ出口番号(バイナリ)(指定可能値 1~8)
length 6 長さ
p-field-name 7~8 親フィールド名

ハイパーディスクリプタ定義

'H' name option exit length format X'00'
X'00' X'00' p-fieldname-list ...
記号 バイト 使用方法
H 1 ハイパーディスクリプタ定義を示します。
name 2~3 ハイパーディスクリプタ名
option 4 定義オプション
ビット 1 (未使用)
ビット 2 = 1 固定長
ビット 3 = 1 マルチプルバリュー
ビット 4 = 1 空値省略
ビット 5 = 1 ピリオディックグループ
ビット 6~7 (未使用)
ビット 8 = 1 ユニークディスクリプタ
level 5 ハイパー出口番号(バイナリ)(指定可能値 1~31)
length 6 長さ
format 7 フォーマット:
A 英数字
B バイナリ
F 固定小数点
G 浮動小数点
P パック 10 進数
U アンパック 10 進数
X'00' 8 オプション(続き)
ビット 1~3 (未使用)
ビット 4 = 1 XI(UQ から PE オカレンス番号を除外する)オプション
ビット 5~8 (未使用)

ハイパーディスクリプタ親フィールド名リストは、ハイパーディスクリプタ定義を拡張したものです。 そのフォーマットは、8 バイトのグループごとに次のようになります。

記号 バイト 説明
X'00' 1 X'00' は定義の延長を示します。
X'00' 2 (未使用)
p-fieldname-list... 3~8 親フィールド名一覧。各 2 バイトで合計 6 バイトです(つまり、フィールドは 3 つ指定できます。 3 つより少ない名前を指定した場合、残りの部分には X'00' が入ります)。

フォネティックディスクリプタ定義

'P' desc-name option p-field-name X'0000'
記号 バイト 説明
P 1 フォネティックディスクリプタを示します。
desc-name 2~3 フォネティックディスクリプタ名
option 4 (未使用)
p-field-name 5~6 親フィールド名
X'0000' 7~8 使用しません/空値に設定されます。

サブフィールド/サブディスクリプタ定義

'S' s-name option p-field-name from to
記号 バイト 使用方法
S 1 サブディスクリプタ/サブフィールドを示します。
s-name 2~3 サブディスクリプタ名またはサブフィールド名
option 4 定義オプション
ビット 1 = 1 ディスクリプタ
ビット 2 = 1 UQ から PE オカレンス番号を除外
ビット 3 = 1 マルチプルバリュー形式
ビット 4 = 1 空値省略
ビット 5 = 1 ピリオディックグループフィールド
ビット 6~7 (未使用)
ビット 8 = 1 ユニークディスクリプタ
p-field-name 5~6 親フィールド名
from 7 開始バイト
to 8 終了バイト

スーパーディスクリプタ/スーパーフィールド定義

'T' sup-name option p-field-name from to
X'00' X'000000'p-field-name from to
記号 バイト 使用方法
T 1 スーパーディスクリプタ/スーパーフィールドを示します。
sup-name 2~3 スーパーディスクリプタ/スーパーフィールド名
option 4 定義オプション
ビット 1 = 1 ディスクリプタ
ビット 2 = 1 UQ から PE オカレンス番号を除外
ビット 3 = 1 マルチプルバリュー形式
ビット 4 = 1 空値省略
ビット 5 = 1 ピリオディックグループフィールド
ビット 6~7 (未使用)
ビット 8 = 1 ユニークディスクリプタ
p-field-name 5~6 親フィールド名
from 7 開始バイト
to 8 終了バイト

スーパーディスクリプタ/スーパーフィールド定義の延長は、8 バイトグループごとに、次の形式にしたがいます。

記号 バイト 説明
X'00' 1 定義の延長を示します。
X'000000' 2~4 (未使用)
p-field-name 5~6 親フィールド名
from 7 開始バイト
to 8 終了バイト

コマンドオプション 2 が "I" の場合

コマンドオプション 2 フィールドに "I" が設定されている場合、フィールド情報は次の Adabas 内部形式で返されます。

バイト 内容
1 X'80'
2 B'00000xyz' xyz には 暗号化ビット(1=yes、0=no)が入ります。
x ユーザー
y 新しい
z 古い
3~4 バイナリの 0
5~8 フィールド定義テーブル(FDT 固有)、FDT インデックス、特殊ディスクリプタテーブル(SDT)を含めた FDT の合計長 [ = p 窶錀 4]
9~12 フィールド定義テーブル(FDT 固有)の全長 [ = n 窶錀 8]
13~n FDT フィールドディスクリプタエレメント(1 エレメントごとに 20 バイト。次の説明参照)
n+1~n+4 FDT インデックスの全長 [ = m 窶錀 n]
n+5~m FDT インデックス
m+1~m+4 特殊ディスクリプタテーブル(SDT)の全長 [ = p 窶錀 m]
m+5~p 特殊ディスクリプタテーブル(SDT)

各 FDT フィールドディスクリプタエレメントのフォーマットについては、次の表で説明します。

オフセット 内容
0 フィールドレベル
1 - 2 フィールド名
3 特殊なフィールドオプション
4 - 6 予約
7 デフォルトフィールド長
8 フィールドフォーマット
9 ディスクリプタ定義オプション
10 特殊なディスクリプタ親オプション
11 ピリオディックグループカウントフィールド
12~13 FDT エレメントチェーンポインタ
14 フィールドセキュリティレベル
15 - 19 予約

FDT エレメントの意味については、Adabas アーキテクチャ訓練情報で説明します。

FDT は、4 以下のアソシエータブロックに格納されます。 従って、レコードバッファの最大長は 4 アソシエータブロック長です。

コマンドオプション 2 が "S" および "I" 以外の場合

注意:
古いプログラムをサポートするため、コマンドオプション 2 フィールドに "I" または "S" 以外の値も指定できますが、この場合、新機能はサポートされません。 新しいプログラムについては、その値を "I" または"S" に設定することをお勧めします。

コマンドオプション 2 フィールドに "I" または "S" 以外の値を指定した場合、照合/サブ/スーパー/ハイパー/フォネテックのディスクリプタ情報を除くフィールド情報が返されます。 これは、Adabas バージョン 4 と同じフォーマットです。

n field-def

上記の意味は次に示すとおりです。

n ファイル中のフィールド数。 この数は、レコードバッファの最初の 4 バイトに 4 バイトの 2 進数として表示されます。
field-def ファイル中の各フィールドに関するフィールド定義情報。 各フィールド情報は、次表のフォーマットに基づき 6 バイトで表示されます。
バイト 使用方法
1 レベル番号(バイナリ)
2 - 3 名前(英数字)
4 標準長(バイナリ)
5 標準フォーマット(英数字)
A 英数字
B バイナリ
F 固定小数点
G 浮動小数点
P パック 10 進数
U アンパック 10 進数
W ワイド文字
6 定義オプション
ビット 1 = 1 ディスクリプタ
ビット 2 = 1 固定ストレージ
ビット 3 = 1 マルチプルバリューフィールド
ビット 4 = 1 空値省略
ビット 5 = 1 ピリオディックグループフィールド
ビット 6 = 1 フォネティックソースフィールド
ビット 7 = 1 サブ/スーパーディスクリプタソースフィールド
ビット 8 = 1 ユニークディスクリプタ

フィールド定義情報は間に空白を置かず、直前のフィールド定義情報に続きます。

Top of page