7.28.1 DEFINE のパラメータ

COLHDG

DECIMALS

DEFAULT

DESC

EDIT_CODE

EDIT_WORD

FIELD

INPUT_ATR

LABEL

LENGTH

OUTPUT_ATR

REFFLD

SHIFT

TO_OVERLAY

TYPE

FIELD

定義するフィールドの名前を指定します。フィールド名の先頭文字は、#でなければなりません。また、LANSAデータ・ディクショナリに定義されている名前は使用できません。さらに、このファンクション内で定義されているグループまたはリストの名前も使用できません。SQLxxxのようなフィールド名の使 用も避けてください。SQL (Structured Query Language) 機能を使用するファンクション(コマンドSELECT_SQL) で、問題が生じる可能性があります。

TYPE

定義するフィールドのタイプを指定します。以下の値を指定できます。

ファンクションまたはコンポーネントがRDMLXに対応していない場合、有効なタイプは*REFFLD、*DEC、および*CHARのみです。

REFFLDパラメータが*NONE以外で、参照フィールドがRDMLXフィールドの場合、TYPEパラメータでは*REFFLDを指定する必要があります。

REFFLDパラメータが*NONE以外で、参照フィールドがRDMLフィールドの場合、TYPEパラメータに設定できる値は、*REFFLD、*DEC、または*CHARのみです。ただし、*REFFLD以外のタイプを指定すると、リポジトリ・フィールドの基本的な考え方が役立たなくなるため、このような指定はお勧めしません。

LENGTH

定義するフィールドの長さを指定します。値*REFFLDを指定した場合、REFFLDパラメータで指定されたフィールドと同じ長さになります。許容されるフィールド長の詳細については、「フィールド・タイプ」を参照してください。

タイプ

Lengthパラメータに関する注意事項

*REFFLD

*REFFLD、または参照フィールドの基となるフィールド・タイプに有効な任意の値

*DEC または同義の*PACKED

LENGTH(*REFFLD) は、パラメータREFFLDが指定されている場合のみ指定できます。

REFFLD パラメータが指定され、それがRDMLフィールドの場合、フィールド長を31桁以上に変更すると、作業フィールドがRDMLXフィールドになります。

*CHAR

LENGTH(*REFFLD) は、パラメータREFFLDが指定されている場合のみ指定できます。

*STRING

LENGTH(*REFFLD) REFFLD(*NONE) を指定した場合、フィールド長はデフォルトで256桁になります。

*SIGNED

LENGTH(*REFFLD) は、パラメータREFFLDが指定されている場合のみ指定できます。

REFFLD パラメータが指定され、それがRDMLフィールドの場合、フィールド長を31桁以上に変更すると、作業フィールドがRDMLXフィールドになります。

*BIN

LENGTH(*REFFLD) は、パラメータREFFLDが指定されている場合のみ指定できます。

*DATE

日付は固定サイズ (常に10桁) です。

桁数の増減は*NONEでなければなりません。

増減桁数は*NONEでなければなりません。

*TIME

時刻は固定サイズ (常に8桁) です。

桁数の増減は*NONEでなければなりません。

増減桁数は*NONEでなければなりません。

*DATETIME

19、 21~29

長さによって、秒の小数部の桁数は異なってきます。これについて明確にしておく必要があります。長さ19桁は、秒の小数部がないことを意味し、21~29桁 は、秒の小数部の桁数が1~9桁であることを意味します。DECIMALSパラメータの影響は受けません。

LENGTH(*REFFLD) REFFLD(*NONE)を指定した場合、長さはデフォルトで、ISO標準である26桁(YYYY-MM-DD HH:MM:SS.ffffff)になります。

桁 数の増減は*NONEでなければなりません。

増 減桁数は*NONEでなければなりません。

 

