バージョン 4.2.5
 —  システムコマンド  —

STRUCT

STRUCT

このコマンドには次の 2 つの目的があります。

ただし、STRUCT は実際にカタログ化されているかどうかにかかわらず Natural ソースを処理するため、ソースの構文の正しさは解析されません。 ほとんどの場合、STRUCT は適切に構造化されたソース行を提供しますが、不明確で期待どおりに構造化されないソース行がある場合があります。

次のステートメントタイプが STRUCT コマンドの影響を受けます。

システムコマンド STRUCT を入力すると、[STRUCT]メニューが表示されます。 このメニューの機能は次のとおりです。


ワークエリアへの構造化されたソースの生成

この機能を使用して、ソースコードの行に、プログラムの階層構造を反映したインデントを行うことができます。

この機能は、エディタコマンド STRUCT の機能と同じです。

インデントでは、ソースコード行の長さが考慮されます。つまり、インデントされる行は、右のマージンを越えてシフトされません。"適切な" インデントで右マージンを越える行のシフトが必要な場合は、可能な限り右に移動されるだけで、マージンを越えることはありません。

生成機能では、次のオプションを指定できます。

フィールド 説明
ソース名 このフィールドには、インデントするソースの名前を入力します。 指定されたソースは、システムファイルからワークエリアに読み込まれてインデントされます。

ソース名を指定しない場合は、エディタのワークエリアに現在存在するオブジェクトがインデントされます。 ワークエリアが空の場合は、ソース名を指定する必要があります。

Shift setting このフィールドでは、ソースコード行をインデントする位置の数(1~9)を入力できます。 デフォルトでは、インデントは 2 つの位置ずつ行われます。
Align Comments
Y 各コメント行は、上のステートメント行と同じだけインデントされます。ただし、行の先頭から始まるコメントはインデントされません。
N コメント行はインデントされません。
コメント行は左寄せで表示されます。
Display Messages
Y ストラクチャードモードプログラムを示すメッセージがワークエリアに生成され、"正しく" インデントできなかったソースコード行のリスト(上記を参照)が表示されます。
このようなメッセージは表示されません。
Return to STRUCT
Y 生成機能が実行された後で、STRUCT メニューに戻ります。
生成機能が実行された後で、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

Top of page

ソースの構造の表示

この機能では、オブジェクトの構造を明確にするいくつかの情報項目とともに、オブジェクトのソースコードを表示できます。

表示機能には、次のオプションがあります。

フィールド 説明
ソース名 このフィールドでは、表示するソースの名前を入力します。 指定されたソースがシステムファイルから読み込まれて表示されます。

ソース名を指定しない場合は、エディタのワークエリアに現在存在するオブジェクトが表示されます。 ワークエリアが空の場合は、ソース名を指定する必要があります。

Display Compressed
Y 同じ構造レベルにあるソースコード行は表示されません。 画面の右側の構造テーブルが変更される原因となる行のみ表示されます。 一連の行番号のギャップから、表示されている特定の 2 行の間で表示されていない行数がわかります。
すべてのソースコード行が表示されます。
Return to STRUCT
Y 表示機能が実行された後で、STRUCT メニューに戻ります。
表示機能が実行された後で、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.                           

ワークエリアの現在の内容は、表示されるソースの影響を受けません。

Top of page

ソースの構造の印刷

この機能では、オブジェクトのソースコードを構造情報とともに印刷できます。

印刷機能はソースの構造の表示機能に相当しますが、出力は画面に表示されずにプリンタに送信されます。

印刷機能には、表示機能と同じオプションがあります。

Top of page

ワークエリアへのソース構造の書き込み

この機能では、システムファイルからソースを読み取り、構造情報に加えて、構造情報を説明するソースの先頭の複数行(行番号 0000)とともに、エディタのワークエリアに書き込むことができます。

書き込み機能には、ソースの構造の表示機能と同じオプションがありますが、ソース名を指定する必要があります

ソースとその構造情報は、ワークエリアにテキストとして書き込まれ、システムコマンド EDIT で編集できます。

Top of page