前のページ|次のページ

%WINDOWステートメント

カスタマイズされたウィンドウを定義します。

種類: マクロステートメント
制限事項: マクロ定義またはオープンコードで使用可能
参照項目: %DISPLAYステートメント および %INPUTステートメント

構文

%WINDOW window-name <window-option(s)
group-definition(s)>
field-definition(s);

必須引数

window-name

ウィンドウ名を指定します。Window-nameはSAS名でなければなりません。

window-option(s)

ウィンドウの全般的な特性を指定します。フィールド定義やグループ定義の前に、すべてのウィンドウオプションを指定します。次のウィンドウオプションが使用できます。

COLOR=color

ウィンドウの背景色を指定します。ウィンドウの色やウィンドウフィールドの中身の色はデバイスにより異なります。Colorには次のいずれかを指定できます。

BLACK
BLUE
BROWN
CYAN
GRAY (またはGREY)
GREEN
MAGENTA
ORANGE
PINK
RED
WHITE
YELLOW
動作環境の情報: 色の表現は、お使いのディスプレイデバイスにより異なる場合があります。また、ディスプレイデバイスによっては、背景色がウィンドウ全体に影響するものもあれば、ウィンドウ境界にのみ影響するものもあります。

COLUMNS=columns

境界を含むウィンドウ内のディスプレイ列の数を指定します。ウィンドウは任意の数の列を含むことができます。また、ウィンドウはディスプレイの境界を越えて拡張できます。この機能は、ウィンドウの開発に使用したディスプレイデバイスよりも表示部の広いデバイス上でウィンドウを表示しなければならない場合に便利です。デフォルトでは、ウィンドウはディスプレイ内の残りの列をすべて埋めます。

動作環境の情報: 使用できる列の数は、お使いのディスプレイデバイスのタイプにより異なります。また、左境界および右境界は、お使いのデバイスに応じて、それぞれディスプレイの0~3列を使用します。様々なタイプのディスプレイデバイス向けのウィンドウを作成する場合、すべてのフィールドが最も狭いウィンドウ内でも表示できることを確認する必要があります。

ICOLUMN=column

ウィンドウが表示されるディスプレイ内の開始列を指定します。デフォルトでは、マクロプロセッサはディスプレイの列1からウィンドウを開始します。

IROW=row

ウィンドウが表示されるディスプレイ内の開始行を指定します。デフォルトでは、マクロプロセッサはディスプレイの行1からウィンドウを開始します。

KEYS=<<libref.>catalog.>keys-entry

ウィンドウ用のファンクションキー定義を含んでいるKEYSカタログエントリの名前を指定します。librefおよびcatalogを省略した場合、SASUSER.PROFILEが使用されます。keys-entry.

KEYS=オプションを省略した場合、KEYSウィンドウに定義されている現在のファンクションキー設定が使用されます。

MENU=<<libref.>catalog.>pmenu-entry

PMENUプロシジャを使って作成したメニューの名前を指定します。librefおよびcatalogを省略した場合、SASUSER.PROFILEが使用されます。pmenu-entry.

ROWS=rows

境界を含むウィンドウ内のディスプレイ行の数を指定します。ウィンドウは任意の数の行を含むことができます。また、ウィンドウはディスプレイデバイスの境界を越えて拡張できます。この機能は、ウィンドウの開発に使用したディスプレイデバイスよりも表示部の広いデバイス上でウィンドウを表示しなければならない場合に便利です。この値を省略すると、ウィンドウは、ディスプレイデバイス内の残りの行をすべて埋めます。

動作環境の情報: 使用できる行の数は、お使いのディスプレイデバイスのタイプにより異なります。

group-definition

グループ名を指定し、そのグループ内にあるすべてのフィールドを定義します。group definition は、 GROUP=group field-definition <...field-definition-n> という形式を持ちます。ここで、groupには、特定ウィンドウ内に表示したいフィールドグループの名前を指定します。ウィンドウには、任意の数のフィールドグループを含めることができます。GROUP=オプションを省略すると、ウィンドウには名前のないフィールドグループが1つだけ含められます。groupはSAS名でなければなりません。

