画面設計

このドキュメントでは、全般的な画面レイアウトを定義するオプションについて説明します。


ファンクションキー行の制御 - 端末コマンド %Y

端末コマンド %Y を使用すると、Natural ファンクションキー行を表示する方法と位置を定義できます。

以下に参考情報を示します。

ファンクションキー行のフォーマット

ファンクションキー行のフォーマットの定義には、以下の端末コマンドを使用できます。

%YN

 Software AGのタブフォーマットでファンクションキー行を表示します。

  Command ===>
  Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
        Help        Exit                                                  Canc 
%YS

名前が割り当てられているキーのみをシーケンシャルに出力したファンクションキー行を表示します(PF1=value、PF2=value、など)。

  Command ===>                                                                   
  PF1=Help,PF3=Exit,PF12=Canc
%YP

名前が割り当てられているキーのみを PC 風にシーケンシャルに出力したファンクションキー行を表示します(F1=value、F2=value、など)。

  Command ===>                                                                   
  F1=Help,F3=Exit,F12=Canc

その他の表示オプション

ファンクションキー行には、他にも以下のようなさまざまなコマンドオプションを使用できます。

  • 1 行および 2 行表示

  • 高輝度表示

  • 反転表示

  • カラー表示

これらのオプションの詳細については、『端末コマンド』ドキュメントの「%Y - PF キー行の制御」を参照してください。

ファンクションキー行の位置設定

%YB

画面の一番下にファンクションキー行を表示します。

%YT

画面の一番上にファンクションキー行を表示します。

%Ynn

画面の nn 行目にファンクションキー行を表示します。

カーソル依存

%YC

このコマンドにより、ファンクションキー行がカーソル依存になります。これは、ファンクションキー行が PC 画面上のアクションバーに似た動作をすることを意味します。希望するファンクションキー番号にカーソルを移動するか、またはファンクションキー名を指定して Enter キーを押すと、対応するファンクションキーが押されたかのような動作が Natural によって行われます。

カーソル依存をオフにするには、%YC を再度入力します(トグル切り替え)。

ファンクションキー名のみを表示して(%YH)タブ表示フォーマット(%YN)とともに %YC を使用することにより、快適なアクションバーの処理をアプリケーションで実現できます。単にファンクション名をカーソルで選択して Enter キーを押すだけで、そのファンクションを実行できます。

メッセージ行の制御 - 端末コマンド %M

端末コマンド %M には、Natural メッセージ行を表示する方法と位置を定義するためのさまざまなオプションを使用できます。

以下に参考情報を示します。

メッセージ行の位置設定

%MB

画面の一番下にメッセージ行を表示します。

%MT

画面の一番上にメッセージ行を表示します。

メッセージ行の位置設定に関する他のオプションについては、『端末コマンド』ドキュメントの「%M - メッセージ行の制御」を参照してください。

メッセージ行の色

%M=color-code

指定した色でメッセージ行を表示します。カラーコードの詳細については、『パラメータリファレンス』ドキュメントに記載されている、セッションパラメータ 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

この例では、すべての高輝度テキストフィールドに赤を割り当て、すべての点滅出力フィールドに黄色を割り当てています。

情報行 - 端末コマンド %X

端末コマンド %X は、Natural 情報行の表示を制御します。