「桁数の増減」値は、LENGTHパラメータで*REFFLDと組み合わせて使用されます。このフィールドの目的は、REFFLDキーワードで指定されたフィールドから取得した長さの値を変更できるようにすることです。指定できる値は、*PLUS、*MINUS、および*NONEです。*PLUSを指定した場合、REFFLDフィールドの長さ属性の値が増加します。*MINUSの場合は、REFFLDフィールドの長さ属性の値が減少します。*NONEを指 定した場合、REFFLDフィールドの長さ属性の値は変わりません。

「増減桁数」値は、LENGTHパラメータで*REFFLD値と組み合わせて使用され、「桁数の増減」値に直接関係しています。このフィールドの目的は、REFFLDフィールドの長さの値を増加または減少させる増分値または減分値を指定することです。このフィールドには、数値または値*NONEを指定できます。

DECIMALS

定義するフィールドの小数点以下桁数を指定します。この値は、タイプ値*DECと組み合わせて使用されます。値*REFFLDを指定した場合、REFFLDパラメータで指定されたフィールドと同じ小数点以下桁数が使用されます。それ以外の場合は、0~63の値を指定してください。

Signed および Packed 以外のタイプのフィールドには、必ず DECIMALS(0) または DECIMALS(*REFFLD *NONE *NONE) を指定する必要があります。

「桁数の増減」値は、DECIMALSパラメータで*REFFLDと組み合わせて使用されます。このフィールドの目的は、REFFLDキーワードで指定されたフィールドから取得した小数点以下桁数の値を変更できるようにすることです。指定できる値は、*PLUS、*MINUS、および*NONEです。*PLUSを指定した場合、REFFLDフィールドの小数点以下桁数属性の値が増加します。*MINUSの場合は、REFFLDフィールドの小数点以下桁数属性の値が減少します。*NONEを指定した場合、REFFLDフィールドの小数点以下桁数属性の値は変わりません。

「増減桁数」値は、小数点以下桁数パラメータで*REFFLD値と組み合わせて使用され、「桁数の増減」値に直接関係しています。このフィールドの目的は、REFFLDフィールドの小数点以下桁数の値を増加または減少させる増分値または減分値を指定することです。このフィールドには、数値または値 *NONEを指定できます。

REFFLD

この定義の基になるフィールドの名前を指定します。

LABEL

このフィールドに割り当てる15文字のラベルを指定します。*DEFAULTを指定した場合、デフォルトのラベルが使用されます。REFFLDパラメータを使用する場合は、参照フィールドのラベルが使用されます。REFFLDパラメータを使用しない場合は、定義するフィールドの名前がラベルとして使用されます。

DESC

このフィールドに割り当てる50文字の記述を指定します。*DEFAULTを指定した場合、デフォルトの記述が使用されます。REFFLDパラメータを使用する場合は、参照フィールドの記述が使用されます。REFFLDパラメータを使用しない場合は、定義するフィールドの名前が記述として使用されます。

COLHDG

このフィールドに割り当てる3×20文字の欄見出しを指定します。*DEFAULTを指定した場合、デフォルトの欄見出しが使用されます。REFFLDパラメータを指定する場合は、参照フィールドの欄見出しが使用されます。REFFLDを使用しない場合は、フィールド名が欄見出し1として使用されます。

EDIT_CODE

定義するフィールドに割り当てる編集コードを指定します。編集コードを指定しない場合は、値*DEFAULTが使用されます。

*DEFAULTを指定すると、REFFLDパラメータを使用している場合は、REFFLDフィールドの編集コードが使用されます。それ以外の場合、フィールドには編集コードは使用されません。

すべての数値フィールド(タイプ*DECなど)に対して編集コードを使用することを強くお勧めします。

タイプInteger、Signed、またはPackedのフィールドには、編集コードまたは編集語を指定できます。または、どちらも*DEFAULTのままにすることもできます。ただし、タイプIntegerのフィールドでは、編集コードWおよびYを使用できません。その他すべてのフィールド・タイプは、EDIT_CODE(*DEFAULT) EDIT_WORD(*DEFAULT)でなければなりません。