フィールドをグループにまとめることにより、複数のコンテンツを含む単一のウィンドウを作成できます。特定のグループを参照するには、window.groupを使用します。

field-definition

ウィンドウ内に表示したいマクロ変数または文字列、およびその説明を指定します。ウィンドウには、任意の数のフィールドを含めることができます。

フィールドを使うことで、表示するマクロ変数値(または定数値)、そのウィンドウ内の位置、その属性を指定できます。定数テキストは引用符で囲んで指定します。フィールドの位置は、開始行と開始列により決定されます。指定できる属性には、色、フィールドに値を入力できるかどうか、強調表示などの特性が含まれます。
マクロ変数を含むフィールド定義の形式は次のとおりです。
<row> <column> macro-variable<field-length> <options>
定数テキストを含むフィールド定義の形式は次のとおりです。
<row> <column>'text' | “text”<options>
フィールド定義の要素には次のものがあります。

row

マクロ変数や定数テキストを表示する行を指定します。各行指定は、ポインタ制御と、通常、数を生成するマクロ式から構成されます。次の行ポインタ制御を使用できます。

#macro-expression

マクロ式により表されるウィンドウ内の行を指定します。マクロ式は正の整数であるか、または正の整数を生成する式でなければなりません。

/ (forward slash)

ポインタを次の行の列1に移動します。

マクロプロセッサは、ウィンドウの表示時ではなく、ウィンドウの定義時にマクロ式を評価します。このため、フィールドの表示時には、フィールドの行位置は固定となります。
グループ内の最初のフィールド指定でrowを省略した場合、マクロプロセッサはウィンドウの最初の行を使用します。それ以降のフィールド指定でrowを省略した場合、マクロプロセッサは直前のフィールドと同じ行を使用します。
マクロプロセッサは、ウィンドウの最初の使用可能な行(ウィンドウ境界、コマンド行、メニューバー、メッセージ行を除く)を行1として取り扱います。
フィールド定義の先頭には、rowまたはcolumnのどちらかを指定する必要があります。

column

マクロ変数や定数テキストを開始する列を指定します。各列指定は、ポインタ制御と、通常、数を生成するマクロ式から構成されます。次の列ポインタ制御を使用できます。

@macro-expression

マクロ式により表されるウィンドウ内の列を指定します。マクロ式は正の整数であるか、または正の整数を生成する式でなければなりません。

+macro-expression

マクロ式により表される番号の列にポインタを移動します。マクロ式は正の整数であるか、または正の整数を生成する式でなければなりません。

マクロプロセッサは、ウィンドウの表示時ではなく、ウィンドウの定義時にマクロ式を評価します。このため、フィールドの表示時には、フィールドの列位置は固定となります。
マクロプロセッサは、左境界に接する列を列1として扱います。columnを省略すると、列1が使用されます。
フィールド定義の先頭にはcolumnまたはrowのどちらかを指定する必要があります。

macro-variable

表示するマクロ変数、またはユーザーがその位置に入力した値を受け取るマクロ変数の名前を指定します。この値は、マクロ変数名(マクロ変数参照ではない)であるか、またはマクロ変数名を生成するマクロ式でなければなりません。

デフォルトでは、表示されたウィンドウに値が含まれている場合、対応するマクロ変数値の入力や変更が行えます。ウィンドウに表示されている値をユーザーが変更できないようにするには、PROTECT=オプションを使用します。
注意:
フィールドが重ならないようにしてください。
あるフィールドが、同時に表示される別のフィールドの上に重ならないようにします。フィールドが重なると、マクロ変数値の不正な割り当てなどの、予期せぬ結果が引き起こされる場合があります。(一部のディスプレイデバイスでは、隣接するフィールドが空白で区切られていない場合、それらは重複フィールドとして扱われます。)フィールドが重複している場合、警告メッセージがSASログに書き込まれます。