詳細については、『端末コマンド』ドキュメントに記載されている、端末コマンド %X の説明を参照してください。

    Windows

    以下に参考情報を示します。

    ウィンドウとは

    ウィンドウとは、端末画面上に表示される、プログラムによって構築された論理ページのセグメントのことです。

    論理ページとは、Natural の出力エリアのことです。つまり、論理ページには、Natural プログラムによって表示用に生成された現在のレポート/マップが含まれています。この論理ページは物理画面よりも大きくすることができます。

    存在に気付かない場合もありますが、ウィンドウは常に存在しています。DEFINE WINDOW ステートメントで個別に指定されない限り、ウィンドウのサイズは端末画面の物理サイズと同一です。

    ウィンドウは、以下の 2 つの方法で操作できます。

    • 物理画面上では、ウィンドウのサイズと位置を制御できます。

    • 論理ページ上では、ウィンドウの位置を制御できます。

    物理画面上の位置

    以下の図は、物理画面上のウィンドウの位置を示しています。どちらの例にも、画面上のウィンドウの位置が違うだけで、論理ページの同じセクションが表示されていることに注意してください。

    Physical screen

    論理ページ上の位置

    以下の図は、論理ページ上のウィンドウの位置を示しています。

    論理ページでウィンドウの位置を変更しても、物理画面上のウィンドウのサイズおよび位置は変更されません。つまり、ウィンドウがページ上で移動するのではなく、ページがウィンドウの "下" で移動するということです。

    Logical page

    DEFINE WINDOW ステートメント

    DEFINE WINDOW ステートメントを使用して、物理画面上のウィンドウのサイズ、位置、属性を指定します。

    DEFINE WINDOW ステートメントはウィンドウをアクティブ化しません。ウィンドウをアクティブ化するには、SET WINDOW ステートメントを使用するか、INPUT ステートメントの WINDOW 節を使用します。

    DEFINE WINDOW ステートメントには、さまざまなオプションを使用できます。これらのオプションについて、以下の例で説明します。

    以下のプログラムは、物理画面上のウィンドウの位置を定義しています。

    ** 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 を指定すると、ウィンドウの外側にある物理画面全体に PF キー行、メッセージ行、および統計行が表示されます。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 ステートメント

    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 WINDOWINPUT WINDOWSET WINDOW の各ステートメントの詳細については、『ステートメント』ドキュメントの対応する説明を参照してください。

    標準およびダイナミックマップレイアウト

    標準レイアウトは、マップエディタで定義できます。このレイアウトによって、アプリケーション全体のすべてのマップの外観を統一できます。

    標準レイアウトを参照するマップを初期化すると、その標準レイアウトはマップに固定的に組み込まれます。つまり、標準レイアウトを変更する場合、変更を有効にするために影響を受けるマップをすべて再カタログ化する必要があります。

    標準レイアウトとは対照的に、ダイナミックレイアウトは、そのレイアウトを参照するマップに固定的に組み込まれるのではなく、ランタイム時に組み込まれます。

    したがって、マップレイアウトをマップエディタでダイナミックとして定義すると、レイアウトマップに対する変更はすべて、そのレイアウトマップを参照するすべてのマップに引き継がれます。マップを再カタログ化する必要はありません。

    標準およびダイナミックマップレイアウトの定義の詳細については、『エディタ』ドキュメントの「マッププロファイル)を参照してください。

    多言語ユーザーインターフェイス

    Natural を使用すると、各国で使用するための多言語アプリケーションを作成できます。

    マップ、ヘルプルーチン、エラーメッセージ、プログラム、関数、サブプログラム、コピーコードは、ダブルバイト文字セットを使用する言語を含め、最大 60 の異なる言語で定義できます。

    以下に参考情報を示します。

    Language Codes

    Natural では、言語ごとに言語コード(1~60)が割り当てられています。以下の表は、言語コード表を一部抜粋したものです。言語コードの完全な表については、『システム変数』ドキュメントに記載されている、システム変数 *LANGUAGE の説明を参照してください。

    Language Code 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 オブジェクトの言語の定義

    Natural オブジェクト(マップ、ヘルプルーチン、プログラム、関数、サブプログラム、コピーコード)の言語を定義するには、対応するマップコードをオブジェクト名に追加します。マップコードを除くオブジェクト名は、すべての言語で同一である必要があります。

    以下の例では、マップが英語とドイツ語で作成されています。マップの言語を識別するために、各言語に対応するマップコードがマップ名に組み込まれています。

    多言語アプリケーションのマップ名の例

    DEMO1 = 英語のマップ(マップコード 1)

    DEMO2 = ドイツ語のマップ(マップコード 2)

    英字のマップコードを持つ言語の定義

    マップコードは、1~9、A~Z または a~y の範囲内の値です。英字のマップコードには、特別な操作が必要です。

    小文字は大文字に自動的に変換されるため、通常は、名前に小文字があるオブジェクトをカタログ化することはできません。

    しかし、例えば、言語コードが 59 でマップコードが x の漢字(日本語)をオブジェクト名に定義する場合、小文字を使用する必要があります。

    このようなオブジェクトをカタログ化するには、まず正しい言語コード(ここでは 59)を端末コマンド %L=nn を使用して設定します。nn は言語コードです。

    その後、実際のマップコードの代わりにアンパーサンド(&)文字をオブジェクト名に使用して、オブジェクトをカタログ化します。したがって、マップ DEMO の日本語版を作成するには、DEMO& という名前でマップを格納します。

    ここで Natural オブジェクトのリストを確認すると、マップは DEMOx として正しくリストされます。

    言語コード 1~9 および大文字の A~Z のオブジェクトは、アンパーサンド(&)表記を使用せずに直接カタログ化できます。

    以下の例では、3 つのマップ DEMO1DEMO2、および DEMOx を確認できます。マップ DEMOx を削除するには、作成時と同じ方法で、つまり、端末コマンド %L=59 で正しい言語を設定し、アンパサンド(&)表記(DEMO&)を使用して削除します。

    ユーザー言語の定義

    システム変数 *LANGUAGE の定義として、プロファイルパラメータ ULANG(『パラメータリファレンス』を参照)または端末コマンド %L=nnnn は言語コード)を使用して、ユーザーごとに使用する言語を定義します。

    多言語オブジェクトの参照

    多言語オブジェクトをプログラムで参照するには、オブジェクト名にアンパーサンド(&)文字を使用します。

    以下のプログラムでは、マップ 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 の説明も参照してください。