STRUCT

STRUCT

Das Kommando STRUCT erfüllt zwei Aufgaben:

  • Sie können es dazu verwenden, die Sourcecode-Zeilen eines Programms entsprechend der Programmstruktur einzurücken.

  • Diverse zusätzliche Anzeigen verdeutlichen die Programmstruktur und erlauben es Ihnen so, etwaige Inkonsistenzen in der Struktur aufzuspüren.

Da das STRUCT-Kommando die Natural-Sourcen unabhängig davon verarbeitet, ob sie tatsächlich katalogisiert werden können oder nicht, wird die Source nicht auf syntaktische Korrektheit analysiert. Obwohl das STRUCT-Kommando sorgfältig strukturierte Source-Zeilen liefert, können Zeilen vorhanden sein, die unklar sind und die nicht wie erwartet strukturiert werden.

Folgende Arten von Statements sind vom STRUCT-Kommando betroffen:

Wenn Sie das STRUCT-Kommando eingeben, erhalten Sie das STRUCT-Menü, von dem Sie folgende Funktionen auswählen können:


Generate Structured Source into Work Area

Mit dieser Funktion können Sie ein Source-Programm einrücken, so dass die Einrückung der Sourcecode-Zeilen die Struktur des Programms widerspiegelt.

Diese Funktion entspricht der des Editorkommandos STRUCT.

Bei der Einrückung wird die Länge der Sourcecode-Zeilen berücksichtigt; d.h. eine eingerückte Zeile wird nicht über den rechten Rand hinausgeschoben; selbst wenn eine "korrekte" Einrückung dies erfordern würde, wird eine Zeile nicht über den Rand hinausgeschoben, sondern nur soweit nach rechts wie möglich.

Die Generate-Funktion bietet Ihnen folgende Optionen:

Feld Erklärung
Source Name In dieses Feld geben Sie den Namen der Source ein, die Sie einrücken möchten. Die betreffende Source wird dann von der Systemdatei in den Editor-Arbeitsbereich gelesen und strukturell eingerückt.

Wenn sie keinen Namen angeben, wird das gerade im Editor-Arbeitsbereich befindliche Objekt eingerückt. Wenn der Arbeitsbereich leer ist, müssen Sie einen Namen angeben.

Shift setting In diesem Feld können Sie angeben, um wieviel Stellen (1 bis 9) die Zeilen jeweils eingerückt werden sollen. Standardmäßig wird um 2 Stellen eingerückt.
Align Comments
Y Jede Kommentarzeile wird soweit eingerückt wie die darüberstehende Statement–Zeile; Ausnahme: Kommentarzeilen, die am Anfang einer Zeile anfangen, werden nicht eingerückt.
N Kommentarzeilen werden nicht eingerückt.
L   Kommentarzeilen werden linksbündig ausgerichtet.
Display Messages
Y Sie erhalten eine Meldung, dass das strukturierte Programm in den Arbeitsbereich generiert wurde, sowie eine Liste der Sourcecode-Zeilen, die nicht "korrekt" eingerückt (siehe oben) werden konnten.
N   Es wird keine derartige Meldung ausgegeben.
Return to STRUCT
Y Nach Ausführen der Generate-Funktion gelangen Sie zum STRUCT-Menü zurück.
N   Nach Ausführen der Generate-Funktion gelangen Sie zu dem Schirm zurück, auf dem Sie das STRUCT-Kommando eingegeben hatten.

Anmerkung:
Ein im Reporting Mode geschriebenes Programm wird anders eingerückt als ein im Structured Mode geschriebenes.

Teilweise Einrückung

