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 |
フィールドの拡張属性を指定します。
|