LANSAでサポートされる編集コードについては、

EDIT_WORD

定義するフィールドに割り当てる編集語を指定します。編集語を指定しない場合は、値*DEFAULTが使用されます。

*DEFAULTを指定すると、REFFLDパラメータを使用している場合は、REFFLDフィールドの編集語が使用されます。それ以外の場合、フィールドに編集語は使用されません。

タイプInteger、Signed、またはPackedのフィールドには、編集コードまたは編集語を指定できます。または、どちらも*DEFAULTのままにすることもできます。その他すべてのフィールド・タイプは、EDIT_CODE(*SAME) EDIT_WORD(*SAME)でなければなりません。

LANSAが実行する妥当性検査は単純なため、編集語の使用は経験のあるユーザーに限るべきです。

REFFLDオプションとEDIT_WORD(*DEFAULT)を使用すると、REFFLDに割り当てられた編集語が使用されることに注意してください。ただし、使用するフィールド長と小数点以下桁数がREFFLDフィールドと異なる場合は、関連付けられた編集語が無効になる可能性があります。このような場合、必要な編集語を定義する必要があります。

また、オペレーティング・システムによる浮動通貨記号を含む編集語の処理が、画面パネル上とレポート上とで異なることに注意してください。このような場合、レポートの生成用に、別のフィールド(または「仮想」フィールド)を使用することをお勧めします。

編集語がLANSAでRDMLコマンド言語により定義されている場合は、その編集語を単一引用符ではなく三重引用符で囲んでください。

例えば:

末尾に%が必要な5,2の数値フィールドの場合、編集語を定義する正しい方法は以下のとおりです。