Mit den Spezial-Statements /*STRUCT OFF und /*STRUCT ON können Sie bestimmte Abschnitte Ihres Source-Programms von der Einrückung ausschließen. Die beiden Statements müssen jeweils am Anfang einer Sourcecode-Zeile stehen. Wenn Sie die Generate-Funktion ausführen, werden die Zeilen zwischen diesen beiden Statements nicht davon betroffen; sie bleiben, wie sie waren.

Beispiel für strukturelle Einrückung

Programm, bevor es eingerückt wird:

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

Dasselbe Programm, nachdem die Funktion Generate Structured Source angewandt wurde:

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 Structure of Source

Mit dieser Funktion können Sie den Sourcecode eines Objekts zusammen mit verschiedenen Informationen, die die Struktur des Objekts verdeutlichen, anzeigen.

Die Display-Funktion bietet Ihnen die folgenden Optionen:

Feld Erklärung
Source Name In dieses Feld geben Sie den Namen der Source ein, die Sie anzeigen möchten. Die betreffende Source wird dann von der Systemdatei in den Editor-Arbeitsbereich gelesen und angezeigt.

Wenn sie keinen Namen angeben, wird das gerade im Editor-Arbeitsbereich befindliche Objekt angezeigt. Wenn der Arbeitsbereich leer ist, müssen Sie einen Namen angeben.

Display Compressed
Y Sourcecode-Zeilen auf derselben strukturellen Ebene werden nicht angezeigt. Es werden nur die Zeilen gezeigt, die eine Änderung in der Strukturtabelle am rechten Bildschirmrand bewirken. Anhand der Lücke in der Abfolge der Zeilennummern können Sie sehen, wieviele Zeilen zwischen zwei gezeigten Zeilen nicht gezeigt werden.
N   Alle Sourcecode-Zeilen werden angezeigt.
Return to STRUCT
Y Nach Ausführen der Display-Funktion gelangen Sie zum STRUCT-Menü zurück.
N   Nach Ausführen der Display–Funktion gelangen Sie zu dem Schirm zurück, auf dem Sie das STRUCT-Kommando eingegeben hatten.

Folgende Informationen werden angezeigt:

Line Numbers Bei jedem Statement, das einen Statement-Block beendet, wird links neben dem Sourcecode die Sourcecode-Zeilennummer des Statements, das den betreffenden Block initiiert, angezeigt.
Structure Table Rechts neben dem Sourcecode wird eine Strukturtabelle angezeigt, die Aufschluß über offene Statement-Blöcke gibt. Für jeden offenen Block wird ein einzelner Buchstabe angezeigt. Die verschiedenen Buchstaben beziehen sich auf verschiedene Arten von Statements (für eine Erklärung der einzelnen Buchstaben drücken Sie PF1). Etwaige Inkonsistenzen in der Struktur des Sourcecodes werden durch eine entsprechende Meldung in der Strukturtabelle angezeigt.

Beispiel für Anzeige mit Struktur-Informationen:

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.                           

Der aktuelle Inhalt des Arbeitsbereichs wird von der angezeigten Source nicht beeinflusst.

Print Structure of Source

Mit dieser Funktion können Sie den Sourcecode eines Objekts zusammen mit seinen Struktur-Informationen ausdrucken.

Die Print-Funktion entspricht der Funktion Display Structure of Source, nur dass die Ausgabe nicht auf dem Bildschirm angezeigt, sondern auf einem Drucker ausgedruckt wird.

Mit der Print-Funktion haben Sie die gleichen Optionen wie bei der Display-Funktion.

Write Structure of Source into Work Area

Mit dieser Funktion können Sie eine Source von der Systemdatei lesen und zusammen mit ihren Struktur-Informationen sowie mehreren Zeilen (mit Zeilennummer 0000) am Anfang der Source, die die Struktur-Informationen erklären, in den Editor-Arbeitsbereich laden.

Mit der Write-Funktion haben Sie die gleichen Optionen wie bei der Display-Funktion, mit dem Unterschied, dass Sie einen Source-Namen angeben müssen.

Die Source und ihre Struktur-Informationen werden als Text in den Arbeitsbereich geladen und können mit dem Systemkommando EDIT editiert werden.