MFS定義ステートメント
本章では、MFSフォーマット・ファイルを作成する際に使用するマクロについて説明します。
1. 概要
MFSフォーマット・ファイルは、メッセージ定義ステートメントとフォーマット定義ステートメントで構成されます。それぞれ階層構造を持っており、メッセージ定義ステートメントはMIDとMODを作成し、フォーマット定義ステートメントはDIFとDOFを作成します。
以下は、マクロの定義に使用されるルールです。各マクロの定義を理解するために参考にしてください。
| 表記 | 意味 |
|---|---|
>>--- |
構文の始まり |
---> |
次の行に続く |
>--- |
前の行から続く |
--->< |
構文の終わり |
>>-------必須項目---------->< |
必須項目 |
>>---+---必須オプション1---+-----><
'---必須オプション2---'
|
必ず1つのオプションを選択 |
>>---+---------------+-----><
+---任意オプション1---+
'---任意オプション2---'
|
オプション項目 |
.---デフォルト項目---. >>---+----------------+---->< |
デフォルト値 |
.---------------.
V |
>>---+---繰り返し項目----+-----><
|
繰り返しできる項目 |
2. メッセージ定義ステートメント
メッセージ定義ステートメントの構造は以下のとおりです。1つのMSGステートメントの下に複数のLPAGEステートメントを定義することができます。SEGステートメントとMFLDステートメントも階層構造で定義します。
MSG
LPAGE
PASSWORD
SEG
DO
MFLD
....
ENDDO
SEG
....
LPAGE
....
MSGEND
2.1. MSGステートメント
メッセージ定義ステートメントの始まりを示します。
-
MSG TYPE=INPUTまたはOUTPUTの場合
>>-label--MSG--+------------------+-----------------------------> | .-INPUT--. | '-TYPE=-+-OUTPUT-+-' >--,SOR=(formatname)--------------------------------------------> >--+--------------------------+-------------------------------->< '-,NXT=msgcontrolblockname-'Keywords 説明 TYPE
定義ステートメントのタイプ(INPUTまたはOUTPUT)を指定します。
SOR
フォーマット定義ステートメントの名前を指定します。
NXT
次に参照するMIDまたはMODの名前を指定します。
現在の定義ステートメントがINPUTの場合はMOD名を、OUTPUTの場合はMID名を指定します。
-
MSG TYPE=OUTPUTの場合
>>-+----------------+------------------------------------------>< | .-NO--. | '-,PAGE=-+-YES-+-'
Keywords 説明 PAGE
OLP(Operator Logical Paging)機能を使用するかどうかを指定します。(サポートされません)
2.2. LPAGEステートメント
論理ページングを使用する場合は、LPAGEステートメントを指定する必要があります。現在、MSG TYPE=INPUTの論理ページングはサポートしていません。
-
MSG TYPE=OUTPUTの場合
>>-+-------+--+----------------------+--------------------------> '-label-' '-LPAGE--SOR=dpagename-' >--+--------------------------------------------------+---------> '-,COND=(-+-mfldname-----+--,--+->--+--,'value'--)-' +-mfldname(pp)-+ +-<--+ '-segoffset----' +-≥--+ +-≤--+ +-=--+ '-!=-' >--+--------------------------+-------------------------------->< '-,NXT=msgcontrolblockname-'Keywords 説明 SOR
LPAGEのためのフォーマット定義ステートメントのDPAGE名を指定します。
COND
LPAGEから1つのLPAGEを選択するための条件を指定します。
NXT
次のメッセージを処理するためのMID名を指定します。
このオプションが指定されている場合は、MSGステートメントで指定したMID名は無視されます。
2.3. SEGステートメント
アプリケーションでマルチセグメント・メッセージを使用する場合は、複数のSEGステートメントを定義します。
-
MSG TYPE=INPUTの場合
.-YES-. >>-+-------+--SEG ---GRAPHIC=-+-NO--+-------------------------->< '-label-'
Keywords 説明 GRAPHIC
YESで、TRANSACT(システム定義)でEDIT=UCに設定されている場合は、小文字を大文字に変換します。
-
MSG TYPE=OUTPUTの場合
>>-+-------+--SEG ---------------------------->< '-label-'
2.4. PASSWORDステートメント
PASSWORDステートメントの下に定義されているMFLDステートメントの入力データをパスワードとしてTACFログオン認証を受けます。認証時に使用されるユーザーIDは、入力を受けた端末に接続しているユーザーのIDです。SEGステートメントの先頭に指定して使用できます。
-
>>-+-------+--PASSWORD ---+-blank----+-------------------------->< '-comments-'Keywords 説明 comments
コメントです。
2.5. DOステートメント
繰り返されるMFLDステートメントを定義する際に使用します。DOステートメントを使用する場合は、マクロ・プリプロセッサ(macroprep)を使用して前処理した後、MFSフォーマット・コンパイラー・ツール(osimfsgen)を使用する必要があります。
>>-+-------+--DO--count---------------------------------------->< '-label-'
2.6. MFLDステートメント
端末からアプリケーションに送信するフィールド(TYPE=INPUT)、アプリケーションから端末に送信するフィールド(TYPE=OUTPUT)を定義します。
-
MSG TYPE=INPUTの場合
>>-+-------+--MFLD--+------------------------+------------------> '-label-' '-(dfldname-,'literal'-)-' >--+-------------------+--+--------------+----------------------> | .-1-------. | | .-L-. | '-,LTH=-+-nn------+-' '-,JUST=-+-R-+-' >--+----------------------------------------------------------->< '-,FILL=-+-X'40'-+-' +-X'hh'-+ +-C'c'--+ '-NULL--'Keywords 説明 (dfldname,'literal')
端末から受信したデータがない場合、'literal’に指定されている値をアプリケーションに送信します。
LTH
フィールドの長さを指定します。
JUST
左揃え、右揃えを指定します。
FILL
端末から受信したデータの長さがMFLDの長さより短い場合、残りの部分を埋める文字を指定します。
FILL=NULLの場合、残りの部分を埋めずに、受信した部分だけをアプリケーションに送信します。この場合、アプリケーションで可変長データ処理を行う必要があります。
デフォルト値はX'40’であり、FIILL=X'3F’はFILL=NULLと同じです。
FILL=X'00’は、FILL=NULLと異なり、残りの部分を「00」で埋めます。
-
MSG TYPE=OUTPUTの場合
>>-+-------+--MFLD--+----------------------------+--------------> '-label-' +-dfldname-------------------+ +-(dfldname, system-literal)-+ +-(dfldname, 'literal')------+ >--+--------------+---------------------------------------------> | .-1--. | '-,LTH=-+-nn-+-' >--+---------------------------+------------------------------->< | .-NO--. | '-,ATTR=(-+-----+-+-----+-)-' '-YES-' '-,nn-'Keywords 説明 (dfldname,system-literal)
システム・リテラルを指定します。システム・リテラルの詳細については、システム・リテラルを参照してください。
(dfldname,'literal')
DFLDに入力する文字列を’literal’に指定します。このMFLDのデータは、プログラムから画面に送信するデータに含まれていてはなりません。
LTH
フィールドの長さを指定します。
ATTR
DFLDに指定したATTR(YESまたはNO)とEATTR(nn)を動的に変更するために使用されます。属性の動的変更については、属性の動的変更の説明を参照してください。
2.6.1. システム・リテラル
以下は、システム・リテラルについての説明です。
| システム・リテラル | フォーマット | 説明 |
|---|---|---|
LTSEQ |
nnnnn |
論理端末の出力メッセージ番号 |
LTNAME |
aaaaaaaa |
論理端末の名前 |
TIME |
HH:MM:SS |
システムの時刻 |
DATE1 or YYDDD |
YY.DDD |
システムの日付 |
DATE2 or MMDDYY |
MM/DD/YY |
システムの日付 |
DATE3 or DDMMYY |
DD/MM/YY |
システムの日付 |
DATE4 or YYMMDD |
YY/MM/DD |
システムの日付 |
DATE1Y4 or YYYYDDD or DATEJUL |
YYYY.DDD |
システムの日付 |
DATE2Y4 or MMDDYYYY or DATEUSA |
MM/DD/YYYY |
システムの日付 |
DATE3Y4 or DDMMYYYY or DATEEUR |
DD/MM/YYYY |
システムの日付 |
DATE4Y4 or YYYYMMDD or DATEISO |
YYYY/MM/DD |
システムの日付 |
LPAGENO |
nnnn |
現在の論理ページ番号 |
2.6.2. 属性の動的変更
属性の動的変更は以下の場合に使用します。
-
ATTR=YES
DFLDのATTRで指定した属性を変更する場合に使用します。そのとき、アプリケーションが送信するデータには、追加で2バイトの属性データが含まれているため、LTHも2バイトのデータが含まれた長さに指定する必要があります。
たとえば、画面のデータ長が5バイトの場合、LTHを次のように設定します。
ATTR=YESの場合, LTH=2+5=7
-
ATTR=(,nn)
DFLDのEATTRで指定した属性を変更する場合に使用します。EATTRの属性データは2バイトで構成されるため、nnに指定した値の2倍の値を長さに含める必要があります。
たとえば、データ長が5バイトの場合、LTHを次のように指定します。詳細については、MFS機能を参照してください。
-
ATTR=(NO,3)、またはATTR=(,3)の場合
LTH= 2*3+5=11
-
ATTR=(YES,3)の場合
LTH=2+2*3+5=13
-
3. フォーマット定義ステートメント
フォーマット定義ステートメントの構造は以下のとおりです。1つのFMTステートメントの下に複数のDEVステートメントを定義することができます。DEVステートメントの下にDIVステートメント、DPAGEステートメント、DFLDステートメントを階層構造で定義します。
FMT
DEV
DIV
DPAGE
DO
DFLD
....
ENDDO
DPAGE
....
DEV
....
FMTEND
3.1. FMTステートメント
フォーマット定義ステートメントの始まりを示します。
>>-label--FMT--+-blanks---+------------------------------------><
'-comments-'
3.2. DEVステートメント
デバイス属性を設定します。
>>-+-------+--DEV--TYPE--+-3270-----------+--------------------->
'-label-' +-(3270,2)-------+
'-3270-An--------'
>--+------------------------------------------------+----------->
'-,FEAT=-+-IGNORE------------------------------+-'
+-1-----------------------------------+
+-2-----------------------------------+
+-3-----------------------------------+
+-4-----------------------------------+
+-5-----------------------------------+
+-6-----------------------------------+
+-7-----------------------------------+
+-8-----------------------------------+
+-9-----------------------------------+
+-10----------------------------------+
>--+-------------------+--+---------------------+--------------->
'-,SYSMSG=dfldlabel-' '-,DSCA=---X'value'---'
>--+--------------------------------------------------+--------><
| .-,-------------. |
| V | |
'-,PFK=(dfldname,-+----'literal'-----------------)-'
| .-,----------------------. |
| V | |
'---integer=---'literal'---+-'
| Keywords | 説明 |
|---|---|
TYPE |
OSIはTN3270端末をサポートします。 |
FEAT |
TERMINAL(システム定義)のFEATをFn(nは1~10の数字)に設定した場合、DEVのFEATの値がnであるDEVを選択します。 該当するDEVが存在しない場合は、IGNOREに設定したDEVをデフォルト値として選択します。 たとえば、TERMINALのFEAT=F2に定義した場合は、FEAT=2のDEVを選択します。FEAT=2のDEVがない場合は、FEAT=IGNOREのDEVが選択されます。 |
SYSMSG |
システム・メッセージを表示するDFLDを指定します。 |
DSCA |
DSCA(Default System Control Area)は、端末に画面を表示する際のいくつかの基本設定を指定します。たとえば、画面に書き込むとき、既存のものを削除してから書き込むか、そのまま書き込むかを決定します。 フォーマットは、2バイト文字の X’hhhh’です。TN 3270端末では、最初のバイトは0に固定されています。 2番目のバイトは以下のように設定できます。
|
PFK |
PFK(Program Function Key)のリテラルまたはコマンドを指定します。 dfldnameは、入力されたPFKに一致する’literal’を保存するフィールドです。MFLDステートメントで該当する値を参照する際に使用します。dfldnameの次のパラメータは 'literal’のみ定義するか、数字と一緒に定義することができます。 |
3.3. DIVステートメント
以下は、DIVステートメントの形式です。
>>-+-------+--DIV--+------------------+------------------------><
'-label-' | .-INOUT--. |
'-TYPE=-+-OUTPUT-+-'
| Keywords | 説明 |
|---|---|
TYPE |
現在の定義ステートメントがOUTPUTか、INOUTかを指定します。 |
3.4. DPAGEステートメント
定義する際にDPAGEステートメントを指定する必要があります。LPAGEのSORで指定した値がDPAGEのラベル名です。
>>-+-------+--DPAGE---------------------------------------------> '-label-' >--+-----------------------------+----------------------------->< '-CURSOR=(------lll,ccc-----)-'
| Keywords | 説明 |
|---|---|
CURSOR |
カーソルの位置を指定します。デフォルト値は(1,2)です。 |
3.5. DOステートメント
定期的に繰り返されるDFLDステートメントを定義するために使用されます。DOステートメントを使用する場合は、マクロ・プリプリプロセッサーであるmacroprepを使用して前処理してから、MSFフォーマット・コンパイラ・ツールであるosimfsgenを使用します。
>>-+-------+--DO--count---------------------------------------->< '-label-'
3.6. DFLDステートメント
端末から入力データを受信するか、表示するのに使用されるフィールドを指定します。
>>-+-------+--DFLD--+-----------+--,POS=(lll,ccc)--------------->
'-label-' '-'literal'-'
>--+----------+------------------------------------------------->
'-,LTH=nnn-'
>--+---------------------------------------+-------------------->
| .-ALPHA-. .-,NOPROT-. |
'-,ATTR=(-+-------+-+---------+-| A |-)-'
'-NUM---' '-,PROT---'
>--+--------------------------------------------------------+--><
'-,EATTR=(-+--------+-+----------+-+-----------+-| B |-)-'
+-HD-----+ +-,CD------+ '-,EGCS-----'
+-HBLINK-+ +-,BLUE----+
+-HREV---+ +-,RED-----+
'-HUL----' +-,PINK----+
+-,GREEN---+
+-,TURQ----+
+-,YELLOW--+
'-,NEUTRAL-'
A
.-,NORM---. .-,NOMOD-.
|--+-,------+--+---------+--+--------+--+-,--------+------------|
+-,NODISP-+ '-,MOD---'
'-,HI-----'
B
|--+-,-------------+--+-----------+-----+-------+---------------|
+-,OUTL-----+ '-,MIX--'
+-,BOX------+
+-,RIGHT----+
+-,LEFT-----+
+-,UNDER----+
'-,OVER-----'
| Keywords | 説明 |
|---|---|
POS |
フィールドの位置を指定します。 |
LTH |
フィールドの長さを指定します。 |
ATTR |
フィールドの属性を指定します。
|
EATTR |
フィールドの拡張属性を指定します。
|