field-length

マクロ変数値を表示するため、または入力を受け付けるために、現在の行内でどれだけの数の位置が利用できるかを示す整数を指定します。field-lengthの最大値は、行内にある残りの位置数になります。フィールド長は、1行を超える長さには拡張できません。

注: フィールド長は、マクロ変数に保存されている値の長さには影響しません。フィールド長は、特定のフィールドに表示される文字数、または特定のフィールドで入力を受け付ける文字数にのみ影響します。
フィールドが既存のマクロ変数を含んでいる場合にfield-lengthを省略すると、マクロプロセッサは、そのマクロ変数値の現在の長さに等しい値をフィールド長として使用します。この値の最大値は、行内に残されている位置数、または次のフィールドの開始までに残されている位置数になります。
注意:
フィールドがマクロ変数を含んでいる場合には、必ずフィールド長を指定します。
%GLOBALまたは%LOCAL変数で定義されたマクロ変数において、マクロ変数の現在の値がヌルである場合、マクロプロセッサはフィールド長としてゼロを使用します。ユーザーはこのフィールドにはいかなる文字も入力できません。
そのフィールド内でマクロ変数が生成される場合にfield-lengthを省略すると、マクロプロセッサはフィールド長としてゼロを使用します。フィールドがマクロ変数を含んでいる場合には、必ずフィールド長を指定します。

'text' | “text”

表示する定数テキストを指定します。このテキストは、一重または二重引用符で囲む必要があります。ユーザーは定数テキストを含むフィールドには値を入力できません。

options

次のいずれかを指定できます。

ATTR=attribute | (attribute-1 < , attribute-2 ...>) A=attribute | (attribute-1 <, attribute-2 ...>)

フィールドの表示属性を制御します。利用可能な表示属性および同属性の組み合わせは、お使いのディスプレイデバイスにより異なります。

BLINK フィールドを点滅させます。
HIGHLIGHT フィールドを強調表示します。
REV_VIDEO フィールドを反転表示します。
UNDERLINE フィールドを下線付きで表示します。

AUTOSKIP=YES | NO

AUTO=YES | NO

ユーザーがフィールドのすべての位置にデータを入力した場合、現在のウィンドウまたはグループ内にある次の非保護フィールドにカーソルを移動するかどうかを制御します。AUTOSKIP=YESを指定すると、カーソルは自動的に次の非保護フィールドに移動します。AUTOSKIP=NOを指定すると、カーソルは自動的には移動しません。デフォルト値はAUTOSKIP=YESです。

COLOR=color C=color

フィールドの色を指定します。デフォルトの色は、デバイスにより異なります。Colorには次のいずれかを指定できます。

BLACK
BLUE
BROWN
CYAN
GRAY (またはGREY)
GREEN
MAGENTA
ORANGE
PINK
WHITE
YELLOW

DISPLAY=YES | NO

ユーザーがマクロ変数に値を入力する際に、その入力文字を表示するかどうかを指定します。DISPLAY=YES (デフォルト値)を指定すると、ユーザーが入力した文字が表示されます。DISPLAY=NOを指定すると、ユーザーが入力した文字は表示されません。

ユーザーがパスワードなどの機密情報を入力しなければならないアプリケーションでは、DISPLAY=NOを指定すると便利です。DISPLAY=オプションは、マクロ変数を含んでいるフィールドでのみ使用します。定数テキストは自動的に表示されます。

PROTECT=YES | NO

P=YES | NO

マクロ変数を含んでいるフィールドに対してユーザーが情報を入力できるようにするかどうかを指定します。PROTECT=NO (デフォルト値)を指定すると、そのフィールドにはユーザーが情報を入力できます。PROTECT=YESを指定すると、そのフィールドにはユーザーが情報を入力できません。PROTECT=オプションは、マクロ変数を含んでいるフィールドでのみ使用します。定数テキストを含んでいるフィールドは自動的に保護されます。

