バージョン 4.2.5
 —  プログラミングガイド  —

画面設計

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


ファンクションキー行の制御 - 端末コマンド %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

その他の表示オプション

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

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

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

%YB

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

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
%YT

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

  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 ===>
%Ynn

画面の 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 ===>

カーソル依存

%YC

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

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

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

Top of page

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

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

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

メッセージ行の位置設定

%MB

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

  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.
%MT

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

  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 - メッセージ行の制御」を参照してください。

メッセージ行の保護

%MP

メッセージ行を非保護モードから保護モードに、またはその逆に切り替えます。 非保護モードでは、メッセージ行も端末入力に使用できます。

メッセージ行の色

%M=color-code

指定した色でメッセージ行を表示します。カラーコードの詳細については、『パラメータリファレンス』ドキュメントに記載されている、セッションパラメータ CD の説明を参照してください。

Top of page

フィールドへの色の割り当て - 端末コマンド %=

端末コマンド %= を使用すると、もともと色の設定をサポートしていないプログラムのフィールド属性に色を割り当てることができます。 コマンドにより、指定の属性で定義されたすべてのフィールド/テキストが、指定の色で表示されます。

定義済みの色割り当てが使用している端末タイプに合わない場合は、このコマンドを使用して元の割り当てを新しい割り当てで上書きできます。

%= コマンドは、Natural エディタ内で、例えばマップの作成中に色割り当てをダイナミックに定義するために使用することもできます。

コード 説明
空白 色変換テーブルをクリアします。
F 新たに定義した色で、プログラムで割り当てた色を上書きします。
N プログラムで割り当てられた色属性は変更されません。
O 出力フィールド
M 変更可能なフィールド(出力および入力)
T テキスト定数
B 点滅
C 斜体
D デフォルト値
I 高輝度
U 下線付き
V 反転
BG 背景
BL
GR
NE デフォルト色
PI ピンク
RE
TU 空色
YE 黄色

例:

%=TI=RE,OB=YE

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

Top of page

取り囲み - 端末コマンド %D=B

取り囲み(外枠の縁取り)とは、端末画面に特定のフィールドが表示されたときにそのフィールドの周囲に線を生成する機能です。 フィールドの周囲にそのような "外枠" を描画することは、フィールドの長さと画面上での位置をユーザーに示すためのもう 1 つのメソッドです。

取り囲み機能は、通常、ダブルバイト文字セットの表示もサポートしている特定のタイプの端末でしか使用できません。

端末コマンド %D=B は、取り囲みの制御に使用されます。 このコマンドの詳細については、『端末コマンド』ドキュメントの関連するセクションを参照してください。

Top of page

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

端末コマンド %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 の説明を参照してください。

Top of page

ウィンドウ

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

ウィンドウとは

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

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

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

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

物理画面上の位置

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

Physical screen

論理ページ上の位置

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

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

Logical page

DEFINE WINDOW ステートメント

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: < - + >")で表示されます。 情報は、上部か下部のいずれか、または両方のフレームラインに表示されます。

TOPBOTTOM で、位置情報を上のフレームラインまたは下のフレームラインのどちらに表示するかを指定します。

LEFTRIGHT で、位置情報をフレームラインの左または右のどちらに表示するかを指定します。

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

Top of page

標準/ダイナミックレイアウトマップ

標準レイアウトマップ

マップエディタのチュートリアル」セクションの説明のとおり、標準レイアウトは、マップエディタで定義できます。 このレイアウトによって、アプリケーション全体のすべてのマップの外観を統一できます。

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

ダイナミックレイアウトマップ

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

したがって、レイアウトマップをマップエディタの[マップエディタプロファイル(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

レイアウトマップの詳細については、『エディタ』ドキュメントの「マップエディタ」を参照してください。

Top of page

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

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

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 つのマップ DEMO1DEMO2、および 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=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 の説明を参照してください。

Top of page

スキル別ユーザーインターフェイス

同じアプリケーションを使用しつつ、ユーザーのスキルレベルに応じて(さまざまな詳細度の)異なるマップを使用したい場合があります。

アプリケーションを多言語で国際的に使用する必要がない場合、多言語のマップに対する手法を使用して、詳細度の異なるマップを定義できます。

例えば、初心者用に言語コード 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 の説明も参照してください。

Top of page