Anwendungsgebiet: PROCEDURE
Kommandobeschreibung
Das Kommando SELECT-VARIABLE-ELEMENTS gibt die Elemente einer S-Variablen (Listenvariablen) auf den Bildschirm aus und schreibt davon ausgewählte Elemente in eine andere S-Variable. Der Bildschirm kann zur Benutzerführung durch Überschriften strukturiert werden. Die Bildschirmführung (scrollen) erfolgt ähnlich wie im SDF-geführten Dialog; die Funktionstasten können mit dem Kommando MODIFY-SDF-OPTIONS vereinbart werden.
Layout der Bildschirmausgabe
Der Bildschirm beginnt mit einer unterstrichenen Überschriftszeile, gefolgt von einer Kopfzeile zur Erläuterung der ausgegebenen Elementwerte. Beide Textzeilen werden im Kommando vereinbart, Operanden HEADER-LINE und TITLE.
Die Werte eines Elementes werden jeweils in eine Zeile geschrieben. Die Zeile beginnt mit einem Markierungsfeld „( )“, gefolgt von einem Leerzeichen und maximal 75 Zeichen. Die Abstände zwischen den Elementwerten können mit dem Operanden LENGTH implizit festgelegt werden (Standard = ein Leerzeichen). Siehe Beispiel am Ende der Kommandobeschreibung.
Markieren einer Zeile
Ein Element (Zeile) wird durch Eintragen eines beliebigen Zeichens zwischen die Klammern des Markierungsfeldes markiert. Im Kommando kann vereinbart werden, dass ein Element mit diesem Zeichen als Inhalt automatisch der Ausgabevariablen hinzugefügt wird.
Format
SELECT-VARIABLE-ELEMENTS |
FROM-VARIABLE , TO-VARIABLE = <composed-name 1..255> (...) <composed-name 1..255> (...) | SELECTION-CODE = *NO / *YES (...) *YES (...) | LENGTH = 1 / <integer 1..75> ,HEADER-LINE ,MESSAGE ,DISPLAYED-ELEMENTS = <composed-name 1..255>(...) LENGTH
|
Operandenbeschreibung
FROM-VARIABLE = <composed-name 1..255>
Name der S-Variablen (Input-Variable, Listenvariable), deren Elemente angezeigt werden sollen.
TO-VARIABLE = <composed-name 1..255>(...)
Name einer S-Variablen (Output-Variable), in welche die markierten Elemente geschrieben werden. Eine bereits vorhandene Variable gleichen Namens wird überschrieben.
SELECTION-CODE =
Bestimmt, ob das zur Markierung benutzte Zeichen in die Output-Variable übertragen wird.
SELECTION-CODE = *NO
Das zur Markierung benutzte Zeichen wird nicht in die Output-Variable übertragen
SELECTION-CODE = *YES(...)
Das Variablenelement SELECTION-CODE wird der Output-Variablen automatisch hinzugefügt und auf den in die Auswahlspalte eingetragenen Wert gesetzt. Die Länge des Werts ist variabel, er wird nicht auf die Breite der Auswahlspalte aufgefüllt.
Ist die Input-Variable eine einfache Liste (integer, boolean oder string), wird der Output-Variablen außerdem das Element VALUE hinzugefügt, in welches das markierte Listenelement übertragen wird.
Die Output-Variable muss als dynamische Struktur deklariert sein, anderenfalls wird das Kommando abgewiesen.
LENGTH = 1 / <integer 1..75>
Gibt die Breite der Auswahlspalte und damit die maximale Länge des Auswahlwerts an. Je breiter die Auswahlspalte, desto schmäler wird jedoch der Anzeigebereich. Die Angabe hat daher nur einen Sinn, wenn der eingegebene SELECTION-CODE ausgewertet werden soll.
NULL-Zeichen (0x00) zwischen den in die Auswahlspalte eingegebenen Daten werden unterdrückt, d.h. durch NULL-Zeichen getrennte Eingaben werden zusammengefügt. Die Länge des zurückgegebenen SELECTION-CODE-Wertes entspricht der Anzahl eingegebener Zeichen ungleich NULL.
HEADER-LINE = *NONE / <c-string 1..240>
Gibt die Überschrift der Ausgabe-Maske an. Bis zu 3 Zeilen können angezeigt werden. Für jede Überschriftszeile verringert sich der Platz für die Auswahlliste um eine Zeile. Der Text wird so dargestellt, dass kurze Wörter nicht auf 2 Zeilen geteilt werden, so dass der angezeigte Text länger als der angegebene Wert sein kann. Falls die Ausgabe mehr als 3 Zeilen darstellt, wird sie mit '...' abgekürzt.
MESSAGE=*NONE/<text 1..240 with-low>
Nachricht, die im ersten Auswahlbildschirm unten (in den letzten 3 Zeilen) angezeigt wird. Die Nachricht wird nach Absenden des Bildschirms nicht mehr angezeigt.
Bis zu 3 Zeilen können angezeigt werden. Für jede Nachrichtenzeile verringert sich der Platz für die Auswahlliste um eine Zeile.
Der Text wird so dargestellt, dass kurze Wörter nicht auf 2 Zeilen geteilt werden, so dass der angezeigte Text länger als der angegebene Wert sein kann. Falls die Ausgabe mehr als 3 Zeilen darstellt, wird sie mit '...' abgekürzt.
DISPLAYED-ELEMENTS =
Bezeichnet ein oder mehrere Elemente der Input-Variablen und die Art der Darstellung auf dem Bildschirm.
Bei Strukturelementen werden nur die Werte auf der ersten Stufe ausgegeben.
DISPLAYED-ELEMENTS = *STD
Es ist zu unterscheiden, ob die Elemente wiederum einfache oder zusammengesetzte Variablen sind.
Einfache Variable:
Alle Elementwerte werden ausgegeben; pro Zeile ein Elementwert.
Zusammengesetzte Variable (Struktur):
Nur der Elementwert des jeweils ersten Unterelementes (Strukturelement) wird ausgegeben; pro Zeile ein Elementwert.
DISPLAYED-ELEMENTS = <composed-name 1..255>(...)
Namen von ein oder mehreren Variablenelementen, deren Werte pro Element in eine Zeile geschrieben werden. Die Elementwerte werden in der Reihenfolge ausgegeben, wie in der Operandenliste spezifiziert. Die Elemente müssen immer vom Datentyp „integer“, „boolean“ oder „string“ sein.
LENGTH = *BY-VALUE / <integer 1..76>
Länge, in der der Elementwert auszugeben ist. Die Summe der Elementwerte einer Zeile darf 75 Zeichen nicht überschreiten, einschließlich der Zwischenräume zwischen den Werten. Längere Zeilen werden abgeschnitten. Bei Angabe von *BY-VALUE wird die (implizite) Länge des Elementwertes genommen; maximal 75 Zeichen.
TITLE = *BY-ELEMENT-NAME / <c-string 1..76>
Text zur Erläuterung des Elementwertes. Maximale Länge wie bei LENGTH=.... angegeben. Ist LENGTH=*BY-VALUE vereinbart, wird der angegebene Text abgeschnitten, wenn er die maximale Länge überschreitet. Bei Angabe von *BY-ELEMENT-NAME wird der Elementname als Text geschrieben.
Kommando-Returncode
(SC2) | SC1 | Maincode | Bedeutung |
0 | CMD0001 | Ohne Fehler | |
1 | CMD0202 | Syntaxfehler | |
3 | CMD2203 | Falsche Syntaxdatei | |
32 | CMD0221 | Systemfehler (interner Fehler) | |
64 | SDP0091 | Semantikfehler garantierte Meldungen: SDP1120, SPD1121, SPD1122 | |
64 | SPD0259 | Ausführung abgebrochen; Selektion ignoriert. | |
130 | SDP0099 | Kein Adressraum mehr verfügbar |
Beispiel
Ausschnitt eines Prozedurablaufs (Löschen bzw. Anzeigen von Dateien):
Die S-Variable OPS enthält die Ausgabe des Kommandos SHOW-FILE-ATTRIBUTES. Ausgewählte Unterelemente dieser Variablen (F-NAME, F-SIZE, CRE-DATE) werden mit dem Kommando SELECT-VARIABLE-ELEMENTS auf den Bildschirm ausgegeben. Bestimmte Elemente werden mit „d“ und „s“ markiert und in die S-Variable SELECTED übertragen, einschließlich dem Markierungszeichen. Die unter der Abbildung stehende (kleine) Prozedur löscht die mit „d“ markierten Dateien und zeigt die Inhalte der mit „s“ markierten Dateien an.
/declare-variable OPS(type=*structure),multiple-elements=*list /declare-variable SELECTED(type=*structure),multiple-elements=*list /declare-variable STRUC(type=*structure) /execute-cmd (show-file-attributes *all,select=*by-attributes(- / size=*interval(from=500),information=*all)),- / structure-output=OPS,text-output=*NONE /select-variable-elements from-variable=OPS,- / ,to-variable=SELECTED(selection-code=*yes),- / header-line='Please select files to be deleted (d) or shown (s)',- / displayed-elements=(F-NAME(LENGTH=54,TITLE='File name'),- / F-SIZE(TITLE='Size'),CRE-DATE)
Please select files to be deleted (d) or shown (s) -------------------------------------------------------------------------------- File name Size CRE-DATE (d) A1 501 12-04-2007 (d) A2 502 12-04-2007 ( ) A3 503 12-04-2007 ( ) A4 503 12-04-2007 (s) A5 504 12-04-2007 ( ) A6 505 12-04-2007 (s) A7 506 12-04-2007 ( ) A8 507 12-04-2007 ( ) A9 508 12-04-2007 ( ) B1 509 12-04-2007 (d) B2 510 12-04-2007 -------------------------------------------------------------------------------- NEXT= + *EXECUTE or *CANCEL or *NONE or *ALL or + LTG TAST
/for STRUC=*list(SELECTED) / struc.selection-code = upper-case(struc.selection-code) / if struc.selection-code == 'D' / delete-file &(STRUC.F-NAME) / end-if / if struc.selection-code == 'S' / show-file &(STRUC.F-NAME) / end-if /end-for