DEFINE FIELD(#INCREASE) TYPE(#DEC) LENGTH(5) DECIMALS(2) LABEL('Sales Increase') EDIT_WORD('''   .  %''')
 

以下は、末尾に%が必要な5,2の数値フィールドの編集語を定義する方法として正しくありません。

DEFINE FIELD(#INCREASE) TYPE(#DEC) LENGTH(5) DECIMALS(2) LABEL('Sales Increase') EDIT_WORD('   .  %')

 

詳細については、IBMマニュアルの『Data Description Specifications』のキーワードEDTWRDを参照してください。

INPUT_ATR

定義するフィールドに割り当てる入力属性を指定します。入力属性を定義しない場合、値*DEFAULTが使用されます。

*DEFAULTを指定すると、REFFLDパラメータを使用している場合は、REFFLDフィールドの入力属性が使用されます。それ以外の場合、フィールド・タイプに応じて、英数字フィールドまたは数値フィールドに対するシステムのデフォルト入力属性が使用されます。

RDMLXフィールドで使用可能な属性の詳細については、「フィールド・タイプ」を参照してください。

タイプ A (英数字)、P (パック 10 進数)、S (符号付き) の有効な入力属性は以下のとおりです。

属性

説明/コメント

A

P

S

AB

ブランク入力可能

Y

Y

Y

ME

入力必須項目チェック

Y

Y

Y

MF

全桁入力チェック

Y

Y

Y

M10

Modulus 10 のチェック

 

Y

Y

M11

Modulus 11 のチェック

 

Y

Y

VN

名前の妥当性チェック

Y

 

 

FE

フィールド EXITキーを必要に設定

Y

Y

Y

LC

小文字入力可能。この属性を設定しない場合は、『LANSA/AD ユーザーガイド』「システム区画の言語属性 を 表示または変更する」「PC ロケール・大文字変換」を参照してください。

Y

 

 

RB

右寄せブランクの埋め込み

 

Y

Y

RZ

右寄せゼロの埋め込み

 

Y

Y

RL

カーソルを右から左に移動

Y

Y

Y

RLTB

カーソルを左から右、上から下にタブ゙移動。SAA/CUA区画でのみ有効。すべての画面パネルに影響します。

Y

Y

Y

GRN

緑色表示

Y

Y

Y

WHT

白色表示

Y

Y

Y

RED

赤色表示

Y

Y

Y

TRQ

青緑色表示

Y

Y

Y

YLW

黄色表示

Y

Y

Y

PNK

ピンク色表示

Y

Y

Y

BLU

青色表示

Y

Y

Y

BL

明滅表示

Y

Y

Y

CS

欄の区切り線の表示

Y

Y

Y

HI

高輝度表示

Y

Y

Y

ND

非表示(非表示フィールド)

Y

Y

Y

RA

レコードの自動前進フィールド

Y

Y

Y

SREV

反転形式で保存。この特別な属性は、双方向言語用です。このコンテキストには適用できません。

Y

N

N

SBIN

Binary 形式で保存。この特別な属性は、リポジトリ・フィールド用です。このコンテキストには適用できません。

Y

N

N

HIND

ヒンディー数字。ヒンディー数字で表示。『LANSA/AD ユーザーガイド』「ヒンディー数字」を 参照してください。

N

Y

Y

CBOX *

チェック・ボックス

Y

N

N

RBnn *

ラジオ・ボタン

Y

N

N

PBnn *

プッシュ・ボタン

Y

N

N

DDXX *

ドロップダウン

Y

N

N

 

*の付いた属性は、対応するGUI WIMP構造のあるフィールドを表します。詳細については、『LANSA/AD ユーザーガイド』「GUI WIMP構成」を参照してください。

SAA/CUA ガイドラインに準拠した区画では、以下の属性も使用できます(実際には、上記の属性を使用することをお勧めします)。

属性

説明/コメント

ABCH

アクション・バーとプルダウン選択項目

PBPT

画面のタイトル

PBPI

画面の識別子

PBIN

ユーザーへの説明

PBFP

フィールドのプロンプト/ラベル/記述の詳細

PBBR

括弧

PBCM

フィールド欄見出し

PBGH

グループ見出し

PBNT

標準のテキスト

PBET

強調のテキスト

PBEN *

入力可能のフィールド(標準)

PBEE *

入力可能のフィールド(強調)

PBCH

メニューに表示される選択項目

PBSC

最後にメニューから選択された項目

PBUC

使用不可の選択項目

PBCN

入力不可のフィールド(標準)

PBCE

入力不可のフィールド(強調)

PBSI

スクロール情報

PBSL

区切り線

PBWB

ポップアップ・ウィンドウの境界

FKCH

ファンクション・キーの情報

 

注:通常、PBENおよびPBEEは入力属性としてのみ指定します。これらの属性の詳細については、『LANSA アプリケーション設計ガイド』「OS/400のSAA/CUAインプリメンテーション」を参照してください。また、1つのフィールドに指定できる色は1つのみであることに注意してください。複数の色を使用すると、他の属性に影響を与える可能性があります。詳細については、IBMマニュアルの『Data Description Specifications』を参照してください。検討する必要のあるキーワードは、CHECK、COLOR、およびDSPATRです。

OUTPUT_ATR

定義するフィールドに割り当てる出力属性を指定します。出力属性を指定しない場合、値*DEFAULTが使用されます。

*DEFAULTを指定すると、REFFLDパラメータを使用している場合は、REFFLDフィールドの出力属性が使用されます。それ以外の場合、フィールド・タイプに応じて、英数字フィールドまたは数値フィールドに対するシステムのデフォルト出力属性が使用されます。

RDMLXフィールドで使用可能な属性の詳細については、「フィールド・タイプ」を参照してください。

タイプAlpha (A)、Packed (P)、および Signed (S) の有効な出力属性は以下のとおりです。

 

属性

説明/コメント

A

P

S

GRN

緑色表示

Y

Y

Y

WHT

白色表示

Y

Y

Y

RED

赤色表示

Y

Y

Y

TRQ

青緑色表示

Y

Y

Y

YLW

黄色表示

Y

Y

Y

PNK

ピンク色表示

Y

Y

Y

BLU

青色表示

Y

Y

Y

BL

明滅表示

Y

Y

Y

CS

欄の区切り線の表示

Y

Y

Y

HI

高輝度表示

Y

Y

Y

ND

非表示(非表示フィールド)

Y

Y

Y

SREV

反転形式で保存。この特別な属性は、双方向言語用です。このコンテキストには適用できません。

Y

N

N

SBIN

Binary 形式で保存。この特別な属性は、リポジトリ・フィールド用です。このコンテキストには適用できません。

Y

N

N

Urxx

ユーザー定義のレポート属性。プリンター・ファイルのIBM i DDSステートメントへのアクセスを提供します。『LANSA/AD ユーザーガイド』「ユーザー定義レポート属性」を参照してください。

Y

Y

Y

HIND

ヒンディー数字。ヒンディー数字で表示。『LANSA/AD ユーザーガイド』「ヒンディー数字」 を参照してください。

N

Y

Y

CBOX *

チェック・ボックス

Y

N

N

RBnn *

ラジオ・ボタン

Y

N

N

PBnn *

プッシュ・ボタン

Y

N

N

DDxx *

ドロップダウン

Y

N

N

 

*の付いた属性は、対応するGUI WIMP構造のあるフィールドを表します。詳細については、『LANSA/AD ユーザーガイド』「GUI WIMP構成」を参照してください。

SAA/CUA ガイドラインに準拠した区画では、以下の属性も使用できます(実際には、上記の属性を使用することをお勧めします)。

属性

説明/コメント

ABCH

アクション・バーとプルダウン選択項目

PBPT

画面のタイトル

PBPI

画面の識別子

PBIN

ユーザーへの説明

PBFP

フィールドのプロンプト/ラベル/記述の詳細

PBBR

括弧

PBCM

フィールド欄見出し

PBGH

グループ見出し

PBNT

標準のテキスト

PBET

強調のテキスト

PBEN

入力可能のフィールド(標準)

PBEE

入力可能のフィールド(強調)

PBCH

メニューに表示される選択項目

PBSC

最後にメニューから選択された項目

PBUC

使用不可の選択項目

PBCN *

入力不可のフィールド(標準)

PBCE *

入力不可のフィールド(強調)

PBSI

スクロール情報

PBSL

区切り線

PBWB

ポップアップ・ウィンドウの境界

FKCH

ファンクション・キーの情報

 

* 注:通常、PBCNおよびPBCEは出力属性としてのみ指定します。これらの属性の詳細については、『LANSA アプリケーション設計ガイド』「SAA/CUA Implementation」を参照してください。また、1つのフィールドに指定できる色は1つのみであることに注意してください。複数の色を使用すると、他の属性に影響を与える可能性があります。詳細については、IBMマニュアルの『Data Description Specifications』を参照してください。検討する必要のあるキーワードは、COLOR、DSPATRです。

DEFAULT

定義するフィールドに適用するデフォルト値を指定します。

これは、ファンクションの実行開始時のフィールド値です。フィールドのデフォルト値は、EXCHANGEコマンドで変更できます。

RDMLXフィールドにおけるDEFAULT(*DEFAULT) の意味については、

デフォルト値を指定しない場合、*DEFAULTが使用されます。すなわち、REFFLDパラメータが指定されている場合は、REFFLDフィールドのデフォルト値が使用されます。REFFLDパラメータを使用しない場合は、英数字フィールドに対してはデフォルト値*BLANKSが、また数値フィールドに対してはデフォルト値*ZEROが使用されます。

指定できるデフォルト値は以下のとおりです。

TO_OVERLAY

定義するフィールドで、このパラメータで参照するフィールド全体またはその一部をオーバーレイする(すなわち、同じ記憶域の場所を占有する)よう指定します。

RDMLXフィールドのオーバーレイや、RDMLXフィールドによる別フィールドのオーバーレイは無効です。

デフォルト値*NONEを指定した場合、定義するフィールドは、そのフィールド専用の記憶域を占有し、他のフィールドをオーバーレイしません。

*NONE以外にこのパラメータで指定できる値は、このプログラムまたはデータ・ディクショナリで定義されている別のフィールドの名前のみです。この場合、開始位置を指定することもできます。

TO_OVERLAYパラメータは、フィールドが別のフィールドと同じ記憶域(すなわち、メモリー内の場所)を占有することのできる強力な機能です。このパラメータが強力だからこそ、その使用により、どのような処理が行われ、どのような問題が生じる可能性があるかを正確に理解しておく必要があります。

このパラメータを使用する前に、以下の注意事項およびコメントに十分目を通しておいてください。

DEFINE FIELD(#DEC6) TYPE(*DEC) LENGTH(6) DECIMALS(0)
DEFINE FIELD(#OVR6) TYPE(*DEC) LENGTH(6) DECIMALS(0) TO_OVERLAY(#DEC6)
 

    この場合、RPGコンパイラでは、#DEC6がパック10進数 (6,0)値として扱われ、#OVR6はパック10進数(7,0)値として扱われます。どちらのフィールドも保管に必要なメモリー容量は4バイトで、メモリーの長さに関する問題は生じません。RPGコンパイラの動作が問題になるのは、レポート上に表示する際です。ただし、#OVR6を*OUTPUTのみで画面に表示すると、ファンクションのコンパイルがクラッシュします。これは、表示ファイルでの#OVR6の外部記述では、6桁のパック10進数として定義されているのに対し、上記のようにオーバーレイを指定すると、RPGコンパイラが#OVR6を7桁のパック10進数と見なすためです。

         DEFINE FIELD(#INPUT) TYPE(*CHAR) LENGTH(3)
         DEFINE FIELD(#INPC1) TYPE(*CHAR) LENGTH(1)       TO_OVERLAY(#INPUT 1)
         DEFINE FIELD(#INPC3) TYPE(*CHAR) LENGTH(1)       TO_OVERLAY(#INPUT 3)
 
         REQUEST FIELDS(#INPUT)
 
         BEGINCHECK
         VALUECHECK FIELD(#INPC1) WITH_LIST('A' 'B' 'C')
         VALUECHECK FIELD(#INPC3) WITH_LIST('X' 'Y' 'Z')
         ENDCHECK
 

このプログラムは、ワークステーションから3文字のフィールド (#INPUT) を受け入れ、最初の文字がA、B、またはCのいずれかで、最後の文字がX、Y、またはZのいずれかであるかどうかを検査します。

VALUECHECKコマンドによって、オーバーレイされるフィールド#INPC1または#INPC3に対してエラーがトリガーされると、オーバーレイされるフィールド#INPUTに対してもエラーがトリガーされます。すなわち、エラーのある状態でREQUESTコマンドが(再)実行されると、フィールド #INPUTは反転表示されます。

SHIFT

定義するフィールドに割り当てるキーボード・シフトを指定します。キーボード・シフトを指定しない場合は、値*DEFAULTが使用されます。

*DEFAULTを指定すると、REFFLDパラメータを使用している場合は、REFFLDフィールドのキーボード・シフトが使用されます。それ以外の場合、そのフィールドに対してキーボード・シフトは使用されません。

*DEFAULT以外に、各作業フィールド・タイプで有効なSHIFTの値については、「フィールド・タイプ」を参照してください。

タイプBooleanの作業フィールドの場合、SHIFTは*DEFAULTである必要があります。

詳細については、IBMマニュアルの『Data Description Specifications』を参照してください。参照する場所は、表示ファイルの35桁目の項目です。