STRUCT |
このコマンドには次の 2 つの目的があります。
このコマンドを使用して、エディタのワークエリアに現在あるプログラミングオブジェクトのソースコードのインデントを実行できます。
さまざまな表示機能によって、プログラムの構造が明確になるため、構造の不整合を検出できます。
ただし、STRUCT
は実際にカタログ化されているかどうかにかかわらず Natural ソースを処理するため、ソースの構文の正しさは解析されません。 ほとんどの場合、STRUCT
は適切に構造化されたソース行を提供しますが、不明確で期待どおりに構造化されないソース行がある場合があります。
次のステートメントタイプが STRUCT
コマンドの影響を受けます。
条件ステートメントブロック(AT BREAK
、IF
、DECIDE FOR
など)
DO/DOEND
ステートメントブロック
DEFINE DATA
ブロック
インラインサブルーチン
システムコマンド STRUCT
を入力すると、[STRUCT]
メニューが表示されます。 このメニューの機能は次のとおりです。
この機能を使用して、ソースコードの行に、プログラムの階層構造を反映したインデントを行うことができます。
この機能は、エディタコマンド STRUCT
の機能と同じです。
インデントでは、ソースコード行の長さが考慮されます。つまり、インデントされる行は、右のマージンを越えてシフトされません。"適切な" インデントで右マージンを越える行のシフトが必要な場合は、可能な限り右に移動されるだけで、マージンを越えることはありません。
生成機能では、次のオプションを指定できます。
フィールド | 説明 | ||||||
---|---|---|---|---|---|---|---|
ソース名 | このフィールドには、インデントするソースの名前を入力します。 指定されたソースは、システムファイルからワークエリアに読み込まれてインデントされます。
ソース名を指定しない場合は、エディタのワークエリアに現在存在するオブジェクトがインデントされます。 ワークエリアが空の場合は、ソース名を指定する必要があります。 |
||||||
Shift setting | このフィールドでは、ソースコード行をインデントする位置の数(1~9)を入力できます。 デフォルトでは、インデントは 2 つの位置ずつ行われます。 | ||||||
Align Comments |
|
||||||
Display Messages |
|
||||||
Return to STRUCT |
|
注意:
レポーティングモードのプログラムに行われるインデントはストラクチャードモードのプログラムとは異なります。
特殊ステートメント /*STRUCT OFF
および /*STRUCT ON
を使用して構造的なインデントからプログラムソースを部分的に除外できます。 このステートメントはソースコード行の先頭から入力する必要があります。 この 2 つのステートメント間のソースコード行は Generate(生成)機能を実行しても元のままです。
インデントする前のプログラムは次のとおりです。
DEFINE DATA LOCAL 1 EMPL VIEW OF EMPLOYEES 2 PERSONNEL-ID 2 FULL-NAME 3 FIRST-NAME 3 NAME 1 VEHI VIEW OF VEHICLES 2 PERSONNEL-ID 2 MAKE END-DEFINE FIND EMPL WITH NAME = 'ADKINSON' IF NO RECORDS FOUND WRITE 'NO RECORD FOUND' END-NOREC FIND (1) VEHI WITH PERSONNEL-ID = EMPL.PERSONNEL-ID DISPLAY EMPL.PERSONNEL-ID FULL-NAME MAKE END-FIND END-FIND END
同じプログラムに Generate Structured Source 機能を適用すると、次のようになります。
DEFINE DATA LOCAL 1 EMPL VIEW OF EMPLOYEES 2 PERSONNEL-ID 2 FULL-NAME 3 FIRST-NAME 3 NAME 1 VEHI VIEW OF VEHICLES 2 PERSONNEL-ID 2 MAKE END-DEFINE FIND EMPL WITH NAME = 'ADKINSON' IF NO RECORDS FOUND WRITE 'NO RECORD FOUND' END-NOREC FIND (1) VEHI WITH PERSONNEL-ID = EMPL.PERSONNEL-ID DISPLAY EMPL.PERSONNEL-ID FULL-NAME MAKE END-FIND END-FIND END
この機能では、オブジェクトの構造を明確にするいくつかの情報項目とともに、オブジェクトのソースコードを表示できます。
表示機能には、次のオプションがあります。
フィールド | 説明 | ||||
---|---|---|---|---|---|
ソース名 | このフィールドでは、表示するソースの名前を入力します。 指定されたソースがシステムファイルから読み込まれて表示されます。
ソース名を指定しない場合は、エディタのワークエリアに現在存在するオブジェクトが表示されます。 ワークエリアが空の場合は、ソース名を指定する必要があります。 |
||||
Display Compressed |
|
||||
Return to STRUCT |
|
次の情報が表示されます。
Line Numbers | ステートメントブロックを閉じるすべてのステートメントについて、ステートメントブロックを開始する対応するステートメントのソースコード行番号が、ソースコードの左に表示されます。 |
Structure Table | ソースコードの右には、開いているステートメントブロックのインジケータを含むテーブルが表示されます。 開いている各ステートメントブロックにつき 1 文字が表示されます。 異なる文字は、異なるタイプのステートメントを表します(文字の説明を表示するには、PF1 キーを押します)。 ソースコード内の構造の不整合は、構造テーブルに表示されるメッセージで示されます。 |
14:17:47 - Structured Source ABC in Library XYZ - 2003-02-04 0010 DEFINE DATA LOCAL *O 0020 1 EMPL VIEW OF EMPLOYEES *O 0030 2 PERSONNEL-ID *O 0040 2 FULL-NAME *O 0050 3 FIRST-NAME *O 0060 3 NAME *O 0070 1 VEHI VIEW OF VEHICLES *O 0080 2 PERSONNEL-ID *O 0090 2 MAKE *O 0100 0010 END-DEFINE *O 0110 FIND EMPL WITH NAME = 'ADKINSON' *F 0120 IF NO RECORDS FOUND *FJ 0130 WRITE 'NO RECORD FOUND' *FJ 0140 0120 END-NOREC *FJ 0150 FIND (1) VEHI WITH PERSONNEL-ID = EMPL.PERSONNEL-I *FF 0160 DISPLAY EMPL.PERSONNEL-ID FULL-NAME MAKE *FF 0170 0150 END-FIND *FF 0180 0110 END-FIND *F 0190 END * PF1=Help, PF2=Menu, PF3=Exit, PF6=Top, PF12=Cancel. |
ワークエリアの現在の内容は、表示されるソースの影響を受けません。
この機能では、オブジェクトのソースコードを構造情報とともに印刷できます。
印刷機能はソースの構造の表示機能に相当しますが、出力は画面に表示されずにプリンタに送信されます。
印刷機能には、表示機能と同じオプションがあります。
この機能では、システムファイルからソースを読み取り、構造情報に加えて、構造情報を説明するソースの先頭の複数行(行番号 0000)とともに、エディタのワークエリアに書き込むことができます。
書き込み機能には、ソースの構造の表示機能と同じオプションがありますが、ソース名を指定する必要があります。
ソースとその構造情報は、ワークエリアにテキストとして書き込まれ、システムコマンド EDIT
で編集できます。