このドキュメントでは、全般的な画面レイアウトを定義するオプションについて説明します。
端末コマンド %Y
を使用すると、Natural ファンクションキー行を表示する方法と位置を定義できます。
以下に参考情報を示します。
ファンクションキー行のフォーマットの定義には、以下の端末コマンドを使用できます。
Software AGのタブフォーマットでファンクションキー行を表示します。
Command ===> Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit Canc |
名前が割り当てられているキーのみをシーケンシャルに出力したファンクションキー行を表示します(PF1=value, PF2=value, ...)。
Command ===> PF1=Help,PF3=Exit,PF12=Canc |
名前が割り当てられているキーのみを PC 風にシーケンシャルに出力したファンクションキー行を表示します(F1=value, F2=value, ...)。
Command ===> F1=Help,F3=Exit,F12=Canc |
ファンクションキー行には、他にも以下のようなさまざまなコマンドオプションを使用できます。
1 行および 2 行表示
高輝度表示
反転表示
カラー表示
これらのオプションの詳細については、『端末コマンド』ドキュメントの「%Y - PF キー行の制御」を参照してください。
画面の一番下にファンクションキー行を表示します。
16:50:53 ***** NATURAL ***** 2002-12-18 User SAG - Main Menu - Library XYZ Function _ Development Functions _ Development Environment Settings _ Maintenance and Transfer Utilities _ Debugging and Monitoring Utilities _ Example Libraries _ Other Products _ Help _ Exit Natural Session Command ===> Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit Canc |
画面の一番上にファンクションキー行を表示します。
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit Canc 16:50:53 ***** NATURAL ***** 2002-12-18 User SAG - Main Menu - Library XYZ Function _ Development Functions _ Development Environment Settings _ Maintenance and Transfer Utilities _ Debugging and Monitoring Utilities _ Example Libraries _ Other Products _ Help _ Exit Natural Session Command ===> |
画面の nn 行目にファンクションキー行を表示します。 以下の例では、ファンクションキー行は 10 行目に設定されています。
16:50:53 ***** NATURAL ***** 2002-12-18 User SAG - Main Menu - Library XYZ Function _ Development Functions _ Development Environment Settings _ Maintenance and Transfer Utilities Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit Canc - Debugging and Monitoring Utilities _ Example Libraries _ Other Products _ Help _ Exit Natural Session Command ===> |
このコマンドにより、ファンクションキー行がカーソル依存になります。 これは、ファンクションキー行が PC 画面上のアクションバーに似た動作をすることを意味します。希望するファンクションキー番号にカーソルを移動するか、またはファンクションキー名を指定して Enter キーを押すと、対応するファンクションキーが押されたかのような動作が Natural によって行われます。
カーソル依存をオフにするには、%YC
を再度入力します(トグル切り替え)。
ファンクションキー名のみを表示して(%YH
)タブ表示フォーマット(%YN
)とともに %YC
を使用することにより、快適なアクションバーの処理をアプリケーションで実現できます。単にファンクション名をカーソルで選択して Enter キーを押すだけで、そのファンクションを実行できます。
端末コマンド %M
には、Natural メッセージ行を表示する方法と位置を定義するためのさまざまなオプションを使用できます。
以下に参考情報を示します。
画面の一番下にメッセージ行を表示します。
16:50:53 ***** NATURAL ***** 2002-12-18 User SAG - Main Menu - Library XYZ Function _ Development Functions _ Development Environment Settings _ Maintenance and Transfer Utilities _ Debugging and Monitoring Utilities _ Example Libraries _ Other Products _ Help _ Exit Natural Session Command ===> Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit Canc Please enter a function. |
画面の一番上にメッセージ行を表示します。
Please enter a function. 16:50:53 ***** NATURAL ***** 2002-12-18 User SAG - Main Menu - Library XYZ Function _ Development Functions _ Development Environment Settings _ Maintenance and Transfer Utilities _ Debugging and Monitoring Utilities _ Example Libraries _ Other Products _ Help _ Exit Natural Session Command ===> Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit |
メッセージ行の位置設定に関する他のオプションについては、『端末コマンド』ドキュメントの「%M - メッセージ行の制御」を参照してください。
メッセージ行を非保護モードから保護モードに、またはその逆に切り替えます。 非保護モードでは、メッセージ行も端末入力に使用できます。
指定した色でメッセージ行を表示します。カラーコードの詳細については、『パラメータリファレンス』ドキュメントに記載されている、セッションパラメータ CD
の説明を参照してください。
端末コマンド %=
を使用すると、もともと色の設定をサポートしていないプログラムのフィールド属性に色を割り当てることができます。 コマンドにより、指定の属性で定義されたすべてのフィールド/テキストが、指定の色で表示されます。
定義済みの色割り当てが使用している端末タイプに合わない場合は、このコマンドを使用して元の割り当てを新しい割り当てで上書きできます。
%=
コマンドは、Natural エディタ内で、例えばマップの作成中に色割り当てをダイナミックに定義するために使用することもできます。
コード | 説明 |
---|---|
空白 | 色変換テーブルをクリアします。 |
F | 新たに定義した色で、プログラムで割り当てた色を上書きします。 |
N | プログラムで割り当てられた色属性は変更されません。 |
O | 出力フィールド |
M | 変更可能なフィールド(出力および入力) |
T | テキスト定数 |
B | 点滅 |
C | 斜体 |
D | デフォルト値 |
I | 高輝度 |
U | 下線付き |
V | 反転 |
BG | 背景 |
BL | 青 |
GR | 緑 |
NE | デフォルト色 |
PI | ピンク |
RE | 赤 |
TU | 空色 |
YE | 黄色 |
例:
%=TI=RE,OB=YE
この例では、すべての高輝度テキストフィールドに赤を割り当て、すべての点滅出力フィールドに黄色を割り当てています。
取り囲み(外枠の縁取り)とは、端末画面に特定のフィールドが表示されたときにそのフィールドの周囲に線を生成する機能です。 フィールドの周囲にそのような "外枠" を描画することは、フィールドの長さと画面上での位置をユーザーに示すためのもう 1 つのメソッドです。
取り囲み機能は、通常、ダブルバイト文字セットの表示もサポートしている特定のタイプの端末でしか使用できません。
端末コマンド %D=B
は、取り囲みの制御に使用されます。 このコマンドの詳細については、『端末コマンド』ドキュメントの関連するセクションを参照してください。
端末コマンド %X は、Natural 統計行/情報行の表示を制御します。 この行は統計行または情報行として使用できますが、同時に両方を兼ねることはできません。
以下に参考情報を示します。
統計行の表示/非表示を切り替えるには、端末コマンド %X
を入力します(これはトグル機能です)。 統計行を表示に設定すると、以下のような統計情報が表示されます。
前回の画面操作で画面に転送されたバイト数
現在のページの論理行サイズ
現在のページの物理行サイズ
統計行の詳細については、『端末コマンド』ドキュメントに記載されている、端末コマンド %X
の説明を参照してください。
以下の例は、画面の一番下に表示されている統計行を示しています。
> > + Program POS Lib SAG All ....+....1....+....2....+....3....+....4....+....5....+....6....+....7.. 0010 SET CONTROL 'XT' 0020 SET CONTROL 'XI+' 0030 DEFINE PRINTER (2) OUTPUT 'INFOLINE' 0040 WRITE (2) 'EXECUTING' *PROGRAM 'BY' *INIT-USER 0050 WRITE 'TEST OUTPUT' 0070 END 0080 0090 0100 0110 0120 0130 0140 0150 0160 0170 0180 0190 0200 IO=264,AI =292,L=0 C= ,LS=80,P =23,PLS=80,PCS=24,FLD=82,CLS=1,ADA=0 |
統計行は、例えば、デバッグのためにステータス情報を表示する情報行として使用することも、SAA 標準による定義に従って、セパレータ行として使用することもできます。
統計行を情報行として定義するには、端末コマンド %XI+
を使用します。
上記のコマンドで情報行を有効にすると、以下の例のように、DEFINE PRINTER
ステートメントを使用したデータの出力先として情報行を定義できます。
SET CONTROL 'XT' SET CONTROL 'XI+' DEFINE PRINTER (2) OUTPUT 'INFOLINE' WRITE (2) 'EXECUTING' *PROGRAM 'BY' *INIT-USER WRITE 'TEST OUTPUT' END
上記のプログラムを実行すると、出力画面の一番上の情報行にステータス情報が表示されます。
EXECUTING POS BY SAG Page 1 2001-01-22 10:56:06 TEST OUTPUT |
統計行/情報行の詳細については、『端末コマンド』ドキュメントに記載されている、端末コマンド %X
の説明を参照してください。
以下に参考情報を示します。
ウィンドウとは、端末画面上に表示される、プログラムによって構築された論理ページのセグメントのことです。
論理ページとは、Natural の出力エリアのことです。つまり、論理ページには、Natural プログラムによって表示用に生成された現在のレポート/マップが含まれています。 この論理ページは物理画面よりも大きくすることができます。
存在に気付かない場合もありますが、ウィンドウは常に存在しています。 DEFINE WINDOW
ステートメントで個別に指定されない限り、ウィンドウのサイズは端末画面の物理サイズと同一です。
ウィンドウは、以下の 2 つの方法で操作できます。
物理画面上では、ウィンドウのサイズと位置を制御できます。
論理ページ上では、ウィンドウの位置を制御できます。
以下の図は、物理画面上のウィンドウの位置を示しています。 どちらの例にも、画面上のウィンドウの位置が違うだけで、論理ページの同じセクションが表示されていることに注意してください。
以下の図は、論理ページ上のウィンドウの位置を示しています。
論理ページでウィンドウの位置を変更しても、物理画面上のウィンドウのサイズおよび位置は変更されません。 つまり、ウィンドウがページ上で移動するのではなく、ページがウィンドウの "下" で移動するということです。
DEFINE WINDOW
ステートメントを使用して、物理画面上のウィンドウのサイズ、位置、属性を指定します。
DEFINE WINDOW
ステートメントはウィンドウをアクティブ化しません。ウィンドウをアクティブ化するには、SET WINDOW
ステートメントを使用するか、INPUT
ステートメントの WINDOW
節を使用します。
DEFINE WINDOW
ステートメントには、さまざまなオプションを使用できます。 これらのオプションについて、以下の例で説明します。 このステートメントは、Natural のデフォルトの端末タイプ設定を参照します。端末コマンド %T=
およびプロファイルパラメータ TTYPE
の説明も参照してください。
以下のプログラムは、物理画面上のウィンドウの位置を定義しています。
** Example 'WINDX01': DEFINE WINDOW ************************************************************************ DEFINE DATA LOCAL 1 COMMAND (A10) END-DEFINE * DEFINE WINDOW TEST SIZE 5*25 BASE 5/40 TITLE 'Sample Window' CONTROL WINDOW FRAMED POSITION SYMBOL BOTTOM LEFT * INPUT WINDOW='TEST' WITH TEXT 'message line' COMMAND (AD=I'_') / 'dataline 1' / 'dataline 2' / 'dataline 3' 'long data line' * IF COMMAND = 'TEST2' FETCH 'WINDX02' ELSE IF COMMAND = '.' STOP ELSE REINPUT 'invalid command' END-IF END-IF END
ウィンドウは、ウィンドウ名によって識別されます。 名前の最大長は 32 文字です。 ウィンドウ名には、ユーザー定義変数と同じ命名規則が適用されます。 この例では、ウィンドウ名は TEST
です。
ウィンドウのサイズは、SIZE
オプションで設定します。 この例では、ウィンドウの高さは 5 行、幅は 25 列(ポジション)です。
ウィンドウの位置は、BASE
オプションで設定します。 この例では、ウィンドウの左上隅は行 5、列 40 に位置します。
TITLE
オプションを使用すると、ウィンドウフレームに表示するタイトルを定義できますが、これはウィンドウのフレームを定義した場合にのみ有効です。
CONTROL
節を使用して、PF キー行、メッセージ行、および統計行をウィンドウに表示するかフル物理画面に表示するかを指定します。 この例では、CONTROL WINDOW
によって、ウィンドウ内にメッセージ行が表示されます。 CONTROL SCREEN
を使用すると、ウィンドウの外側の物理画面全体に行が表示されます。 CONTROL
節を省略すると、デフォルトで CONTROL WINDOW
が適用されます。
FRAMED
オプションを使用すると、フレーム付きのウィンドウを定義できます。 このフレームは、カーソル依存です。 カーソル依存が適用可能な場所では、適切な記号(<、-、+、>。POSITION
節の説明を参照)の上にカーソルを置いて Enter キーを押すだけで、ウィンドウ内のページを上下左右に移動できます。 つまり、物理画面上のウィンドウの下にある論理ページを移動できます。 記号が表示されない場合は、カーソルを枠線の最上部(前のページに戻る場合)または最下部(次のページに進む場合)に置いて Enter キーを押すことにより、ウィンドウ内でページを前後に移動することができます。
FRAMED
オプションの POSITION
節を使用して、ウィンドウのフレームに表示する、論理ページ上のウィンドウの位置情報を定義します。 これは、論理ページがウィンドウよりも大きい場合にのみ適用されます。そうでない場合は、POSITION
節は無視されます。 位置情報は、論理ページが拡張する方向(現在のウィンドウの上、下、左、右)を示します。
POSITION
節を省略すると、デフォルトで POSITION SYMBOL TOP RIGHT
が適用されます。
POSITION SYMBOL
を使用すると、位置情報が記号形式("More: < - + >")で表示されます。 情報は、上部か下部のいずれか、または両方のフレームラインに表示されます。
TOP
/BOTTOM
で、位置情報を上のフレームラインまたは下のフレームラインのどちらに表示するかを指定します。
LEFT
/RIGHT
で、位置情報をフレームラインの左または右のどちらに表示するかを指定します。
端末コマンド %F=chv
で、フレームに使用する文字を定義できます。
c | 最初の文字は、ウィンドウフレームの 4 つの隅に使用されます。 |
---|---|
h | 2 番目の文字は、水平フレームラインに使用されます。 |
v | 3 番目の文字は、垂直フレームラインに使用されます。 |
例:
%F=+-!
上記のコマンドを実行すると、以下のようなウィンドウフレームが生成されます。
+------------------------+ ! ! ! ! ! ! ! ! +------------------------+
INPUT WINDOW
ステートメントは、DEFINE WINDOW
ステートメントで定義したウィンドウを有効にします。 以下の例では、ウィンドウ TEST が有効化されています。 ウィンドウにデータを出力する場合(WRITE
ステートメントを使用する場合など)は、SET WINDOW
ステートメントを使用します。
前述のプログラムを実行すると、入力フィールド COMMAND
がウィンドウに表示されます。 セッションパラメータ AD
を使用して、フィールドの値を高輝度で表示し、下線を充填文字として使用するよう定義されています。
プログラム WINDX01 の出力:
> r > + Program WINDX01 Lib SYSEXPG Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7.. 0010 ** Example 'WINDX01': DEFINE WINDOW 0020 ******************************* +----Sample Window-----+ *************** 0030 DEFINE DATA LOCAL ! message line ! 0040 1 COMMAND (A10) ! COMMAND __________ ! 0050 END-DEFINE ! dataline 1 ! 0060 * +More: + >---------+ 0070 DEFINE WINDOW TEST 0080 SIZE 5*25 0090 BASE 5/40 0100 TITLE 'Sample Window' 0110 CONTROL WINDOW 0120 FRAMED POSITION SYMBOL BOTTOM LEFT 0130 * 0140 INPUT WINDOW='TEST' WITH TEXT 'message line' 0150 COMMAND (AD=I'_') / 0160 'dataline 1' / 0170 'dataline 2' / 0180 'dataline 3' 'long data line' 0190 * 0200 IF COMMAND = 'TEST2' ....+....1....+....2....+....3....+....4....+....5....+... S 29 L 1 |
下のフレームラインの位置情報 More: + >
は、ウィンドウに表示されている情報の他にも論理ページ上に情報があることを示しています。
論理ページ上のさらに下にある情報を表示するには、カーソルを下のフレームラインのプラス記号(+)に移動して Enter キーを押します。
ウィンドウの表示が下に移動します。 テキスト long data line
はウィンドウのサイズに収まらないため、完全には表示されていないことに注意してください。
> r > + Program WINDX01 Lib SYSEXPG Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7.. 0010 ** Example 'WINDX01': DEFINE WINDOW 0020 ******************************* +----Sample Window-----+ *************** 0030 DEFINE DATA LOCAL ! message line ! 0040 1 COMMAND (A10) ! dataline 3 long data ! 0050 END-DEFINE ! dataline 2 ! 0060 * +More: - >---------+ 0070 DEFINE WINDOW TEST 0080 SIZE 5*25 0090 BASE 5/40 0100 TITLE 'Sample Window' 0110 CONTROL WINDOW 0120 FRAMED POSITION SYMBOL BOTTOM LEFT 0130 * 0140 INPUT WINDOW='TEST' WITH TEXT 'message line' 0150 COMMAND (AD=I'_') / 0160 'dataline 1' / 0170 'dataline 2' / 0180 'dataline 3' 'long data line' 0190 * 0200 IF COMMAND = 'TEST2' ....+....1....+....2....+....3....+....4....+....5....+... S 29 L 1 |
この表示されていない情報を表示するには、カーソルを下のフレームラインの記号 > に移動して Enter キーを押します。 ウィンドウの表示が論理ページ上の右に移動して、それまで表示されていなかった単語 line
が表示されます。
> r > + Program WINDX01 Lib SYSEXPG Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7.. 0010 ** Example 'WINDX01': DEFINE WINDOW 0020 ******************************* +----Sample Window-----+ *************** 0030 DEFINE DATA LOCAL ! message line ! 0040 1 COMMAND (A10) ! line ! <== 0050 END-DEFINE ! ! 0060 * +More: < - ---------+ 0070 DEFINE WINDOW TEST 0080 SIZE 5*25 0090 BASE 5/40 0100 TITLE 'Sample Window' 0110 CONTROL WINDOW 0120 FRAMED POSITION SYMBOL BOTTOM LEFT 0130 * 0140 INPUT WINDOW='TEST' WITH TEXT 'message line' 0150 COMMAND (AD=I'_') / 0160 'dataline 1' / 0170 'dataline 2' / 0180 'dataline 3' 'long data line' 0190 * 0200 IF COMMAND = 'TEST2' ....+....1....+....2....+....3....+....4....+....5....+... S 29 L 1 |
複数のウィンドウを開くことはもちろん可能です。 ただし、Natural ウィンドウでは、アクティブにできるのは常に 1 つのウィンドウのみ、つまり最新のウィンドウのみです。 画面に前のウィンドウが表示されていても、アクティブではないので、Natural に無視されます。 現在のウィンドウにのみ入力できます。 入力する十分なスペースがない場合は、まずウィンドウサイズを調整する必要があります。
COMMAND
フィールドに「TEST2
」と入力すると、プログラム WINDX02
が実行されます。
** Example 'WINDX02': DEFINE WINDOW ************************************************************************ DEFINE DATA LOCAL 1 COMMAND (A10) END-DEFINE * DEFINE WINDOW TEST2 SIZE 5*30 BASE 15/40 TITLE 'Another Window' CONTROL SCREEN FRAMED POSITION SYMBOL BOTTOM LEFT * INPUT WINDOW='TEST2' WITH TEXT 'message line' COMMAND (AD=I'_') / 'dataline 1' / 'dataline 2' / 'dataline 3' 'long data line' * IF COMMAND = 'TEST' FETCH 'WINDX01' ELSE IF COMMAND = '.' STOP ELSE REINPUT 'invalid command' END-IF END-IF END
2 つ目のウィンドウが開きます。 もう 1 つのウィンドウは表示されたままですが、非アクティブです。
message line > r > + Program WINDX01 Lib SYSEXPG Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7.. 0010 ** Example 'WINDX01': DEFINE WINDOW 0020 ******************************* +----Sample Window-----+ *************** 0030 DEFINE DATA LOCAL ! message line ! Inactive 0040 1 COMMAND (A10) ! COMMAND TEST2_____ ! Window 0050 END-DEFINE ! dataline 1 ! <== 0060 * +More: + >---------+ 0070 DEFINE WINDOW TEST 0080 SIZE 5*25 0090 BASE 5/40 0100 TITLE 'Sample Window' 0110 CONTROL WINDOW 0120 FRAMED POSITION SYMBOL B +------Another Window-------+ Currently 0130 * ! COMMAND __________ ! Active 0140 INPUT WINDOW='TEST' WITH TEXT ' ! dataline 1 ! Window 0150 COMMAND (AD=I'_') / ! dataline 2 ! <== 0160 'dataline 1' / +More: +------------------+ 0170 'dataline 2' / 0180 'dataline 3' 'long data line' 0190 * 0200 IF COMMAND = 'TEST2' |
新しいウィンドウのメッセージ行は、ウィンドウ上ではなく、物理画面の上部に表示されることに注意してください。 これは、WINDX02
プログラムの CONTROL SCREEN
節によって定義されています。
DEFINE WINDOW
、INPUT WINDOW
、SET WINDOW
の各ステートメントの詳細については、『ステートメント』ドキュメントの対応する説明を参照してください。
「マップエディタのチュートリアル」セクションの説明のとおり、標準レイアウトは、マップエディタで定義できます。 このレイアウトによって、アプリケーション全体のすべてのマップの外観を統一できます。
標準レイアウトを参照するマップを初期化すると、その標準レイアウトはマップに固定的に組み込まれます。 つまり、標準レイアウトを変更する場合、変更を有効にするために影響を受けるマップをすべて再カタログ化する必要があります。
標準レイアウトとは対照的に、ダイナミックレイアウトは、そのレイアウトを参照するマップに固定的に組み込まれるのではなく、ランタイム時に組み込まれます。
したがって、レイアウトマップをマップエディタの[マップエディタプロファイル(Define Map Settings For MAP)]画面で "ダイナミック" として定義すると(以下の例を参照)、レイアウトに対する変更はすべて、そのレイアウトを参照するすべてのマップに引き継がれます。 マップを再カタログ化する必要はありません。
08:46:18 Define Map Settings for MAP 2001-01-22 Delimiters Format Context ----------------- --------------------------- -------------------------- Cls Att CD Del Page Size ...... 23 Device Check .... ________ T D BLANK Line Size ...... 79 WRITE Statement _ T I ? Column Shift ... 0 (0/1) INPUT Statement X A D _ Layout ......... STAN1___ Help ____________________ A I ) dynamic ....... Y (Y/N) as field default N (Y/N) A N ª Zero Print ..... N (Y/N) M D & Case Default ... UC (UC/LC) M I : Manual Skip .... N (Y/N) Automatic Rule Rank 1 O D + Decimal Char ... . Profile Name .... SYSPROF O I ( Standard Keys .. Y (Y/N) Justification .. L (L/R) Filler Characters Print Mode ..... __ ------------------------ Optional, Partial .... _ Control Var .... ________ Required, Partial .... _ Optional, Complete ... _ Apply changes only to new fields? N (Y/N) Required, Complete ... _ Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit Let |
レイアウトマップの詳細については、『エディタ』ドキュメントの「マップエディタ」を参照してください。
Natural を使用すると、各国で使用するための多言語アプリケーションを作成できます。
マップ、ヘルプルーチン、エラーメッセージ、プログラム、サブプログラム、コピーコードは、ダブルバイト文字セットを使用する言語を含め、最大 60 の異なる言語で定義できます。
以下に参考情報を示します。
Natural では、言語ごとに言語コード(1~60)が割り当てられています。 以下の表は、言語コード表を一部抜粋したものです。 言語コードの完全な表については、『システム変数』ドキュメントに記載されている、システム変数 *LANGUAGE
の説明を参照してください。
言語コード | 言語 | オブジェクト名のマップコード |
---|---|---|
1 | 英語 | 1 |
2 | ドイツ語 | 2 |
3 | フランス語 | 3 |
4 | スペイン語 | 4 |
5 | イタリア語 | 5 |
6 | オランダ語 | 6 |
7 | トルコ語 | 7 |
8 | デンマーク語 | 8 |
9 | ノルウェー語 | 9 |
10 | アルバニア語 | A |
11 | ポルトガル語 | B |
言語コード(左の列)が、システム変数 *LANGUAGE
に含まれているコードです。 このコードは Natural によって内部的に使用されます。 このコードを使用してユーザー言語を定義します(以下の「ユーザー言語の定義」を参照)。 表の右の列のマップコードを使用して、Natural オブジェクトの言語を識別します。
例:
ポルトガルの言語コードは "11" です。 ポルトガル語版の Natural オブジェクトをカタログ化するときに使用するコードは "B" です。
言語コードの完全な表については、『システム変数』ドキュメントに記載されている、システム変数 *LANGUAGE
の説明を参照してください。
Natural オブジェクト(マップ、ヘルプルーチン、プログラム、サブプログラム、コピーコード)の言語を定義するには、対応するマップコードをオブジェクト名に追加します。 マップコードを除くオブジェクト名は、すべての言語で同一である必要があります。
以下の例では、マップが英語とドイツ語で作成されています。 マップの言語を識別するために、各言語に対応するマップコードがマップ名に組み込まれています。
DEMO1
= 英語のマップ(マップコード 1)
DEMO2
= ドイツ語のマップ(マップコード 2)
マップコードは、1~9、A~Z または a~y の範囲内の値です。 英字のマップコードには、特別な操作が必要です。
小文字は大文字に自動的に変換されるため、通常は、名前に小文字があるオブジェクトをカタログ化することはできません。
しかし、例えば、言語コードが 59 でマップコードが x
の漢字(日本語)をオブジェクト名に定義する場合、小文字を使用する必要があります。
このようなオブジェクトをカタログ化するには、まず正しい言語コード(ここでは 59)を端末コマンド %L=nn
を使用して設定します。nn は言語コードです。
その後、実際のマップコードの代わりにアンパーサンド(&)文字をオブジェクト名に使用して、オブジェクトをカタログ化します。 したがって、マップ DEMO
の日本語版を作成するには、DEMO&
という名前でマップを STOW します。
ここで Natural オブジェクトのリストを確認すると、マップは DEMOx
として正しくリストされます。
言語コード 1~9 および大文字の A~Z のオブジェクトは、アンパーサンド(&)表記を使用せずに直接カタログ化できます。
以下の例では、3 つのマップ DEMO1
、DEMO2
、および DEMOx
を確認できます。 マップ DEMOx
を削除するには、作成時と同じ方法で、つまり、端末コマンド %L=59
で正しい言語を設定し、アンパーサンド(&)表記(DEMO&
)を使用して削除します。
08:41:14 ***** NATURAL LIST COMMAND ***** 2001-01-25 User SAG LIST * * Library SAG Cmd Name Type S/C SM Vers Level User-ID Date Time --- -------- ----------- --- -- ---- ----- -------- -------- -------- __ COM3 Program S/C S 2.2 0002 SAG 92-01-21 14:34:39 __ CUR Program +--------- DELETE ---------+ 92-01-22 09:37:02 __ CURS Map ! ! 92-01-22 09:37:41 __ D Program ! Please confirm deletion ! 92-01-21 14:13:14 __ DARL Program ! with name DEMOx ! 91-06-03 12:08:30 __ DARL1 Local ! DEMO&___ ! 91-06-03 12:03:52 __ DAV Program +--------------------------+ 92-01-29 09:07:52 de DEMOx Map S/C S 2.2 0002 SAG 92-02-25 08:41:04 __ DEMO1 Map S/C S 2.2 0002 SAG 92-01-22 08:38:32 __ DEMO2 Map S/C S 2.2 0002 SAG 92-01-22 08:07:32 __ DOWNCOM Program S S 2.2 0001 SAG 91-08-12 14:01:10 __ DOWNCOMR Program S S 2.2 0001 SAG 91-08-12 14:01:32 __ DOWNCOM2 Program S S 2.2 0001 SAG 91-08-15 13:02:20 __ DOWNDIR Program S S 2.2 0001 SAG 91-08-16 08:03:56 From ________ (New start value) 0 Command ===> Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit -- - + Canc |
システム変数 *LANGUAGE
の定義として、プロファイルパラメータ ULANG
(『パラメータリファレンス』を参照)または端末コマンド %L=nn
(nn は言語コード)を使用して、ユーザーごとに使用する言語を定義します。
多言語オブジェクトをプログラムで参照するには、オブジェクト名にアンパーサンド(&)文字を使用します。
以下のプログラムでは、マップ DEMO1
および DEMO2
が使用されています。 マップ名の最後のアンパーサンド(&)文字はマップコードを表し、*LANGUAGE
システム変数で定義されている現在の言語のマップを使用することを意味します。
DEFINE DATA LOCAL 1 PERSONNEL VIEW OF EMPLOYEES 2 NAME (A20) 2 PERSONNEL-ID (A8) 1 CAR VIEW OF VEHICLES 2 REG-NUM (A15) 1 #CODE (N1) END-DEFINE * INPUT USING MAP 'DEMO&' /* <--- INVOKE MAP WITH CURRENT LANGUAGE CODE ...
このプログラムを実行すると、英語のマップ(DEMO1
)が表示されます。 これは、*LANGUAGE
の現在の値が 1
= 英語であるためです。
MAP DEMO1 SAMPLE MAP Please select a function! 1.) Employee information 2.) Vehicle information Enter code here: _ |
以下の例では、端末コマンド %L=2
を使用して、言語コードが 2
= ドイツ語に変更されています。
プログラムを再度実行すると、ドイツ語のマップ(DEMO2
)が表示されます。
BEISPIEL-MAP Bitte wählen Sie eine Funktion! 1.) Mitarbeiterdaten 2.) Fahrzeugdaten Code hier eingeben: _ |
アプリケーションの中には、多言語プログラムを定義すると便利なものがあります。 例えば、一般的な請求書発行プログラムでは、請求書を発行する国ごとのさまざまな税制度に対応する、複数のサブプログラムを使用します。
多言語プログラムは、前述のマップの場合と同様の方法で定義します。
Natural ユーティリティ SYSERR を使用すると、Natural エラーメッセージを最大 60 の言語に変換できます。また、独自のエラーメッセージを定義することもできます。
ユーザーに表示されるメッセージの言語は、*LANGUAGE
システム変数によって決まります。
エラーメッセージの詳細については、『ユーティリティ』ドキュメントの「SYSERR ユーティリティ」を参照してください。
編集マスクを使用して定義する日付フィールドおよび時刻フィールドに使用される言語もまた、システム変数 *LANGUAGE
によって決まります。
編集マスクの詳細については、『パラメータリファレンス』に記載されている、セッションパラメータ EM
の説明を参照してください。
同じアプリケーションを使用しつつ、ユーザーのスキルレベルに応じて(さまざまな詳細度の)異なるマップを使用したい場合があります。
アプリケーションを多言語で国際的に使用する必要がない場合、多言語のマップに対する手法を使用して、詳細度の異なるマップを定義できます。
例えば、初心者用に言語コード 1 を定義し、上級者用に言語コード 2 を定義できます。 この単純かつ有効な手法を以下に示します。
以下のマップ(PERS1)には、エンドユーザー向けに、メニュー機能を選択する方法の説明が含まれています。 非常に詳細な情報が記載されています。 マップ名には、マップコード 1 が含まれています。
MAP PERS1 SAMPLE MAP Please select a function 1.) Employee information _ 2.) Vehicle information _ Enter code: _ To select a function, do one of the following: - place the cursor on the input field next to desired function and press Enter - mark the input field next to desired function with an X and press Enter - enter the desired function code (1 or 2) in the 'Enter code' field and press Enter |
詳細な説明が含まれていない同じマップが、同じ名前で保存されています。ただし、マップコードは 2 です。
MAP PERS2 SAMPLE MAP Please select a function 1.) Employee information _ 2.) Vehicle information _ Enter code: _ |
上記の例では、ULANG
プロファイルパラメータの値が 1 の場合は詳細な説明付きのマップが出力され、値が 2 の場合は説明なしのマップが出力されます。 『パラメータリファレンス』に記載されている、プロファイルパラメータ ULANG
の説明も参照してください。