REQUIRED=YES | NO

フィールドに含まれているマクロ変数にユーザーが値を入力する必要があるかどうかを指定します。REQUIRED=YESを指定すると、そのフィールドに値を入力しない限り、現在のウィンドウの表示が消えなくなります。必須フィールドにはヌル値を指定できません。REQUIRED=NO (デフォルト値)を指定すると、そのフィールドに値を入力しなくても、現在のウィンドウの表示を消すことができます。ウィンドウのコマンド行にコマンドを入力することで、REQUIRED=YESの効果を取り除くことができます。

詳細

%WINDOWステートメントを使用すると、マクロプロセッサにより制御されるカスタマイズされたウィンドウを定義できます。これらのウィンドウにはコマンド行とメッセージ行があります。これらのウィンドウを使用して、テキストの表示や入力の受け付けが行えます。また、ウィンドウ環境コマンドの呼び出し、ファンクションキーの割り当て、PMENU機能により作成されたメニューの使用も行えます。
ウィンドウは呼び出す前に定義する必要があります。%WINDOWステートメントはマクロウィンドウを定義します。一方、%DISPLAYステートメントは、マクロウィンドウを表示します。マクロウィンドウはいったん定義されると、SASセッションが終了するまで存在します。ウィンドウの表示や再定義は、SASセッションにおける任意の時点で行えます。
マクロ定義内でマクロウィンドウを定義した場合、そのマクロを実行するたびに、同ウィンドウがマクロプロセッサにより再定義されます。定義が変化しないウィンドウを繰り返し表示する場合、次のいずれかを行うと、マクロ処理がより効率的になります。
  • マクロの外でウィンドウを定義すること。
  • ウィンドウを表示するマクロではなく、1度だけ実行するマクロ内でウィンドウを定義すること。
%WINDOWステートメントに新しいマクロ変数の名前が含まれている場合、マクロプロセッサは、その変数を現在のスコープで作成します。%WINDOWステートメントは、次に示す2つの自動マクロ変数を作成します。
SYSCMD
ウィンドウのコマンド行から入力された最後のコマンド(ウィンドウ環境により認識されなかったコマンド)を含んでいます。
SYSMSG
ユーザーがメッセージ行に表示するよう指定したテキストを含んでいます。
注: ウィンドウ環境におけるファイル管理、スクロール、検索、編集の各コマンドは、マクロウィンドウでは利用できません。

例1: アプリケーションのWELCOMEウィンドウの作成

次の%WINDOWステートメントは、単一のフィールドグループを含むウィンドウを作成します。
%window welcome color=white
           #5 @28 'Welcome to SAS.' attr=highlight
              color=blue
           #7 @15
              "You are executing Release &sysver on &sysday, &sysdate.."
           #12 @29 'Press ENTER to continue.';
WELCOMEウィンドウは、ディスプレイデバイス全体を埋めます。このウィンドウの背景色は白、最初のテキスト行の色は青で強調表示されます。それ以降の2行の色は黒で、通常表示されます。WELCOMEウィンドウはユーザーによる値の入力を必要としません。ただし、このウィンドウの表示を消すには、Enterキーを押す必要があります。
注: マクロ変数SYSVER、SYSDAY、SYSDATEを参照するために、区切り文字として2つの連続するピリオドが必要となります。

例2: 入力情報を使ってマクロ変数を作成する

次の例では、ユーザーに情報の入力を求め、その情報を使用してマクロ変数を作成しています。
%window info
  #5 @5 'Please enter userid:'
  #5 @26 id 8 attr=underline
  #7 @5 'Please enter password:'
  #7 @28 pass 8 attr=underline display=no;
%display info;
%put userid entered was &id;
%put password entered was &pass;  
前のページ|次のページ|ページの先頭へ