@ScanVStack
Syntax
@ScanVStack(NAME1);
@ScanVStack(NAME1;DATATYPES2);
@ScanVStack(NAME1;DATATYPES2;FIELDFLAGS3);
Beschreibung
Gibt alle Variablen auf dem VStack mit dem Namen TEXT NAME1 als TEXTLIST zurück. Variablen der Daten-Typen PV und UA werden dabei nicht berücksichtigt. Wenn für NAME1 nur "" angegeben wird, dann werden die Variablen von _PRCVSTACK ausgegeben.
WICHTIGE VStacks:
_PRGCTRLVSTACK
_DBPCTRLVSTACK
_INDEX
_GDEFFNVSTACK
_FDEFVSTACK
_SYSTEM
_PRGVSTACK1
_PRGVSTACK2
_TMPVSTACK
MAIN
SYSTEM
GLOBAL
HINWEIS:
Alle mit "_"(Underscore) beginnenden Variablen sind SYSTEMVARIABLEN, die nicht benutzt werden sollten!
SYSTEMVARIABLEN werden weder supported noch kommentiert.
!!!! Auch VStacks sind Variablen !!!!
Mit dem optionalen Parameter TEXT/TEXTLIST DATATYPES2 können die Daten-Typen der gesuchten Variablen eineschränkt werden. (z.B. nur alle TEXT Variablen). Wird hier ein NULLSTRING oder eine TEXTLIST mit NULL Elementen angegeben verhält sich @ScanVStack wie wenn der Parameter nicht angegeben worden wäre (also alle Daten-Typen mit Ausnahme von PV und UA). Für die Daten-Typen-Kürzel siehe @GetDataType.
Mit dem optionalen Parameter FN/FNLIST FIELDFLAGS3 können die Field-Flags der gesuchten Variablen eingeschränkt werden.
Wird nur ein Element angegeben (FN oder FNLIST mit nur einem Element), dann muß jede gesuchte Variable mindestens diese Field-Flags gesetzt haben (alle anderen sind aber auch erlaubt).
Wird eine FNLIST mit zwei Elementen angegeben, dann muß jede gesuchte Variable mindestens die Field-Flags aus dem ersten Element der FNLIST FIELDFLAGS3 gesetzt haben und kann alle Field-Flags aus dem zweiten Element der FNLIST FIELDFLAGS3 gesetzt haben.
Field-Flags:
1 SIGN
2 SEAL
4 SUMMARY
16 SEALED
32 READ/WRITE-ACCESS
64 NAMES
256 PLACEHOLDER
512 PROTECTED
1024 READ-ACCESS
Praktische Beispiele für Kombinationen:
Names Felder : SUMMARY + NAMES
Readers Felder : SUMMARY + READ-ACCESS + NAMES
Authors Felder : SUMMARY + READ/WRITE-ACCESS + NAMES
Beispiel: @ScanVStack(NAME1)
NAME1:="GLOBAL";
@ScanVStack(NAME1);
ergibt eine Liste aller globalen Variablen
DBHANDLE:=@OpenDB("EWASTL\\TESTFA.NSF");
VIEWHANDLE:=@OpenView(DBHANDLE;"TEST VIEW");
VIEWPOSITION:=1:1:1:0:0:0:0:0:0:0;
NOTEHANDLE:=@OpenNoteByPosition(DBHANDLE;VIEWHANDLE;VIEWPOSITION;NOTEHANDLE);
@LogReport(@ScanVStack("NOTEHANDLE"));
NOTEHANDLE:=@CloseNote(NOTEHANDLE;0);
VIEWHANDLE:=@CloseView(VIEWHANDLE);
DBHANDLE:=@CloseDB(DBHANDLE);
Es wird eine Datenbank geöffnet, alle vorkommenden Feldnamen ausgegeben und schließlich die Datenbank wieder geschlossen. Hierran kann die interne Gleichbehandlung von VARGROUP und NOTEHANDLE gesehen werden.
Beispiel: @ScanVStack(NAME1;DATATYPES2)
DBHANDLE:=@OpenDB("TESTDB\\TESTDB1.NSF");
NOTEID:=20638;
NOTEHANDLE:=@OpenNoteByID(DBHANDLE;NOTEID;NOTEHANDLE);
DATATYPES2:="A":"AL";
VariableNames:=@ScanVStack("NOTEHANDLE";DATATYPES2);
@LogReport(VariableNames;3);
NOTEHANDLE:=@CloseNote(NOTEHANDLE;0);
DBHANDLE:=@CloseDB(DBHANDLE);
Hier werden alle TEXT bzw. TEXTLIST Variablen eines Dokuments gesucht und mit @LogReport ausgegeben.
Beispiel: @ScanVStack(NAME1;DATATYPES2;FIELDFLAGS3)
DBHANDLE:=@OpenDB("TESTDB\\TESTDB1.NSF");
NOTEID:=20638;
NOTEHANDLE:=@OpenNoteByID(DBHANDLE;NOTEID;NOTEHANDLE);
/*Alle Names-Variablen suchen und ausgeben*/
DATATYPES2:="A":"AL";
FIELDFLAGS3:=68:0; /*4+64:0 muß haben SUMMARY+NAMES und darf sonst nichts (0) haben*/
VariableNames:=@ScanVStack("NOTEHANDLE";DATATYPES2;FIELDFLAGS3);
@LogReport("Names:";3);
@LogReport(VariableNames;3);
/*Alle Reader-Names-Variablen suchen und ausgeben*/
DATATYPES2:="A":"AL";
FIELDFLAGS3:=1092:0; /*4+64+1024:0 muß haben SUMMARY+NAMES+READ-ACCESS und darf sonst nichts (0) haben*/
VariableNames:=@ScanVStack("NOTEHANDLE";DATATYPES2;FIELDFLAGS3);
@LogReport("Names:";3);
@LogReport(VariableNames;3);
/*Alle Author-Names-Variablen suchen und ausgeben*/
DATATYPES2:="A":"AL";
FIELDFLAGS3:=100:0; /*4+64+32:0 muß haben SUMMARY+NAMES+READ/WRITE-ACCESS und darf sonst nichts (0) haben*/
VariableNames:=@ScanVStack("NOTEHANDLE";DATATYPES2;FIELDFLAGS3);
@LogReport("Names:";3);
@LogReport(VariableNames;3);
/*Alle Arten von Names-Variablen suchen und ausgeben*/
DATATYPES2:="A":"AL";
FIELDFLAGS3:=64:1060; /*64:(4+1024+32) muß haben NAMES und darf haben SUMMARY und/oder READ-ACCESS und/oder READ/WRITE-ACCESS*/
VariableNames:=@ScanVStack("NOTEHANDLE";DATATYPES2;FIELDFLAGS3);
@LogReport("Names:";3);
@LogReport(VariableNames;3);
NOTEHANDLE:=@CloseNote(NOTEHANDLE;0);
DBHANDLE:=@CloseDB(DBHANDLE);
