このドキュメントでは、Natural Net Data インターフェイスとネットデータ
プロトコル定義について説明します。
以下のトピックについて説明します。
『Installation』ドキュメントの「Natural Net Data インターフェイスのインストール」も参照してください。
Natural Net Data ドライバ NATNETTO
は、EntireX CICS 3270 Bridge や、メッセージ指向のサーバー環境(つまり TP モニタ)での類似のクライアント/サーバーソリューションをサポートするために導入されたコンポーネントです。
NATNETTO
が実装しているプロトコルドライバは、ネットデータプロトコルを使用して、Natural(レガシー)アプリケーションによるクライアントアプリケーションからのプログラム間通信を可能にします。 代表的な例は、CICS、IMS/TM、UTM などの TP
モニタ環境で実行される Natural アプリケーションにアクセスするデスクトップクライアント(Natural for Windows または VBA などで構築)です。
"ネットデータ" とは、プロトコルにテキスト定数などのフォーマットデータやデバイス依存の制御シーケンスなどが一切含まれていないという意味です。 すべてのデータは出力可能なフォーマットで通信されます。 これは、結局、非英数字フィールドで必要なマーシャリングとアンマーシャリングはクライアントが行う必要があることを暗黙に示します。
基本的に、プロトコルは以下の 2 つの部分で構成されます。
ヘッダーまたはコントロールブロック、および未加工のネットデータを含むバリューバッファ。 この部分は必須です。 ヘッダーには、制御、環境、およびセッション情報が含まれ、データバッファの他の部分へのポインタが保持されます。 バリューバッファには、クライアントとサーバーの間で交換される実際のネットデータが含まれます。
オプションの変動部分。フォーマットバッファや属性バッファがあります。 オプションのフォーマットバッファには、バリューバッファのフィールドごとに 1 エントリの記述データが含まれます。 属性バッファには、バリューバッファのフィールドごとに 1 バイトのプリセット値 0 が含まれます。 該当するオプションが設定されている場合は、クライアントは変更された各フィールドのこの値を 1 に切り替える必要があり、このようにして mdt ビットの設定をエミュレートします。
ヘッダー、バリューバッファ、および属性バッファは、送受信メッセージに含まれます。フォーマットバッファは、送信メッセージにのみ含まれます。 ヘッダーは、クライアントがフロー制御のためにミラー化する必要があるトランザクション番号を保持します。 ほとんどのレガシーアプリケーションはブロックモードの端末から起動するように設計されているので、プロトコルは PF キーやカーソル位置など 3270 に類似の機能をサポートします。
全体的なメッセージレイアウトの以下の部分は必須です。
ヘッダー(以下の表の最初の 2 行)
バリューバッファ
以下の部分はオプションです。
フォーマットバッファ
属性バッファ
"FSCB" | バリューバッファオフセット | フォーマットバッファオフセット | ... | |
---|---|---|---|---|
属性バッファオフセット | 補助文字 | カーソル位置 | ... | |
バリューバッファ | ||||
フォーマットバッファ | ||||
属性バッファ |
レイアウトの各部分の詳細については、表 1 を参照してください。
フィールド | フォーマット | 範囲 | 意味 |
---|---|---|---|
Eyecatcher | A4 | FSCB | アイキャッチャー |
Product code | A3 | - | 製品 ID |
Protocol version | N2 | 01 - 99 | 特定の製品のバージョン |
Value buffer offset | N10 | 算出 | メッセージの先頭からのバリューバッファのオフセット |
Format buffer offset | N10 | 算出 | メッセージの先頭からのフォーマットバッファのオフセット |
Total message length | N10 | 算出 | すべてのバッファを累積した長さ |
Message number | N6 | 呼び出しごとに 1 ずつ増加 | 通信相手によってエコーされます。 |
Block number | N5 | 01~99(通常は 01) | 1 つのメッセージ内の分割ブロック用 |
Number of parameters | N5 | 算出 | VB 内のパラメータ数 |
Session token | A32 | セキュリティトークン | |
Message format | A1 | 表 2 を参照 | バリューバッファ内のフィールド区切りのモード |
Delimiter character | A1 | - | |
Architecture | A2 | 表 3 を参照 | 送信相手のアーキテクチャ |
Call type | A2 | 表 4 を参照 | 現在のコールのタイプ |
Response code | N4 | 0001 - 9999 | クライアントからのレスポンスコード |
Block status | A1 | L または N | ブロックは最後の msg または次の msg |
Server name/TAC | A8 | - | TP トランザクションコードまたはサーバーの名前 |
Aid character | A2 | 表 5 を参照 | クライアントで押されたか生成された補助文字 |
Cursor line | N3 | 1 - クライアント上の最大物理行 | カーソル行または 000 * |
Cursor column | N3 | 1 - クライアント上の最大物理列 | カーソル列またはカーソルフィールド番号 * |
Attribute buffer offset | N10 | 算出 | メッセージの先頭からの属性バッファのオフセット |
Timestamp | A16 | 一般 | クロック値(マップ格納時間、16 進数、出力可能)を保存 |
DBID | N5 | 1 - 32767 | サーバー上の FNAT の DBID
|
File number | N5 | 1 - 32767 | サーバー上の FNAT のファイル番号
|
Date form | A1 | I、G、E、U | Natural に従った日付フォーマット |
Decimal character | A1 | - | サーバー上の Natural デリミタ文字 |
Input delimiter char. | A1 | - | Natural INPUT 区切り文字(サーバー) |
Control character | A1 | - | Natural 制御文字(サーバー) |
Language code | N2 | 01 - 99 | Natural 言語コード(サーバー) |
Application ID | A8 | - | Natural アプリケーション ID |
Program name/map | A8 | - | 実行中のプログラム/マップまたはフォーマット名 |
Error number | N5 | 00001 - 99999 | Natural エラー番号 |
Line number | N4 | 0001 - 9999 | 現在の I/O ステートメントの行番号 |
Error state | A1 | - | ステータスバイト |
Error program | A8 | - | エラーの原因となったオブジェクト |
Error level | N2 | 01 - 15 | エラーオブジェクトのサブルーチンレベル |
Message type | A1 | 表 6 を参照 | メッセージのタイプ |
Option flag 1 | A1 | 表 7 を参照 | コントロールフラグ |
Option flag 2 | A1 | 表 7 を参照 | コントロールフラグ |
Option flag 3 | A1 | 表 7 を参照 | コントロールフラグ |
Option flag 4 | A1 | 表 7 を参照 | コントロールフラグ |
Option flag 5 | A1 | 表 7 を参照 | コントロールフラグ |
Option flag 6 | A1 | 表 7 を参照 | コントロールフラグ |
Option flag 7 | A1 | 表 7 を参照 | コントロールフラグ |
Option flag 8 | A1 | 表 7 を参照 | コントロールフラグ |
* NATCONFG
にカーソルフィールド番号表記が設定されている場合は、カーソル行は常に 000
で、カーソル列はフィールドの絶対番号を含み、ここにカーソルが配置される(送信)か送信時に配置済み(受信)です。
注意:
現在、すべてのヘッダーフィールドが使用されているわけではありません。
フォーマット A1
値 | 意味 |
---|---|
D |
デリミタモード |
F |
固定フォーマットモード |
L |
フィールドの前に長さフィールド(N3)を配置 |
フォーマット A2 のマスク
値 | 意味 | |
---|---|---|
- | 1 |
下位バイト 1 番目のマスク(Vax) |
- | 2 |
未使用 |
- | 4 |
EBCDIC アーキテクチャのマスク |
- | 8 |
ASCII 8 アーキテクチャのマスク |
1 |
- | 浮動小数点表記 VAX のマスク |
2 |
- | 浮動小数点表記 IEEE のマスク |
フォーマット A2
通信のタイプ | 値 | 意味 |
---|---|---|
Natural ネットデータ/3GL | MD |
マップデータ(フォーマットを使用したネットデータ) |
ND |
ネットデータ | |
CM |
コマンドモード(サーバー) | |
FD |
マップフォーマットダウンロード | |
IP |
通常の入力ステートメント | |
CS |
セッションクローズ終了メッセージ |
フォーマット A2
補助文字 | PF キー |
---|---|
EN |
Enter |
CL |
Clear |
P1 |
PA1 |
P2 |
PA2 |
P3 |
PA3 |
01 |
PF1 |
02 |
PF2 |
03 |
PF3 |
. . . | . . . |
47 |
PF47 |
48 |
PF48 |
CS |
Close Session |
注意:CS
(Close Session)を使用すると、クライアントはサーバーセッションを直ちに強制的に閉じることができます。 したがって、これは実際には PF キーではなく、サーバーのコマンドコードです。
値 | 意味 |
---|---|
D |
ダイアログメッセージ |
A |
非同期 メッセージ |
P |
出力メッセージ |
すべてのフラグはフォーマット A1 です。
フラグ | 値 | 意味 |
---|---|---|
Option 1 | F |
メッセージにはフォーマットバッファが含まれます(フォーマットバッファオプション)。 |
Option 2 | S |
ネットデータは画面バッファから生成されます。 |
P |
ネットデータはページバッファから生成されます。 | |
Option 3 | A |
メッセージには属性バッファが含まれます(属性バッファオプション)。 |
Option 4 | P |
VB 内のデータは表示フォーマット(出力可能)です。 |
I |
VB 内のデータは送信元の内部フォーマットです。 | |
A |
データは英数字に変換された内部フォーマットです。 | |
Option 5 | M |
送信メッセージにはオーバーレイ部分が含まれます。 |
Option 6 | 1 |
拡張フォーマットバッファオプション 1。 |
2 |
拡張フォーマットバッファオプション 2。 | |
Option 7 | 将来的に使用される予定。 | |
Option 8 | 将来的に使用される予定。 |
フォーマットバッファの各エントリは、以下の 4 つの要素から成る可変長の文字列です。
識別子
保護インジケータ
フォーマットインジケータ
出力可能フィールド長
要素 | 値 | 意味 |
---|---|---|
識別子 | F |
フィールド |
S |
サブフィールド | |
保護 | M |
変更可能フィールド |
O |
出力専用フィールド、保護されたフィールド | |
フォーマット | A |
アルファベット |
N |
数値 | |
フィールド長 | L~LLL,L |
Natural 標準に従った長さ指定 |
FMA20 |
フィールド、変更可能、フォーマットはアルファベット、フィールド長は 20 |
SMN12,4 |
サブフィールド、変更可能、フォーマットは数値、フィールド長は 12.4 |
O |
出力専用フィールド、保護されたフィールド |
注意:
数値長の精度部分は、デリミタおよび小数点文字プロファイルパラメータの現在の値に関係なく、常にコンマ(,)で区切られます。 アルファベットタイプのフィールドについては、精度部分は省略されます。
サブフィールドを使用して、Natural のダイナミック属性機能によって基本フィールドから分離されたフィールドを指定します。 フィールドがさまざまなサブフィールドにダイナミックに分割される場合は、次のようにマークされます。
最初のサブフィールドは通常どおり識別子 F
でマークされ、その他のすべてのサブフィールドは S
で識別されます。
以下の図に、データセクションの一部を示します。これは、Natural の内部画面属性バッファのレイアウトを示します。 フォーマットバッファの拡張オプション 1 が設定されている場合は、属性バイト(PATTR1
~PATTR4
)の各フィールドは出力可能なフォーマットになり、適切なフィールドフォーマットバッファエントリに追加されます。 拡張は基本フォーマットエントリから "/"(スラッシュ)で区切られます。
PATTR1 |
DS |
X |
|
ATTRIBUTE BYTE 1 |
P1TMP |
EQU |
X'80' |
1000 0000 |
TEMPORARY PROTECTED (ONLY PAGE) |
P1EXTLNG |
EQU |
X'80' |
1000 0000 |
EXTENDED LENGTH (ONLY SCREEN) |
P1RPA |
EQU |
X'40' |
0100 0000 |
FIELD CAN BE REPEATED |
P1PROT |
EQU |
X'20' |
0010 0000 |
FIELD IS PROTECTED |
P1NUM |
EQU |
X'10' |
0001 0000 |
FIELD IS NUMERIC |
P1SKIP |
EQU |
P1PROT+P1NUM (X'30') |
|
FIELD WILL BE SKIPPED AUTOMATICALLY |
P1HIGH |
EQU |
X'08' |
0000 1000 |
FIELD IS HIGHLIGHTED |
P1BLINK |
EQU |
X'04' |
0000 0100 |
FIELD IS BLINKING |
P1NOND |
EQU |
P1HIGH+P1BLINK (X'0C') |
|
FIELD IS NON-DISPLAY |
P1NHC |
EQU |
X'02' |
0000 0010 |
FIELD MAY NOT BE PRINTED |
P1CURS |
EQU |
X'01' |
0000 0001 |
SET CURSOR HERE (ONLY UNPROT) |
|
SPACE |
|
|
|
PATTR2 |
DS |
X |
|
ATTRIBUTE BYTE 2 |
P2ITAL |
EQU |
X'80' |
1000 0000 |
ITALIC/CURSIVE |
P2MAND |
EQU |
X'40' |
0100 0000 |
INPUT MANDATORY |
P2MFILL |
EQU |
X'20' |
0010 0000 |
MANDATORY FILL |
P2LC |
EQU |
X'10' |
0001 0000 |
DO NOT TRANSLATE (LOWER CASE) |
P2CS2 |
EQU |
X'08' |
0000 1000 |
SECOND CHARACTER SET |
P2UL |
EQU |
X'04' |
0000 0100 |
UNDERLINED |
P2RVID |
EQU |
X'02' |
0000 0010 |
REVERSED VIDEO |
P2RL |
EQU |
X'01' |
0000 0001 |
RIGHT-LEFT |
|
SPACE |
|
|
|
PATTR3 |
DS |
X |
COLOR ATTRIBUTE |
ATTRIBUTE BYTE 3 |
P3TP |
EQU |
X'80' |
1000 0000 |
TERMINAL PROGRAM AVAILABLE |
P3PFK |
EQU |
X'40' |
0100 0000 |
*COM FIELD |
P3NUM |
EQU |
X'20' |
0010 0000 |
NUMERIC FIELDS |
P3HELPR |
EQU |
X'10' |
0001 0000 |
HELP ROUTINE AVAILABLE |
P3FRAME |
EQU |
X'08' |
0000 1000 |
FRAME ATTRIBUTE |
P3NEUTR |
EQU |
X'07' |
0000 0111 |
NEUTRAL |
P3YELL |
EQU |
X'06' |
0000 0110 |
YELLOW |
P3TURQ |
EQU |
X'05' |
0000 0101 |
TURQUOISE |
P3GREEN |
EQU |
X'04' |
0000 0100 |
GREEN |
P3PINK |
EQU |
X'03' |
0000 0011 |
PINK |
P3RED |
EQU |
X'02' |
0000 0010 |
RED |
P3BLUE |
EQU |
X'01' |
0000 0001 |
BLUE |
* |
|
FBI (DB) |
|
(FIELD PROCESSING INFORMATION) |
|
SPACE |
|
|
|
PATTR4 |
DS |
X |
|
INTERNAL PROCESSING ATTRIBUTES |
P4TEXT |
EQU |
X'80' |
1000 0000 |
FIELD IS TEXT CONSTANT |
P4SAME |
EQU |
X'40' |
0100 0000 |
SAME ATTRIBUTE AS BEFORE |
P4NATTR |
EQU |
X'20' |
0010 0000 |
FIELD NEW ATTRIBUTE |
* |
|
|
|
PAGE BUFFER, DYNAMIC ATTRIBUTE |
P4OVL |
EQU |
X'10' |
0001 0000 |
FIELD BELONGS TO OVERLAY BUFFER |
P4MDT |
EQU |
X'08' |
0000 1000 |
FIELD HAS BEEN MODIFIED |
P4MDTH |
EQU |
X'04' |
0000 0100 |
UPDATE FROM HELP (PAGE BUFFER) |
P4NFLD |
EQU |
X'04' |
0000 0100 |
FIELD NEW ON SCREEN |
* |
|
|
|
IF SET FOR OVL, NEW LINE |
P4CONT |
EQU |
X'02' |
0000 0010 |
FIELD IS CONT OF BEFORE |
P4LAST |
EQU |
X'01' |
0000 0001 |
LAST ATTRIBUTE IN BUFFER |
**P4HELP |
EQU |
P4TEXT+P4MDT |
|
HELP REQUEST FOR THIS FIELD |
拡張フォーマットバッファエントリ 18820300
は、フィールドが数値で、反転表示モードでは斜体で強調表示されることを示します。 フィールドの色はピンクです。
バリューバッファ構造には、以下の 3 つのモードが可能です。
固定フォーマット
すべてのパラメータは区切られずに単純に連結されます。 つまり、単一のパラメータは、フォーマットバッファ内のフォーマット記述に従って、または C 構造を適用して、データエリアまたはデータセクションに区切る必要があります。
デリミタ区切りフォーマット
パラメータは、設定可能なデリミタ文字で区切られます。
長さ前置フォーマット
各パラメータの先頭に、フォーマット N3 の長さフィールドが配置されます。 長さの表記は明示的です。
属性バッファはオプションです。 これは、パラメータフィールドごとに 1 バイトの、mdt フラグを示すエントリで構成されます。 mdt は、クライアントが各変更可能フィールドに設定する必要があります。 このフラグの値は "0" または "1" です。 1 の値は、mdt が設定されていることを表します。
この例では、図 1 に 3270 フォーマットの画面イメージを、図 2 に同じフォーマットの生成されたネットデータストリームを示します。 Natural マップの名前は NETM002
です。
TESTMAP NWI AL20.0 ABCDEFGHIJKLMNOPQRST NL20.0 1234567890 NL10.4 0000001234.5678 AL20C AAAAABBBBBCCCCDDDDDZ N20.0 999999999999999999 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12- Help - + %% |
図 1:3270 デバイス上の NETM002
FSCBNAT010000000206000000038000000004710000120000100006 F 04MD0000LNATvrsXSEN0000010000000465B3E0C25A1A1DE4000000000000I.,%01NETT O NETM002 000000170 D FSAP 1 ABCDEFGHIJKLMNOPQRST1234567890 0000001234.5678AAAAABBBBBCCCCDDDDDZ999999999999999999 FMA20/08100024FOA20/ 38102024FMA15/08102024FOA20/38101624FOA20/38102024FOA79/70000035.000000 |
図 2:NETM002
の実行により生成されたネットデータストリーム
NATvrs
は、現在の Natural バージョンのversion
、release
、system
maintenance level
を表します。
コンフィグレーション設定:固定フォーマット、フォーマットバッファ + 拡張フォーマットバッファ、属性バッファオプション、カーソル位置はフィールド番号で表現されています。