6. Klasse ICS

6.1. Allgemeines

In diesem Abschnitt sind alle Methoden der eingebauten Klasse ICS beschrieben. Die Methoden der Klasse ICS müssen nur optional mit ICS. qualifiziert werden. Die Klasse ICS muss ausserdem nicht mit |LOAD geladen werden.

6.2. Arithmetische Methoden

MethodeICS.+ [n a,n b][n a+b]
BeschreibungDie Methode + addiert die ersten beiden Werte des Stacks und legt das Resultat auf dem Stack ab.
Beispiel
2 3 + [5]
MethodeICS.- [n a,n b][n a-b]
BeschreibungDie Methode - subtrahiert den obersten Wert des Stacks vom zweitobersten Wert des Stacks und legt das Resultat auf dem Stack ab.
Beispiel
7 5 - [2]
MethodeICS.* [n a,n b][n a*b]
BeschreibungDie Methode * multipliziert die ersten beiden Werte des Stacks und legt das Resultat auf dem Stack ab.
Beispiel
2 3 * [6]
MethodeICS./ [n a,n b][n a/b]
BeschreibungDie Methode / dividiert den zweitobersten Wert des Stacks durch den obersten Wert des Stacks und legt das Resultat auf dem Stack ab.
Beispiel
3 4 / [0.75]
MethodeICS.INC [i a][i a+1]
BeschreibungErhöht die Zahl <a> auf dem Stack um 1.
Beispiel
5 INC [6]
MethodeICS.DEC [i a][i a-1]
Beschreibungdie Zahl <a> auf dem Stack um 1.
Beispiel
6 DEC [5]
MethodeICS.ROUND [r a,i dez][r a]
BeschreibungRundet die Zahl <a> auf <dez> Dezimalen. ROUND kann auch mit Stringargument für <dez> aufgerufen werden z.B. 1.567 '1' ROUND. In diesem Fall wird als Resultat ein auf <dez> Dezimalen gerundeter String (hier: '1.6') zurück gegeben.
Beispiel
1.567 1 ROUND [1.6]
MethodeICS.FLOOR [r a][r floor(a)]
BeschreibungRundet die Zahl <a> auf die nächst tiefere ganze Zahl ab.
Beispiel
1.5 FLOOR [1.0]
MethodeICS.CEIL [r a][r ceil(a)]
BeschreibungRundet die Zahl <a> auf die nächst höhere ganze Zahl auf.
Beispiel
1.5 CEIL [2.0]
MethodeICS.SQRT [r a][r sqrt(a)]
BeschreibungBerechnet die Wurzel der reellen Zahl <a>.
Beispiel
2.0 SQRT [1.414]
MethodeICS.POWER [n x, n y][r pow(x,y)]
BeschreibungBerechnet <x> hoch <y>.
Beispiel
2.0 3.0 POWER [8.0]
MethodeICS.MOD [i x, i y][i x % y]
BeschreibungBerechnet den Module von <x> und <y>, den Rest aus der Division der ganzen Zahlen <x> und <y>.
Beispiel
12 10 MOD [2]
MethodeICS.SIN [r w][r sin(w)]
BeschreibungBerechnet den Sinus des Winkels <w>. Der Winkel muss in Grad angegeben werden.
Beispiel
90.0 SIN [1.0]
MethodeICS.ASIN [r a][r asin(a)]
BeschreibungBerechnet den Arcussinus von <a>. Der Winkel wird in Grad zurückgegeben.
Beispiel
1.0 ASIN [90.0]
MethodeICS.COS [r w][r sin(w)]
BeschreibungBerechnet den Cosinus des Winkels <w>. Der Winkel muss in Grad angegeben werden.
Beispiel
90.0 COS [0.0]
MethodeICS.ACOS [r a][r asin(a)]
BeschreibungBerechnet den Arcuscosinus von <a>. Der Winkel wird in Grad zurückgegeben.
Beispiel
0.5 ACOS [60.0]
MethodeICS.TAN [r w][r sin(w)]
BeschreibungBerechnet den Tangens des Winkels <w>. Der Winkel muss in Grad angegeben werden.
Beispiel
45.0 TAN [1.0]
MethodeICS.ATAN2 [r y, r x][r atan2(a)]
BeschreibungBerechnet die ATAN2 Funktion. Der Winkel wird in Grad zurückgegeben.
Beispiel
1.0 3.0 SQRT ATAN2 [30.0]

6.3. Boolesche Methoden

MethodeICS.AND [b x, b y][b (a AND b)]
BeschreibungBoolesche AND-Operation von zwei booleschen Werten <x> und <y>.
Beispiel
TRUE TRUE AND [TRUE]
MethodeICS.OR [b x, b y][b (a OR b)]
BeschreibungBoolesche OR-Operation von zwei booleschen Werten <x> und <y>.
Beispiel
TRUE FALSE OR [TRUE]
MethodeICS.XOR [b x, b y][b (a AND b)]
BeschreibungBoolesche XOR-Operation von zwei booleschen Werten <x> und <y>.
Beispiel
TRUE TRUE XOR [FALSE]
MethodeICS.NOT [b x, b y][b (a AND b)]
BeschreibungBoolesche NOT-Operation eines booleschen Wertes <x>.
Beispiel
TRUE NOT [FALSE]
MethodeICS.INTAND [i x, i y][i (x & y)]
BeschreibungBoolesche Bit-AND-Operation von zwei Integer32 Werten <x> und <y>.
Beispiel
3 1 INTAND [1]
MethodeICS.INTOR [i x, i y][i (x | y)]
BeschreibungBoolesche Bit-OR-Operation von zwei Integer32 Werten <x> und <y>.
Beispiel
2 1 INTOR [3]
MethodeICS.INTXOR [i x, i y][i (x ^ y)]
BeschreibungBoolesche Bit-XOR-Operation von zwei Integer32 Werten <x> und <y>.
Beispiel
2 0 INTXOR [2]
MethodeICS.INTSHIFTL [i x, i y][i (x << y)]
BeschreibungShift Left Operation eines Integer32 Wertes <x> um <y> Bits.
Beispiel
1 2 INTSHIFTL [4]
MethodeICS.INTSHIFTR [i x, i y][i (x >> y)]
BeschreibungShift Right Operation eines Integer32 Wertes <x> um <y> Bits.
Beispiel
4 2 INTSHIFTR [1]

6.4. Stringmethoden

MethodeICS.LEN [s str][i länge]
BeschreibungBerechnet die Länge des Strings <str>. Die Länge wird als Integer zurückgegeben.
Beispiel
'hello, World' LEN [12]
MethodeICS.EXTRL [s str][s rest,s extract]
BeschreibungExtrahiert aus dem String <str> einen String <extract>. Es wird bis zum ersten Blank oder Komma extrahiert. Der Extraktstring und der Reststring <rest> werden auf dem Stack abgelegt. Falls der Rest die Länge 0 aufweist, wird für den Rest der Wert NULL auf dem Stack abgelegt.
Beispiel
'hello, World' EXTRL [' World','hello']
'hello' EXTRL [NULL,'hello']
MethodeICS.EXTRL1 [s str][s extract]
BeschreibungWie EXTRL. Es wird jedoch nur der <extract> geliefert.
Beispiel
'hello, World' EXTRL1 ['hello']
MethodeICS.EXTRLS [s str][s rest,s extract]
BeschreibungWie EXTRL. Als Trennzeichen wird aber nur das Komma berücksichtigt.
Beispiel
'hello   ,World' EXTRLS ['World','hello   ']
'hello' EXTRLS [NULL,'hello']
MethodeICS.EXTRLN [s str,i n][s rest, s extract]
BeschreibungExtrahiert aus <str> <n> Zeichen und legt den Reststring und den Extraktstring auf dem Stack ab.
Beispiel
'hello, World' 5 EXTRLN [' ,World','hello']
MethodeICS.EXTRLN1 [s str,i n][s extract]
BeschreibungExtrahiert aus <str> <n> Zeichen und legt diese als Extraktstring auf dem Stack ab.
Beispiel
'hello, World' 5 EXTRLN1 ['hello']
MethodeICS.EXTRR [s str][s rest, s extract]
BeschreibungWie EXTRL mit dem Unterschied, dass von rechts extrahiert wird.
Beispiel
'hello,World' EXTRR ['hello','World']
MethodeICS.EXTRR1 [s str][s rest, s extract]
BeschreibungWie EXTRL1 mit dem Unterschied, dass von rechts extrahiert wird.
Beispiel
'hello,World' EXTRR1 ['World']
MethodeICS.EXTRRN [s str,i n][s rest, s extract]
BeschreibungWie EXTRLN mit dem Unterschied, dass von rechts extrahiert wird.
Beispiel
'hello,World' 5 EXTRRN ['hello,','World']
MethodeICS.EXTRRN1 [s str,i n][s extract]
BeschreibungEXTRLN1 mit dem Unterschied, dass von rechts extrahiert wird.
Beispiel
'hello,World' 5 EXTRRN1 ['World']
MethodeICS.EXTRCHAR [s str,i n][s extract]
BeschreibungExtrahiert das Zeichen des n. Index des Strings. Ist der Index n < 0 order n >= strlen dann wird NULL zurückgegeben.
Beispiel
'hello, World' -1 EXTRCHAR [NULL]
'hello, World' 0 EXTRCHAR ['h']
'hello, World' 11 EXTRCHAR ['d']
'hello, World' 12 EXTRCHAR [NULL]
MethodeICS.APP [s s1, s s2][s str]
BeschreibungHängt den String <s2> an den String <s1> an und legt das Resultat <str> auf dem Stack ab.
Beispiel
'World' 'hello' APP ['helloWorld']
MethodeICS.LOC [s str,s suchstring][s str, i pos]
BeschreibungSucht <suchstring> in <str>. Falls der <suchstring> in <str> enthalten ist, gibt LOC die Position <pos> des 1. Buchstabens von <suchstring> in <str> zurück. Falls <suchstring> nicht gefunden wird, wird NULL für <pos> zurückgegeben. LOC wird meist zusammen mit EXTRLN1 benutzt.
Beispiel
'hello, World' 'Wo' LOC ['hello, World',7]
'hello, World' 'hello' LOC ['hello, World',0]
'hello, World' 'Wu' LOC ['hello, World,NULL]
'hello, World 'o' LOC EXTRLN1 ['hell']
MethodeICS.LOCR [s str, s suchstring][s str, i pos]
BeschreibungSucht <suchstring> in <str> von rechts anstatt von links. Falls der <suchstring> in <str> enthalten ist, gibt LOC die Position <pos> des 1. Buchstabens von <suchstring> in <str> zurück. Falls <suchstring> nicht gefunden wird, wird NULL für <pos> zurückgegeben. LOCR wird meist zusammen mit EXTRLN1 benutzt.
Beispiel
'hello.txt.txt' '.txt' LOCR EXTRLN1 ['hello.txt']
MethodeICS.LOCCHAR [s str][s str, pos i]
BeschreibungWie LOC mit dem Unterschied, dass nach dem 1. Alphazeichen gesucht wird.
Beispiel
'1234567hello' LOCCHAR ['1234567hello',7]
'1234567hello' LOCCHAR EXTRLN1 ['1234567']
MethodeICS.TO_UPPER [s value][s result]
BeschreibungWandelt den String <value> in einen String mit Grossbuchstaben um.
Beispiel
'hello, world' TO_UPPER ['HELLO, WORLD']
MethodeICS.TO_LOWER [s value][s result]
BeschreibungWandelt den String <value> in einen String mit Kleinbuchstaben um.
Beispiel
'HELLO, WORLD' TO_LOWER ['hello, world']
MethodeICS.TRIM [s value][s result]
BeschreibungEliminiert Leerzeichen am Anfang und am Ende eines Strings.
Beispiel
'  abc   ' TRIM ['abc']
MethodeICS.LJUST [* value, i length][s result]
BeschreibungWandelt das Objekt <value> in einen String um und macht den String <result> linksbündig und mindestens <length> Zeichen lang.
Beispiel
'  abc   ' 20 LJUST ['abc                 ']
MethodeICS.RJUST [* value, i length][s result]
BeschreibungWandelt das Objekt <value> in einen String um und macht den String <result> rechtsbündig und mindestens <length> Zeichen lang.
Beispiel
'  abc   ' 20 RJUST ['                 abc']
MethodeICS.STARTS_WITH[s value,s prefix][b result]
BeschreibungPrüft ob der String <value> mit dem Prefix <prefix> anfängt.
Beispiel
IF 'hello, world' 'hello' STARTS_WITH THEN
! do something
END_IF
MethodeICS.ENDS_WITH[s value,s postfix][b result]
BeschreibungPrüft ob der String <value> mit dem Prefix <postfix> endet.
Beispiel
IF 'hello, world' 'world' ENDS_WITH THEN
! do something
END_IF
MethodeICS.REPLACE_CHAR[s value,s char1,s char2][s result]
BeschreibungErsetzt alle Vorkommen des Buchstaben <char1> durch <char2>.
Beispiel
'abcabc' 'a' 'u' REPLACE_CHAR ['ubcubc']
MethodeICS.REPLACE_STRING[s value,s search,s replace][s result]
BeschreibungErsetzt alle Vorkommen des Strings <search> durch den String <replace>.
Beispiel
'abcabc' 'ab' '12' REPLACE_CHAR ['12c12c']

6.5. Stackmethoden

MethodeICS.POP [* objekt][]
BeschreibungVernichtet das oberste Objekt auf dem Stack.
Beispiel
'hello, World' POP []
MethodeICS.DUP [* objekt][* objekt,* objekt]
BeschreibungDupliziert das oberste Objekt auf dem Stack.
Beispiel
'hello, World' DUP ['hello, World','hello, World']
'hello, World' DUP POP ['hello, World']
MethodeICS.RDUP [* objekt][* objekt,* objekt]
BeschreibungErzeugt eine zusätzliche Referenz auf das oberste Objekt des Stacks.
Beispiel
'hello, World' RDUP ['hello, World','hello, World']
'hello, World' RDUP POP ['hello, World']
MethodeICS.SWAP [* objekt1,* objekt2][* objekt2,* objekt1]
BeschreibungVertauscht die obersten beiden Elemente des Stacks.
Beispiel
1234,'hello, World' SWAP ['hello, World',1234]

6.6. Konversionsmethoden

MethodeICS.TO_STRING [* Objekt][s str]
BeschreibungWandelt das oberste Objekt des Stacks in einen String um.
Beispiel
1234 TO_STRING ['1234']
1.234 TO_STRING ['1.234']
TRUE TO_STRING ['TRUE']
MethodeICS.TO_REAL [* objekt][s str]
BeschreibungWandelt das oberste Element des Stacks in einen Real um. Als Inputtyp ist String oder Integer zulässig.
Beispiel
'1.234' TO_REAL [1.234]
1234 TO_REAL [1234.0]
MethodeICS.TO_INT [* objekt][s str]
BeschreibungWandelt das oberste Objekt des Stacks in einen Integer um. Als Inputtyp ist String oder Real zulässig. Bei reellen Zahlen wird auf die nächtste ganze Zahl gerundet.
Beispiel
1234.567 TO_INT [1235]
MethodeICS.TO_POINT [s string][p punkt]
BeschreibungWandelt das oberste Element des Stacks in eine Geometrie vom Typ Punkt um.
Beispiel
'1.0/2.0/3.0' TO_POINT [POINT(1.0/2.0/3.0)]
MethodeICS.CHR [i ascii][s ch]
BeschreibungWandel den ASCII-Code <ascii> in das entsprechende Zeichen um.
Beispiel
65 CHR ['A']
MethodeICS.ASCII [s ch][i ascii]
BeschreibungBerechnet den ASCII-Code des Zeichens <ch>.
Beispiel
'A' ASCII [65]
MethodeICS.GET_TYPE [* objekt][s type]
BeschreibungGibt den Typ von <objekt> als String zurück.
Beispiel
1 GET_TYPE ['int']
1.2 GET_TYPE ['real']
TRUE GET_TYPE ['boolean']
'abc’ GET_TYPE ['string']
&IN GET_TYPE ['map']
‘1.0/2.0’ TO_POINT GET_TYPE ['point']
VAR.L1 GET_TYPE ['line']
VAR.A1 GET_TYPE ['area']
MethodeICS.BINSTRING_TO_INT [s string][i a]
BeschreibungWandelt einen String aus Binärziffern in einen 32-Bit Integer um.
Beispiel
'10101011' BINSTRING_TO_INT [171]
MethodeICS.INT_TO_BINSTRING [i a][s string]
BeschreibungWandelt einen 32 Bit Integer in einen String aus Binärziffern um. Der String ist immer 32 Zeichen lang.
Beispiel
171 INT_TO_BINSTRING ['00000000000000000000000010101011']
MethodeICS.HEXSTRING_TO_INT [s string][i a]
BeschreibungWandelt einen String aus Hexziffern in einen 32-Bit Integer um. Die Hexziffern 'A' - 'F' dürfen als Gross- oder Kleinbuchstaben übergeben werden.
Beispiel
'AB' HEXSTRING_TO_INT [171]
MethodeICS.INT_TO_HEXSTRING [i a][s string]
BeschreibungWandelt einen 32 Bit Integer in einen String aus Hexziffern um. Die Hexziffern 'A' - 'F' werden immer als Grossbuchstaben zurück gegeben. Der String ist immer 8 Zeichen lang.
Beispiel
171 INT_TO_HEXSTRING ['000000AB']
MethodeICS.HEXSTRING_TO_REAL [s string][r a]
BeschreibungWandelt einen String aus Hexziffern in einen 64-Bit Real um. Die Hexziffern 'A' - 'F' dürfen als Gross- oder Kleinbuchstaben übergeben werden.
Beispiel
'0F03F' HEXSTRING_TO_REAL [1.0]
MethodeICS.REAL_TO_HEXSTRING [r a][s string]
BeschreibungWandelt einen 64 Bit Real in einen String aus Hexziffern um. Die Hexziffern 'A' - 'F' werden immer als Grossbuchstaben zurück gegeben. Der String ist immer 16 Zeichen lang.
Beispiel
1.0 INT_TO_HEXSTRING ['000000000000F03F']
MethodeICS.HEXSTRING_TO_STRING [s string][s string]
BeschreibungWandelt einen String aus Hexziffern in String um. Die Hexziffern 'A' - 'F' dürfen als Gross- oder Kleinbuchstaben übergeben werden.
Beispiel
'68656C6C6F' HEXSTRING_TO_STRING ['hello']
MethodeICS.STRING_TO_HEXSTRING [s string][s string]
BeschreibungWandelt einen String in einen String aus Hexziffern um. Die Hexziffern 'A' - 'F' werden immer als Grossbuchstaben zurück gegeben.
Beispiel
'hello' INT_TO_HEXSTRING ['68656C6C6F']
MethodeICS.HEXSTRING_TO_BLOB [s string][B blob]
BeschreibungWandelt einen String aus Hexziffern in einen BLOB um. Die Hexziffern 'A' - 'F' dürfen als Gross- oder Kleinbuchstaben übergeben werden.
Beispiel
'0011AAff' HEXSTRING_TO_BLOB [BLOB]
MethodeICS.BLOB_TO_HEXSTRING [B blob][s string]
BeschreibungWandelt einen BLOB in einen String aus Hexziffern um. Die Hexziffern 'A' - 'F' werden immer als Grossbuchstaben zurück gegeben.
Beispiel
VAR.BLOB BLOB_TO_HEXSTRING ['0011AAFF']
MethodeICS.REAL_TO_DEGREE [r degree][r s, i m, i d]
BeschreibungWandelt einen Winkel in Grad vom Type REAL nach Grad, Minuten, Sekunden.
Beispiel
45.25 REAL_TO_DEGREE [0.0 15 45]
MethodeICS.DEGREE_TO_REAL [i d, i m, r s] [r degree]
BeschreibungWandelt einen Winkel von Grad, Minuten, Sekunden nach Grad vom Type REAL.
Beispiel
45 15 0.0 DEGREE_TO_REAL [45.25]
MethodeICS.REAL_TO_DEGREE_STRING [r degree][s d.m.s]
BeschreibungWandelt einen Winkel in Grad vom Type REAL nach Grad, Minuten, Sekunden vom Typ STRING.
Beispiel
45.25 REAL_TO_DEGREE_STRING ['45.15.00.00']
MethodeICS.DEGREE_STRING_TO_REAL [s d.m.s] [r degree]
BeschreibungWandelt einen Winkel in Grad, Minuten, Sekunden vom Typ nach Grad vom Type REAL .
Beispiel
'45.15.00.00' DEGREE_STRING_TO_REAL [45.25]

6.7. Mapmethoden

MethodeICS.VAL [s objektliste][s werteliste]
BeschreibungWertet eine Objektliste aus und ersetzt die Objekte durch ihre aktuellen Werte.
Beispiel
! Annahme: in der Mapkomponente IN.POS ist der 
! Wert 5.0/10.0/0.0 und in der Mapkomponente 
! IN.BLOCK ist der Wert 'PUNKT' gespeichert.
'OUT.BLOCK' VAL ['PUNKT']
'OUT.BLOCK,IN.POS' VAL ['PUNKT,5.0/10.0/0.0']
'abc,IN.POS' VAL ['abc,5.0/10.0']
MethodeICS.VAL2 [s objektliste][s werteliste]
BeschreibungWertet eine Objektliste aus und ersetzt die Objekte durch ihre aktuellen Werte. Die Auswertung erfolgt analog zum DISPLAY-Befehl.
Beispiel
1234 'Wert=<$>' VAL2 ['Wert=<1234>']
MethodeICS.REF [s objektname][* objekt]
BeschreibungLiefert eine Referenz auf das Objekt mit Namen <objektname> zurück.
Beispiel
'ROOT.IN' REF [map(IN)]
MethodeICS.INDEX [m map,s key][* objekt]
BeschreibungLiefert die Komponente aus <m> mit Namen <key>. Falls die Komponente nicht existiert, wird der Skript abgebrochen.
Beispiel
&IN 'abc' INDEX ['uvw']
MethodeICS.EXISTS [s komponentenname][b status]
BeschreibungGibt TRUE zurück falls dies Mapkomponente existiert, FALSE sonst.
Beispiel
'OUT.BLOCK' EXISTS [TRUE]
'OUT.POS' EXISTS [FALSE]
MethodeICS.MAPCREATE [][m map]
BeschreibungErzeugt eine neue (unbenannte) Map <map>.
Beispiel
MAPCREATE [map(NONAME)]
MethodeICS.MAPRESET [m map][]
BeschreibungSetzt den internen Lesezeiger einer Map zurück (Vorbereitungsmethode für MAPSCAN).
Beispiel
&IN MAPRESET []
MethodeICS.MAPSCAN [m map][* wert,name s,status b]
BeschreibungLiest die nächste Komponente <name>, <wert> aus der Map <map>. Falls <status> FALSE ist konnte keine Komponente gelesen werden (<wert> und <status> werden in diesem Fall nicht auf den Stack geschoben).
Beispiel
&TEST MAPSCAN ['b' 'a' TRUE]
MethodeICS.MAPINS [m map,s komponentenname,* wert][]
BeschreibungFügt den Wert <wert> in <map> unter dem Komponentennamen <komponentenname> ein.
Beispiel
&TEST 'W1' 'hallo' MAPINS 'TEST.W1' EXISTS [TRUE]
MethodeICS.MAPREM [m map,s komponentenname][b status]
BeschreibungLöscht den Wert unter dem Komponentennamen <komponentenname>.
Beispiel
&TEST 'W1' MAPREM [TRUE]
MethodeICS.MAPCLEAR [m map][]
BeschreibungLöscht alle Komponenten der Map <map>.
Beispiel
&TEST MAPCLEAR 
MethodeICS.MAP_IS_EMPTY [m map][b status]
BeschreibungTestet ob die Map <map> keine Komponenten hat.
Beispiel
&TEST MAPCLEAR MAP_IS_EMPTY [TRUE]
MethodeICS.MAPCOPY[m map1,m map2][]
BeschreibungKopiert alle Komponenten der map <map1> in die Map <map2>. Alle ursprünglichen Komponenten der Map <map2> werden gelöscht.
Beispiel
&TEST1 &TEST2 MAPCOPY []
MethodeICS.MAPCOPY2[m map1,m map2][]
BeschreibungKopiert alle Komponenten der map <map1> in die Map <map2>. Alle ursprünglichen Komponenten der Map <map2> werden nicht gelöscht.
Beispiel
&TEST1 &TEST2 MAPCOPY []
MethodeICS.MAPSORT [m map, b descending][]
BeschreibungSortiert die Einträge in der Map nach den Komponentennamen. descending = FALSE aufsteigend. descending = TRUE absteigend.
Beispiel
&TEST FALSE MAPSORT []
MethodeICS.MAPSWAP [m map][m map]
BeschreibungKehrt die Abbildung <name> => <wert> einer Map um in <wert> => <name>. Namen werden zu Werte, Werte zu Namen. Die Werte werden in eine String umgewandelt und als Namen eingefügt. Namen werden als String belassen und als Werte eingefügt. Ein DEFAULT-Wert wird beibehalten.
Beispiel
&TEST MAPSWAP [map(NONAME)]
MAP TEST
   a       => 1
   b       => 2
   c       => 2
   DEFAULT => OFF
END_MAP

&TEST MAPSWAP => VAR.TEST2

! VAR.TEST2:
! --- MAP NONAME -------
!    a       => 1
!    b       => 2
!    c       => 2
!    DEFAULT => OFF
! --- END MAP NONAME ---
MethodeICS.SET_LABEL[m map,s label][]
BeschreibungSetzt das Label der Map <map>.
Beispiel
&USER 'USER' SET_LABEL []
MethodeICS.GET_LABEL[m map][s label]
BeschreibungFragt das Label der Map <map> ab. Falls kein Label gesetzt wurde, wird NULL zurück gegeben.
Beispiel
IF &USER GET_LABEL IS_NOT_NULL THEN
   DISPLAY 'map USER has a label'
END_IF

6.8. Listenmethoden

MethodeICS.CREATE_LIST [][li list]
BeschreibungErzeuge ein neues Objekt vom Typ list.
Beispiel
CREATE_LIST [list]
MethodeICS.APPEND_TO_LIST [li list, * obj][li result]
BeschreibungHängt das Objekt <obj> an die Liste <list> an.
Beispiel
CREATE_LIST 'abcd' APPEND_TO_LIST [list]
MethodeICS.RESET_READ [li list][]
BeschreibungSetzt den internen Lesezeiger zurück (Vorbereitung zu READ_NEXT).
Beispiel

&VAR.LIST RESET_READ []

MethodeICS.READ_NEXT [li list][* obj, b status]
BeschreibungLiest das nächste Objekt <obj> aus der Liste <list>.
Beispiel
&VAR.LIST RESET_READ
WHILE &VAR.LIST READ_NEXT DO
   DISPLAY $
END_WHILE

6.9. Linkmethoden

ProzedurICS.CREATE_LINK [s key,i orderpos][link ref]
Beschreibung

Erzeugt einen Link für das Schreiben einer Referenz. orderpos wird nur gesetzt wenn orderpos > 0. Zum Beispiel wird in INTERLIS 2 in der Outputdatei für die Rolle REF="<key>" und ORDERPOS="<orderpos>" gesetzt.

Beispiel
'key1' 1 CREATE_LINK [LINK(:0::key1:1)]
ProzedurICS.SET_LINK_BID [link ref, s bid][link ref]
Beschreibung

Setzt in einem Link die Basket ID bid.

Beispiel
'bid1' SET_LINK_BID [LINK(:0:bid1:key1:1)]
ProzedurICS.GET_LINK_BID [link ref][s bid]
Beschreibung

Liest aus einem Link die Basket ID bid.

Beispiel
 [LINK(:0:bid1:key1:1)] GET_LINK_BID ['bid1']
ProzedurICS.GET_LINK_KEY [link ref][s key]
Beschreibung

Liest aus einem Link die Objekt ID key.

Beispiel
 [LINK(:0:bid1:key1:1)] GET_LINK_KEY ['key1']
ProzedurICS.GET_LINK_ORDERPOS [link ref][i orderpos]
Beschreibung

Liest aus einem Link die orderpos .

Beispiel
 [LINK(:0:bid1:key1:1)] GET_LINK_ORDERPOS [1]

6.10. Anzeigemethoden

MethodeICS.DISP [* objekt][]
BeschreibungGibt das oberste Element des Stacks auf dem Bildschirm aus.
Beispiel
[‘abc’] DUP DISP ! gibt abc auf den Bildschirm aus 
                ! ohne den Stack zu verändern
MethodeICSCPU.DISPLAY_STACK [][]
BeschreibungGibt den aktuellen Inhalt des Stacks auf den Bildschirm aus. Der Stack wird nicht verändert.
Beispiel
[] ICSCPU.DISPLAY_STACK []

6.11. Geometriemethoden

Für die Speicherung und Bearbeitung von Geometriedaten stellt der Kern den Geometrietyp bereit. Eine Geometrie ist entweder eine Fläche, ein Rand, eine Linie oder ein Punkt. Geometrieen sind hierarchisch aufgebaut. So besteht z.B. eine Fläche aus Rändern (ein äusserer Rand und Löcher innerhalb der Fläche). Ein Rand besteht aus Linien. Eine Linie besteht aus Punkten. In einer Linie können Punkte durch Geraden oder Kreisbögen verbunden werden. Durch Standardmethoden können Geometrieen erzeut, durchsucht oder kopiert werden.

Mit den Methoden SET_GATTR und GET_GATTR kann pro Geometrieelement ein Benutzerattribut gesetzt bzw. abgefragt werden.

MethodeICS.CREATE_LINE [p p1, p p2][l line]
BeschreibungErzeugt aus zwei Punkten eine Linie.
Beispiel
VAR.P1 VAR.P2 ICS.CREATE_LINE [line]
MethodeICS.POINTX [p p1][r koord]
BeschreibungGibt die X-Koordinate eines Punkts zurück (horizontale Achse).
Beispiel
VAR.P1 ICS.POINTX [720340.235]
MethodeICS.POINTY [p p1][r koord]
BeschreibungGibt die Y-Koordinate eines Punkts zurück (vertikale Achse).
Beispiel
VAR.P1 ICS.POINTY [250370.857]
MethodeICS.POINTZ [p p1][r koord]
BeschreibungGibt die Z-Koordinate eines Punkts zurück (Höhe).
Beispiel
VAR.P1 ICS.POINTZ [320.750]
MethodeICS.CREATE_ARC [p p1, p p2, p p3][l line]
BeschreibungErzeugt aus drei Punkten einen Kreisbogen. Der Kreisbogen führt von <p1> via <p2> nach <p3>.
Beispiel
VAR.P1 VAR.P2 VAR.P3 ICS.CREATE_ARC [line]
MethodeICS.APPEND_LINE_POINT [l line, p p1][l line]
BeschreibungHängt einen Punkt an eine Linie an. Die Verbindung zwischen dem letzten Punkt der Linie <l> und dem Punkt <p1> ist eine Gerade.
Beispiel
VAR.L1 VAR.P1 ICS.APPEND_LINE_POINT [line]
MethodeICS.APPEND_LINE_ARC [l line, p p1, p p2][l line]
BeschreibungHängt einen Kreisbogen via <p1>, <p2> an eine Linie an. Als erster Punkt des Kreisbogens wird der letzte Punkt der Linie <l> angenommen.
Beispiel
VAR.L1 VAR.P1 VAR.P2 ICS.APPEND_LINE_ARC [line]
MethodeICS.CREATE_RAND [l line][r rand]
BeschreibungErzeugt aus der Linie <line> einen Rand.
Beispiel
VAR.L1 ICS.CREATE_RAND [rand]
MethodeICS.APPEND_RAND_LINE [r rand,l line][r rand]
BeschreibungHängt an einen Rand eine Linie an.
Beispiel
VAR.R1 VAR.L1 ICS.APPEND_RAND_LINE [rand]
MethodeICS.CREATE_AREA [r rand][a flaeche]
BeschreibungErzeugt aus dem Rand eine Fläche.
Beispiel
VAR.R1 ICS.CREATE_AREA [area]
MethodeICS.APPEND_AREA_RAND [a flaeche, r rand][a flaeche]
BeschreibungErzeugt eine Insel in einer bestehenden Fläche.
Beispiel
VAR.A1 VAR.R1 ICS.APPEND_AREA_RAND [area]
MethodeICS.SET_GATTR [* geometrie, i attr][* geometrie]
BeschreibungSetzt das Geometrieattribut für die Geometrie <geometrie>.
Beispiel
VAR.P1 1234 ICS.SET_GATTR [point]
MethodeICS.GET_GATTR [* geometrie][, i attr]
BeschreibungFragt das Geometrieattribut ab.
Beispiel
VAR.P1 1234 ICS.SET_GATTR ICS.GET_GATTR [1234]
MethodeICS.ARCPOINT [p ap, p ep, r radius][p mp, b status]
BeschreibungBerechnet aus einem durch Anfangspunkt <ap>, Endpunkt <ep> und Radius <r> gegebenen Kreisbogen den Mittelpunkt <mp> auf der Peripherie. Falls <status> TRUE ist, konnte die Berechnung erfolgreich durchgeführt werden.
Beispiel
VAR.P1 VAR.P2 2.5 ICS.ARCPOINT [point,TRUE]
MethodeICS.GEOMRESET [g geom][]
BeschreibungSetzt den internen Lesezeiger der Geometrie <geom> auf die erste Subgeometrie von <geom> (Vorbereitungsmethode für ICS.GEOMSCAN). ICS.GEOMRESET kann nicht auf Punkte angewendet werden.
Beispiel
&VAR.L1 ICS.GEOMRESET []
MethodeICS.GEOMSCAN [g geom][g subgeom, b status]
BeschreibungLiest die nächste Subgeometrie <subgeom> der Geometrie <geom>. Falls keine Subgeometrie mehr existiert, wird als <status> FALSE zurückgeliefert. ICS.GEOMSCAN kann nicht auf Punkte angewendet werden.
Beispiel
&VAR.L1 ICS.GEOMRESET
WHILE &VAR.L1 GEOMSCAN DO
   DISP
END_WHILE
MethodeICS.GEOMSCAN_LINEARC [l geom][p p3 , p p2, p p1, i status]
BeschreibungLiest die nächste Linie bzw. den nächsten Kreisbogen einer Liniengeometrie <l>. Bei einer Linie werden die beiden Endpunke (<p1>, <p2>) und bei einem Kreisbogen die Endpunkte (<p1>, <p3>) und ein Stützpunkt <p2> auf der Peripherie zurückgegeben. Der <status> hat folgende Bedeutung: 0: Fehler bzw. keine Linien oder Kreisbögen mehr vorhanden. 1: Es wurde eine Linie gelesen. 2: Es wurde ein Kreisbogen gelesen.
Beispiel
&VAR.L1 ICS.GEOMRESET
&VAR.L1 GEOMSCAN_LINEARC [point1 point2 1]
MethodeICS.GEOM_HAS_ARCS [g geom][b status]
BeschreibungErmittelt ob die Geometrie Kreisbögen beinhaltet. Wenn die Geometrie Kreisbögen beinhaltet, wird als status TRUE zurückgegeben, sonst FALSE . Nur Linien, Flächen und Ränder können Kreisbögen beinhalten.
Beispiel
VAR.GEOM GEOM_HAS_ARCS [TRUE]
MethodeICS.GEOM_HAS_HOLES [g geom][b status]
BeschreibungErmittelt ob die Geometrie Löcher beinhaltet. Wenn die Geometrie Löcher beinhaltet, wird als status TRUE zurückgegeben, sonst FALSE . Nur Flächen können Löcher beinhalten.
Beispiel
VAR.GEOM GEOM_HAS_HOLES [TRUE]
MethodeICS.GET_POINT_INSIDE [a flaeche][p point]
BeschreibungBerechnet einen Punkt <point> der sicher innerhalb der Fläche <flaeche> liegt. Inseln werden bei der Berechnung berücksichtigt.
Beispiel
&VAR.A1 GET_POINT_INSIDE [point]
MethodeICS.GET_AREA [a flaeche][r flaecheninhalt]
BeschreibungBerechnet den Flächeninhalt der Fläche <flaeche>. Inseln werden bei der Berechnung berücksichtigt.
Beispiel
&VAR.A1 GET_AREA [270.345]
MethodeICS.IS_INSIDE_AREA [a area, p point][b status]
BeschreibungBerechnet ob ein Punkt innerhalb einer Fläche liegt. Falls ja gibt die Methode das Argument TRUE zurück. Falls nein gibt die Methode das Argument FALSE zurück.
Beispiel
VAR.AREA VAR.POINT ICS.IS_INSIDE_AREA [TRUE]
MethodeICS.IS_INSIDE_FENCE [a fence, b overlap, g geom][b status]
BeschreibungBerechnet ob eine Geometrie innerhalb eines Fences liegt. Falls ja gibt die Methode das Argument TRUE zurück. Falls nein, gibt die Methode das Argument FALSE zurück. Der Fence muss eine Fläche sein. Die Geometrie kann ein Punkt, eine Linie oder eine Fläche sein. Mit overlap kann bestimmt werden, ob die Berechnung im Modus overlap oder inside ausgeführt werden soll. Kreisbögen werden berücksichtigt. Löcher in der Fläche des Fence oder in der Fläche einer Geometrie werden berücksichtigt. Bei der Berechnung von Flächen als Geometrie wird die Flächen getestet und nicht nur die Begrenzungslinien der Fläche. Das heisst zum Beispiel beim Modus overlap, dass eine Fläche die den Fence umfasst, innerhalb des Fences ist. Die Begrenzungslinien des Fences gehören ebenfalls zum Fence. Das heisst zum Beispiel, dass ein Punkt der auf der Begrenzungslinie des Fences liegt, innerhalb des Fences ist.
Beispiel
VAR.FENCE TRUE VAR.LINE ICS.IS_INSIDE_FENCE [TRUE]
MethodeICS.IS_INSIDE_FENCE_AND_BORDER [a fence, b overlap, g geom][b status]
BeschreibungAnalog zur Methode ICS.IS_INSIDE_FENCE mit dem Unterschied, dass die Begrenzungslinien des Fences nicht zum Fence gehören. Das heisst zum Beispiel, dass ein Punkt der auf der Begrenzungslinie des Fences liegt, nicht innerhalb des Fences ist.
Beispiel
VAR.FENCE TRUE VAR.LINE ICS.IS_INSIDE_FENCE_AND_BORDER [TRUE]
MethodeICS.FENCE_CUT [a fence, g geom][li list of geometries, b status]
BeschreibungBerechnet die Verschneidung einer Geometrie mit einem Fence. Der Fence muss eine Geometrie vom Typ area sein. Die Geometrie kann vom Typ point, line oder area sein. Ist die ganze Geometrie ausserhalb des Fences, so wird der status mit FALSE ohne Liste zurückgegeben. Ist die ganze Geometrie oder Teile der Geometrie innerhalb des Fence, so wird der status mit TRUE und die Teilgeometrien in einer Liste list zurückgegeben. Die Geometrien werden immer als Liste zurückgegeben, auch wenn die ganze Geometrie innerhalb des Fence liegt.
Beispiel
VAR.FENCE VAR.GEOM ICS.FENCE_CUT [list, TRUE]
MethodeICS.GEOMMOVE [g geom, p vector][g geom]
BeschreibungVerschiebt eine Geometrie um einen Vektor.
Beispiel
VAR.GEOMETRIE VAR.P ICS.GEOMMOVE [geom]
MethodeICS.GEOMSCALE [g geom, r scale][g geom]
BeschreibungSkaliert eine Geometrie um den Nullpunkt.
Beispiel
VAR.GEOMETRIE 10.0 ICS.GEOMSCALE [geom]
MethodeICS.GEOMSCALE2 [g geom, p point, r scale][g geom]
BeschreibungSkaliert eine Geometrie um den Punkt point.
Beispiel
VAR.GEOMETRIE VAR.POINT 2.0 ICS.GEOMSCALE2 [geom]
MethodeICS.GEOMROT [g geom, r rot][g geom]
BeschreibungRotiert eine Geometrie um den Nullpunkt.
Beispiel
VAR.GEOMETRIE 45.0 ICS.GEOMROT [geom]
MethodeICS.GEOMROT2 [g geom, p point, r rot][g geom]
BeschreibungRotiert eine Geometrie um den Punkt point.
Beispiel
VAR.GEOMETRIE VAR.POINT 45.0 ICS.GEOMROT2 [geom]
MethodeICS.GEOMROUND [g geom, r resolution][g geom]
BeschreibungRundet eine Geometrie auf die Resolution. Für Millimeter resolution = 0.001 .
Beispiel
VAR.GEOMETRIE 0.001 ICS.GEOMROUND [geom]
MethodeICS.STROKE [g geom, r tolerance][g geom]
BeschreibungLöst alle Kreisbögen in einer Geometrie in Liniensegmente auf. Ein Kreisbogen wird gleichmässig in Liniensegemente aufgelöst, bis die Toleranz unterschritten ist. tolerance > 0.0 : Die Toleranz ergibt sich aus dem Verhältnis der Pfeilhöhe zum Radius eines Kreisbogens. tolerance = 0.0 : Der Kreisbogen wird in den Anfangs- und Endpunkt und dem Punkt auf dem Kreisbogen aufgelöst. tolerance < 0.0 : Die Toleranz ist ein absoluter Wert in Meter, der die maximale Pfeilhöhe definiert.
Beispiel
VAR.GEOMETRIE 0.1 ICS.STROKE [geom]
MethodeICS.GET_LENGTH [l line][r length]
BeschreibungBerechnet die Länge einer Linie. Die Linie kann Lines oder Arcs beinhalten. Die Länge wird nur planar -x/y- berechnet. Falls die Länge nicht berechnet werden kann, gibt die Methode NULL zurück.
Beispiel
VAR.LINE ICS.GET_LENGTH [123.456]
MethodeICS.GET_LENGTH2 [g geometry][r length]
BeschreibungBerechnet die Länge eines Punktes, Linie oder Fläche. Bei einem Punkt ist die Länge=0.0. Bei einer Fläche entspricht das Resultat der Summe der Längen aller Ränder. Linienelement können Lines oder Arcs beinhalten. Die Länge wird nur planar -x/y- berechnet. Falls die Länge nicht berechnet werden kann, gibt die Methode NULL zurück.
Beispiel
VAR.AREA ICS.GET_LENGTH2 [123.456]
MethodeICS.GET_ARC_CENTER [l arc][p point]
BeschreibungBerechnet den Zentrumspunkt eines Kreisbogens. Falls die Geometrie kein Arc ist, wird NULL zurückgegeben.
Beispiel
VAR.ARC ICS.GET_ARC_CENTER [point]
MethodeICS.GET_ARC_RADIUS [l arc][r radius]
BeschreibungBerechnet den Bogenradius eines Kreisbogens. Falls die Geometrie kein Arc ist, wird NULL zurückgegeben.
Beispiel
VAR.ARC ICS.GET_ARC_RADIUS [112.234]
MethodeICS.EXTEND_LINE [l line, r distance][]
BeschreibungVerlängert eine Linie am Anfang oder Ende. Mit einer positiven distance wird die Linie am Ende (letztes Segment) verlängert. Mit einer negative distance wird die Linie am Anfang (erstes Segment) verlängert. Die Input-Geometrie bleibt unverändert in folgenden Fällen: es ist keine Linie, das zu verlängernde Segment ist ein Kresibogen, das zu verlängernde Segment hat keine Ausdehnung.
Beispiel
&VAR.LINE 5.0 ICS.EXTEND_LINE []
MethodeICS.CALC_POINT_AT [l line, r distance][r orientation, p point]
BeschreibungBerechnet einen Punkt und die Richtung am Punkt entlang einer Linie vom Anfangspunkt mit der Distanz. Die Linie kann Lines oder Arcs beinhalten. Der Punkt wird nur planar -x/y- berechnet. Falls die Distanz länger als die Linienlänge ist, wird der letzte Punkt der Linie mit seiner Orientierung zurückgegeben.. Falls keine Berechnung durchgeführt werden kann, werden die Werte als NULL zurückgegeben.
Beispiel
VAR.LINE 10.0 ICS.CALC_POINT_AT [45.0, point]
MethodeICS.CALC_POINT_AT2 [l line, r distance, r cross][r orientation, p point]
BeschreibungBerechnet einen Punkt und die Richtung am Punkt entlang einer Linie vom Anfangspunkt mit der Distanz und der Querdistanz. Die Linie kann Lines oder Arcs beinhalten. Der Punkt wird nur planar -x/y- berechnet. Eine positive Querdistanz bedeutet rechts in Richtung der Linie. Eine negative Querdistanz bedeutet links in Richtung der Linie. Falls die Distanz länger als die Linienlänge ist, wird der letzte Punkt der Linie mit seiner Orientierung für die Berechnung herangezogen. Falls keine Berechnung durchgeführt werden kann, werden die Werte als NULL zurückgegeben.
Beispiel
VAR.LINE 10.0 2.0 ICS.CALC_POINT_AT2 [45.0, point]
MethodeICS.PROJECT_POINT [l line, p point][r orientation, p point]
BeschreibungProjiziert die kürzeste Distanz eines Punktes auf eine Linie und berechnet den Linienpunkt auf der Linie und dessen Richtung. Ergeben sich mehrere Lösungen mit denselben kürzesten Distanzen, so wird derjenige Linienpunkt berücksichtigt, der die kürzeste Distanz auf der Linie vom Anfangspunkt der Linie aufweist. Der Linienpunkt wird nur planar -x/y- berechnet.
Beispiel
VAR.LINE VAR.POINT ICS.PROJECT_POINT [45.0, point]
MethodeICS.PROJECT_POINT2 [l line, p point][r distance, r length, r orientation, p point]
BeschreibungWie ICS.PROJECT_POINT. Zusätzlich werden als Argumente die Länge (Stationierung) auf der Linie bis zum Linienpunkt und der Querabstand vom Punkt zum Linienpunkt zurückgegeben. Eine positive Querdistanz bedeutet rechts in Richtung der Linie. Eine negative Querdistanz bedeutet links in Richtung der Linie.
Beispiel
VAR.LINE VAR.POINT ICS.PROJECT_POINT2 [-12.56, 123.12, 45.0, point]
MethodeICS.PROJECT_POINT_PERPENDICULAR [l line, p point][r orientation, p point, b status]
BeschreibungProjiziert einen Punkt als Lot rechtwinklig auf eine Linie und berechnet den Linienpunkt auf der Linie und dessen Richtung. Ergeben sich mehrere Lösungen mit denselben kürzesten Distanzen vom Punkt zum Linienpunkt, so wird derjenige Linienpunkt berücksichtigt, der die kürzeste Distanz auf der Linie vom Anfangspunkt der Linie aufweist. Der Linienpunkt wird nur planar -x/y- berechnet. Falls der Linienpunkt nicht berechnet werden kann, gibt die Methode nur den Status FALSE zurück.
Beispiel
VAR.LINE VAR.POINT ICS.PROJECT_POINT_PERPENDICULAR [45.0, point, TRUE]
MethodeICS.PROJECT_POINT_PERPENDICULAR2 [l line, p point][r distance, r length, r orientation, p point, b status]
BeschreibungWie ICS.PROJECT_POINT_PERPENDICUALR. Zusätzlich werden als Argumente die Länge (Stationierung) auf der Linie bis zum Linienpunkt und der Querabstand vom Punkt zum Linienpunkt zurückgegeben. Eine positive Querdistanz bedeutet rechts in Richtung der Linie. Eine negative Querdistanz bedeutet links in Richtung der Linie. Falls der Linienpunkt nicht berechnet werden kann, gibt die Methode nur den Status FALSE zurück.
Beispiel
VAR.LINE VAR.POINT ICS.PROJECT_POINT_PERPENDICUALR2
[-12.56,123.12, 45.0, point, TRUE]
MethodeICS.PROJECT_GEOM [g geometry1, g geometry2][r distance, p point2, p point1]
BeschreibungProjiziert die kürzeste Distanz einer Geometrie 1 auf eine Geometrie2. Geometrien könne vom Typ point, line oder area sein. Die Methode liefert die kürzeste Distanz , den Punkt 1 auf der Geometrie 1 und den Punkt 2 auf der Geometrie. Der Berechnung erfolgt nur planar -x/y. Achtung: Wenn ein Kreisbogen der Geometrie 1 zu einem Kreisbogen der Geometrie 2 die kürzeste Distanz ergibt, so ist die Berechnung ungenau. Der Kreisbogenpunkt der einen Geometrie wird jeweils auf den Kreisbogen der anderen Geometrie projiziert.
Beispiel
VAR.AREA VAR.LINE ICS.PROJECT_GEOM [16.83, point2, point1]
MethodeICS.GET_LINE_START_END_POINT [l line][p endpoint , p startpoint]
BeschreibungLiefert zu einer Linie den Start-und Endpunkt der Linie.
Beispiel
VAR.LINE ICS.GET_LINE_START_END_POINT [point, point]
MethodeICS.GET_LINE_START_END_TANGENT_ANGLE [l line][r endangle , r startangle]
BeschreibungLiefert zu einer Linie den Start-und Endtangentwinkel der Linie.
Beispiel
VAR.LINE ICS.GET_LINE_START_END_POINT [45.0, 315.0]
MethodeICS.COPY_LINE_PARALLEL [l line, r distance, s join, r miterlimit][l line]
BeschreibungKopiert eine Linie parallel um eine Distanz. Ein positiver Wert für distance bedeutet ein Kopieren rechts in Richtung der Linie. Ein negativer Wert für distance bedeutet ein Kopieren links in Richtung der Linie. Mit join wird der Verbindungstyp der Teilsegmente der kopierten Linie bestimmt. Mit join='bevel' werden die Teilsegmente mit einer Linie verbunden. Mit join='miter' werden die Teilsegmente verlängert, bis sie sich kreuzen, oder bis der Wert von miterlimit erreicht ist. Mit join='round' werden die Teilsegmente mit einem Kreisbogen verbunden.
Beispiel
VAR.LINE 0.25 'miter' 0.30 ICS.COPY_LINE_PARALLEL [line]
MethodeICS.COPY_AREA_BOUNDARY_PARALLEL [a area, r distance, s join, r miterlimit][a area]
BeschreibungKopiert die Flächenbegrenzungslinien eine Fläche parallel um eine Distanz . Sind die Fächenbegrenzungslinien im Uhrzeigersinn gerichtet, so bedeutet ein positiver Wert für distance ein Kopieren nach innen der Fläche, ein negativer Wert für distance ein Kopieren nach aussen der Fläche. Sind die Fächenbegrenzungslinien gegen den Uhrzeigersinn gerichtet, so bedeutet ein positiver Wert für distance ein Kopieren nach aussen der Fläche, ein negativer Wert für distance ein Kopieren nach innen der Fläche. Die gewünschte Richtung den Fächenbegrenzungslinien kann mit den Methoden ICS.SET_AREA_CLOCKWISE und ICS.SET_AREA_ANTICLOCKWISE gesetzt werden. Mit join wird der Verbindungstyp der Teilsegmente der kopierten Linie bestimmt. Mit join='bevel' werden die Teilsegmente mit einer Linie verbunden. Mit join='miter' werden die Teilsegmente verlängert, bis sie sich kreuzen, oder bis der Wert von miterlimit erreicht ist. Mit join='round' werden die Teilsegmente mit einem Kreisbogen verbunden.
Beispiel
VAR.AREA 0.25 'miter' 0.30 ICS.COPY_AREA_BOUNDARY_PARALLEL [area]
MethodeICS.CREATE_AREA_FROM_LINE[l line, r distance, s join, r miterlimit, s caps][a area]
BeschreibungErzeugt einen Linienbuffer (Fläche) um eine Linie durch das parallele Kopieren der Linie nach links und rechts und der Verbindung der kopierten Linien zu einer Fläche. Der Wert für distance gibt die Distanz zum parallelen Kopieren der Linien für die Fläche. Mit Join wird der Verbindungstyp der Teilsegmente der kopierten Linien bestimmt. Mit Join='bevel' werden die Teilsegmente mit einer Linie verbunden. Mit Join='miter' werden die Teilsegmente verlängert, bis sie sich kreuzen, oder bis der Wert von miterlimit erreicht ist. Mit Join='round' werden die Teilsegmente mit einem Kreisbogen verbunden. Mit Caps wird der Verbindungstyp an den Enden der kopierten Linien bestimmt. Mit Caps='bevel' werden die Enden mit einer Linie verbunden. Mit Caps='round' werden die Enden mit einem Kreisbogen verbunden.
Beispiel
VAR.LINE 0.25 'miter' 0.30 'round' ICS.CREATE_AREA_FROM_LINE [area]
MethodeICS.EXTRACT_LINE_SEGMENT[l line, r distance, r length][l line]
BeschreibungExtrahiert aus einer Linie ein Liniensegment ab der Distanz vom Startpunkt und mit der Länge .
Beispiel
VAR.LINE 100.0 10.0  ICS.EXTRACT_LINE_SEGMENT [line]
MethodeICS.EXTRACT_LINE_PATTERN_SEGMENT[l line, s pattern][li geometry-list]
BeschreibungExtrahiert aus einer Linie entsprechend dem Pattern Liniensegmente und gibt diese Geometrien in einer Liste zurück. Der 1. Eintrag im Pattern definiert die Länge des 1. Liniensegmentes. Der 2. Eintrag im Pattern definiert die Distanz vom Ende des 1. zum Anfang des 2. Lininesegment. Der 3. Eintrag im Pattern definiert die Länge des 2. Liniensegmentes. Der 4. Eintrag im Pattern definiert die Distanz vom Ende des 2. zum Anfang des 3. Lininesegment. Und so weiter bis zum Ende des Patterns, danach wiederholt sich das Pattern.
Beispiel
VAR.LINE '4.5/1.5/4.5/1.5/4.5/6.0'
ICS.EXTRACT_LINE_PATTERN_SEGMENT [list]
MethodeICS.EXTRACT_LINE_PATTERN_POINTS [l line, s pattern, b rot][li geometry-list]
BeschreibungExtrahiert aus einer Linie entsprechend dem Pattern Punkte und gibt diese Punkte in einer Liste zurück. Mit dem Boolean rot kann definiert werden, ob dir Rotation auf der Linie für einen Punkt in der z-Koordinate des Punktes zurückgegeben serden soll. Der 1. Eintrag im Pattern definiert die Länge bis zum 1. Punkt. Der 2. Eintrag im Pattern definiert die Länge vom vorherigen bis zum 2. Punkt. Der 3. Eintrag im Pattern definiert die Länge vom vorherigen bis zum 4. Punkt. Und so weiter bis zum Ende des Patterns, danach wiederholt sich das Pattern.
Beispiel
VAR.LINE '8.0/3.0/4.0/5.0' TRUE
ICS.EXTRACT_LINE_PATTERN_POINTS [list]
MethodeICS.LINEARCS_TO_BEZIER [l line][li list]
BeschreibungApproximiert Kreisbögen in einem Linienzug zu Bezier Kurven. Es wird eine Liste von Segmenten zurückgegeben. Ein Segment kann aus einer Geraden oder einer Bezier Kurve bestehen. Eine Gerade besteht aus einer Liste von 2 Punkten. Eine Bezier Kurve besteht aus einer Liste von 4 Stützpunkten. Der letzte Punkt eines Segmentes ist gleich dem ersten Punkt des nächsten Segmentes. Kreisbögen können in mehrer Bezier Kurven approximiert werden. Bezier Kurven werden zum Beispiel bei der Definition von Charctern/Symbolen in Fonts verwendet.
Beispiel
VAR.LINE ICS.LINEARCS_TO_BEZIER [list]
MethodeICS.ARC_CIRCLE_PREPARE [l arc, r sweep-angle-limit][l line, b status]
BeschreibungEine Geometrie die exakt ein Arc-Segment enthält und fast einen Vollkreis bildet, wird in einen Linienzug mit zwei Arc-Segmenten umgewandelt. Mit sweep-angle-limit kann die Limite gesetzt werden. Überschreitet der Sweep-Winkel des Kreisbogens diese Limite, wird die Verarbeitung durchgeführt und die neue Geometrie wird zusammen mit dem status TRUE zurückgegeben. Diese Methode kann angewendet werden, wenn Kreisbögen in Systeme geschrieben werden sollen, die Probleme mit Kreisbögen haben die fast einen Vollkreis bilden.
Beispiel
VAR.LINE 359.00 ICS.ARC_CIRCLE_PREPARE [line, TRUE]
MethodeICS.CREATE_CIRCLE [p point, r radius][l line]
BeschreibungKreiert aus einem Punkt als Kreiszentrum und einem Radius einen Kreis als Linie. Die Linie besteht aus zwei Kreisbögen. Falls der Kreis nicht kreiert werden kann, wird NULL zurückgegeben.
Beispiel
VAR.POINT 10.00 ICS.CREATE_CIRCLE [line]
MethodeICS.HATCH_AREA [a area, s type, p origin, r angle , r space][li geometry-list]
BeschreibungSchraffiert eine Fläche und gibt die Schraffurlinien als Liste von Linien-Geometrien zurück. Mit type wird der Schraffurtype definiert. Falls der Schraffurtype NULL oder unbekannt ist, gilt Type='absolute'. Mit type 'absolute' wird absolut vom Origin mit dem Winkel angle und der Distanz space schraffiert. Mit type 'relative' wird relativ zur längsten Begrenzunglinie der Fläche vom origin mit dem Winkel angle und der Distanz space schraffiert. origin definiert den Schraffurursprung. Falls origin NULL ist gilt der origin 0.0/0.0. angle definiert den Schraffurwinkel. space definiert die Schraffurdistanz zwischen den Linien.
Beispiel
VAR.AREA 'absolute' VAR.POINT 45.0 1.0 ICS.HATCH_AREA [list]
MethodeICS.CROSSHATCH_AREA [a area, s type, p origin, r angle , r space, r angle2 , r space2][li geometry-list]
BeschreibungAnalog wie ICS.HATCH_AREA mit 2 zusätzlichen Argumenten angle2 und space2 , mit denen die Kreuzschraffur analog den Argumenten angle und space definiert wird.
Beispiel
VAR.AREA 'absolute' VAR.POINT 45.0 1.0 -45.0 1.0 ICS.CROSSHATCH_AREA [list]
MethodeICS.PATTERN_AREA [a area, s type, p origin, r angle , r space-vertical, r offset][li geometry-list]
BeschreibungPattert eine Fläche und gibt die Pattern-Punkte als Liste von Punkt-Geometrien zurück. Mit type wird der Patterntype definiert. Falls der Patterntype NULL oder unbekannt ist, gilt type 'absolute'. Mit type 'absolute' wird absolut vom origin mit dem Winkel angle und der Distanz space gepattert. Mit type 'relative' wird relativ zur längsten Begrenzunglinie der Fläche vom Origin mit dem Winkel angle und der Distanz space gepattertt. origin definiert den Patternursprung. Falls origin NULL ist gilt der origin 0.0/0.0. angle definiert der Patternwinkel. space-vertical definiert die vertikale Patterndistanz zwischen den Punkten. offset definiert den horizontalen Offset eines Punktes auf jeder zweiten Pattern-Linie, relativ zum Patternwinkel.
Beispiel
VAR.AREA 'absolute' VAR.POINT 45.0 1.0 0.5 ICS.PATTERN_AREA [list]
MethodeICS.PATTERN_AREA2 [a area, s type, p origin, r angle , r space-vertical , r space-horizontal, r offset, b random][li geometry-list]
BeschreibungAnalog wie ICS.PATTERN_AREA mit 2 zusätzlichen Argumenten space-horizontal und random. space-horizontal definiert die horizontale Patterndistanz zwischen den Punkten. random definiert, dass der Punkt zuffällig um den berechneten Punkt ermittelt werden soll.
Beispiel
VAR.AREA 'absolute' VAR.POINT 45.0 1.0 2.0 0.5 FALSE ICS.PATTERN_AREA2 [list]
MethodeICS.SET_AREA_CLOCKWISE [a area][a area]
BeschreibungSetzt den Drehsinn der Geometrien des äusseren Randes einer Fläche auf den Uhrzeigersinn. Setzt den Drehsinn der Geometrien der Ränder von Inseln der Fläche auf den Gegenuhrzeigersinn.
Beispiel
VAR.AREA ICS.SET_AREA_CLOCKWISE[area]
MethodeICS.SET_AREA_ANTICLOCKWISE [a area][a area]
BeschreibungSetzt den Drehsinn der Geometrien des äusseren Randes einer Fläche auf den Gegenuhrzeigersinn. Setzt den Drehsinn der Geometrien der Ränder von Inseln der Fläche auf den Uhrzeigersinn.
Beispiel
VAR.AREA ICS.SET_AREA_ANTICLOCKWISE[area]
MethodeICS.GEOM_CLEAN [g geometry][g|li geometry or list, b status]
BeschreibungBereinigt eine Geometrie. Der Input kann ein Punkt, eine Linie oder eine Fläche sein. Die Anwendung der Methode ist zum Beispiel notwendig, wenn Geometrien in ein Geometrie-restrikives System geschrieben werden. Zum Beispiel zur Elimination von doppelten Punkten in einem Linienzug. Die Methode gibt einen Status zurück, ob die Geometrie berinigt wurde oder nicht. Status = FALSE , die Geometrie wurde nicht bereinigt, Status = TRUE, die Geometrie wurde bereinigt, die bereinigte Geometrie wird zusätzlich zrückgegeben. Die bereinigte Geometrie kann eine Geometrie, eine Liste von Geometrien oder NULL sein. Bei der Bereinigung erfolgt keine Umwandlung des Typs der Geometrie. Zum Beispiel wird eine nicht geschlossene Fläche nicht in eine Linie umgewandelt. Die Methode legt in der Map GEOM_CLEAN_STATUS Informationen über die Bereiningung der Geometrie ab. Mit ICS.GEOM_CLEAN_SYSTEM_SET kann das System definiert werden, nach dessen Krtiterien die Geometrie bereinigt werden soll . Mit ICS.GEOM_CLEAN_RESOLUTION_SET kann die Auflösung für die Bereiningung definiert werden. Zur funktionsweise siehe dazu mehr im Appendix.
Beispiel
VAR.GEOM ICS.GEOM_CLEAN [list, TRUE]
! Beispiel Anwendung
! ICS.GEOM_CLEAN
! ICS.GEOM_CLEAN_RESOLUTION_SET
! ICS.GEOM_CLEAN_STATUS_DESCR_GET

'ORACLE' GEOM_CLEAN_SYSTEM_SET
0.001 GEOM_CLEAN_RESOLUTION_SET

IF VAR.GEOM GEOM_CLEAN THEN
   => VAR.GEOM_CLEAN

   &GEOM_CLEAN_STATUS MAPRESET
   WHILE &GEOM_CLEAN_STATUS MAPSCAN DO
      TO_INT => VAR.STATUS
      => VAR.LIST

      VAR.STATUS GEOM_CLEAN_STATUS_DESCR_GET => VAR.DESCR

      DISPLAY VAR.DESCR
      &VAR.LIST RESET_READ    
      WHILE &VAR.LIST READ_NEXT DO
         DISP
      END_WHILE
   END_WHILE
END_IF
MethodeICS.GEOM_CLEAN_SYSTEM_SET [s system][]
BeschreibungSetzt für die Methode ICS.GEOM_CLEAN das System, nach dessen Kriterien die Geometrie bereiningt werden soll. Werte sind ORACLE oder ESRI.
Beispiel
'ORACLE' ICS.GEOM_CLEAN_SYSTEM_SET []
MethodeICS.GEOM_CLEAN_RESOLUTION_SET [r resolution][]
BeschreibungSetzt für die Methode ICS.GEOM_CLEAN die Auflösung für die Bereinigung der Geometrie. Der Default ist 0.001.
Beispiel
0.001 ICS.GEOM_CLEAN_RESOLUTION_SET []
MethodeICS.GEOM_CLEAN_STATUS_DESCR_GET [i status][s description]
BeschreibungDie Methode ICS.GEOM_CLEAN legt in der Map GEOM_CLEAN_STATUS Informationen über die Bereiningung der Geometrie ab. Die Map beinhaltet diverse Status-Codes mit jeweils einer Liste von Geometrien, die Bereinigungen betreffen. Mit dieser Funktion kann die Beschreibung zu einem Status ermittelt werden.
Beispiel
23 ICS.GEOM_CLEAN_STATUS_DESCR_GET ["STRAIGHT_ARC"]
MethodeICS.LINE_INTERSECTION [l line1, l line2][li list of points, b status]
BeschreibungBerechnet den Linienverschnitt zweier Linien. Konnten Punkte berechnet werden, bringt die Methode den Status TRUE und einen Liste der Punkte zurück. Konnten keine Punkte berechnet werden, bringt die Methode den Status FALSE ohne Liste zurück. Die Liste der Punkte beinhaltet Punkte, in denen beide Input-Linien sich schneiden oder berühren.
Beispiel
VAR.LINE1 VAR.LINE2 ICS.LINE_INTERSECTION [list, TRUE]
MethodeICS.AREA_INTERSECTION [a area1, a area2][li list of areas, b status]
BeschreibungBerechnet den Flächenverschnitt zweier Flächen mit dem boolschen Operator AND. Konnten Flächen berechnet werden, bringt die Methode den Status TRUE und einen Liste der Flächen zurück. Konnten keine Flächen berechnet werden, bringt die Methode den Status FALSE ohne Liste zurück. Die Liste der Flächen beinhaltet Flächen, in denen beide Input-Flächen vorkommen.
Beispiel
VAR.AREA1 VAR.AREA2 ICS.AREA_INTERSECTION [list, TRUE]
MethodeICS.AREA_DIFFERENCE [a area1, a area2][li list of areas, b status]
BeschreibungBerechnet den Flächenverschnitt zweier Flächen mit dem boolschen Operator XOR. Konnten Flächen berechnet werden, bringt die Methode den Status TRUE und einen Liste der Flächen zurück. Konnten keine Flächen berechnet werden, bringt die Methode den Status FALSE ohne Liste zurück. Die Liste der Flächen beinhaltet Flächen, in denen jeweils nur eine der beiden Input-Flächen vorkommt.
Beispiel
VAR.AREA1 VAR.AREA2 ICS.AREA_DIFFERENCE [list, TRUE]
MethodeICS.AREA_UNION [a area1, a area2][li list of areas, b status]
BeschreibungBerechnet den Flächenverschnitt zweier Flächen mit dem boolschen Operator OR. Konnten Flächen berechnet werden, bringt die Methode den Status TRUE und einen Liste der Flächen zurück. Konnten keine Flächen berechnet werden, bringt die Methode den Status FALSE ohne Liste zurück. Die Liste der Flächen beinhaltet Flächen, in denen eine oder beide der Input-Flächen vorkommen. Eine erfolgreiche Berechnung ergibt immer nur eine Fläche. Diese Fläche wird wie in den anderen boolschen Flächenverschnitten in einer Liste zurückgegeben.
Beispiel
VAR.AREA1 VAR.AREA2 ICS.AREA_UNION [list, TRUE]
MethodeICS.GET_AREA_LINE_LIST [a area][li list]
BeschreibungLiest alle Linien aller Ränder einer Fläche und bringt diese Linien als Liste zurück.
Beispiel
VAR.AREA ICS.GET_AREA_LINE_LIST[list]
MethodeICS.CALC_BOUNDING_BOX [g geometrie][p pointmax, p pointmin]
BeschreibungBerechnet zu einer Geometrie point, line oder area die maximale 2D-Ausdehung. Die Methode liefert auf dem Stack die minimalen ind maximalen Koordinaten der Ausdehnung je als point.
Beispiel
VAR.AREA ICS.CALC_BOUNDING_BOX [pointmax, pointmin]
MethodeICS.CALC_BOUNDING_BOX3D [g geometrie][p pointmax, p pointmin]
BeschreibungBerechnet zu einer Geometrie point, line oder area die maximale 3D-Ausdehung. Die Methode liefert auf dem Stack die minimalen ind maximalen Koordinaten der Ausdehnung je als point.
Beispiel
VAR.AREA ICS.CALC_BOUNDING_BOX3D [pointmax, pointmin]
MethodeICS.VADD [g geometrie, p vector][g geometrie]
BeschreibungVerschiebt eine Geometrie um einen Vektor.
Beispiel
VAR.GEOM 10.0 10.0 10.0 TO_POINT ICS.VADD [geometrie]
MethodeICS.VDIFF [p point1, p point2][p vector]
BeschreibungBerechnet den Vektor als Punkt von point2 zu point1.
Beispiel
VAR.POINT1 VAR.POINT2 ICS.VDIFF [point]
MethodeICS.VSCAL [g geometrie, r scale][g geometrie]
BeschreibungSkaliert eine Geometrie um den Nullpunkt.
Beispiel
VAR.GEOM 2.0 ICS.VSCALE [geometrie]
MethodeICS.AZI [g point|line][r azimut]
BeschreibungBerechnet für einen Punkt oder eine Linie das Azimut. Bei einem Punkt relativ zum Nullpunkt. Bei einer Linien vom Endpunkt zum Startpunkt.
Beispiel
VAR.GEOM ICS.AZI [real]
MethodeICS.GEOMSET2D [g geometrie][g geometrie]
BeschreibungTransferiert eine 3D-Geometrie in eine 2D-Geometrie. Ist die Geometrie bereits eine 2D-Geometrie, bleibt diese unverändert.
Beispiel
VAR.GEOM ICS.GEOMSET2D [geometrie]
MethodeICS.GEOMSET3D [g geometrie, r z, b zkeep][g geometrie]
BeschreibungTransferiert eine 2D-Geometrie in eine 3D-Geometrie mit der Z-Koordinate z. Ist die Geometrie bereits eine 3D-Geometrie, so kann mit zkeep=TRUE definiert werden, dass die z-Koordinate beibehalten wird, oder mit zkeep=FALSE, dass die z-Koordinate mit z überschrieben wird
Beispiel
VAR.GEOM 100.0 TRUE ICS.GEOMSET3D [geometrie]
MethodeICS.GEOMIS2D [g geometrie][b is2D]
BeschreibungErmittelt ob alle Punkte einer Geometrie 2D-Koordinaten aufweisen. Das heisst auch, es kommen keine 3D-Koordinaten vor.
Beispiel
VAR.GEOM ICS.GEOMIS2D [TRUE]
MethodeICS.GEOMIS3D [g geometrie][b is3D]
BeschreibungErmittelt ob alle Punkte einer Geometrie 3D-Koordinaten aufweisen.
Beispiel
VAR.GEOM ICS.GEOMIS3D [TRUE]

6.12. Datum/Zeit Methoden

MethodeICS.GET_TIME [][i <HHMMSS>]
BeschreibungLiefert die aktuelle Systemzeit im Format HHMMSS als Integer.
Beispiel
GET_TIME [200503] ! 20 Uhr 5 Minuten und 3 Sekunden
MethodeICS.GET_DATE [][i <YYYYMMDD>]
BeschreibungLiefert das aktuelle Systemdatum im Format YYYYMMDD als Integer .
Beispiel
GET_DATE [19970929] ! 29. September 1997
MethodeICS.GET_DAYNAME [s <language>][s <day>]
BeschreibungLiefert den Namen des Tages des aktuellen Systemdatum. Als <language> werden folgende Codes unterstützt: DE|FR|IT|EN .
Beispiel
'DE' GET_DAYNAME ['Freitag']
MethodeICS.DATE_TO_DAY [i <yyyymmdd>][i <day>]
BeschreibungLiefert von einem Date den Wochentag als Integer 0..6 (Sonntag..Samstag).
Beispiel
19690721 DATE_TO_DAY [1]
MethodeICS.INT_TO_DAYNAME [i <day>,s <language>][s <day>]
BeschreibungKonvertiert einen Tag als Integer in den Namen des Tages. Als <day> als Integer werden folgende Werte berücksichtigt 0..6 (Sonntag..Samstag). Als <language> werden folgende Codes unterstützt: DE|FR|IT|EN .
Beispiel
1 'DE' INT_TO_DAYNAME ['Montag']
MethodeICS.GET_MONTHNAME [s <language>][s <month>]
BeschreibungLiefert den Namen des Monats des aktuellen Systemdatum. Als <language> werden folgende Codes unterstützt: DE|FR|IT|EN .
Beispiel
'DE' GET_MONTHNAME ['August']
MethodeICS.DATE_TO_MONTH [i <yyyymmdd>][i <month>]
BeschreibungLiefert von einem Date den Monat als Integer 1..12 (Januar..Dezember).
Beispiel
 19690721 DATE_TO_MONTH [9]
MethodeICS.INT_TO_MONTHNAME [i <month>,s <language>][s <month>]
BeschreibungKonvertiert einen Monat als Integer in den Namen des Monats. Als <month> als Integer werden folgende Werte berücksichtigt 1..12 (Januar..Dezember). Als <language> werden folgende Codes unterstützt: DE|FR|IT|EN .
Beispiel
7 'DE' INT_TO_MONTHNAME ['Juli']
MethodeICS.GET_SECONDS [][i <seconds>]
BeschreibungLiefert die Sekunden seit dem Datum 1.1.1970 .
Beispiel
GET_SECONDS [1259672203]
MethodeICS.SECONDS_TO_HOURS [i <seconds>][i <HHMMSS>]
BeschreibungRechnet Sekunden in Stunden im Format HHMMSS als Integer um.
Beispiel
131088 SECONDS_TO_HOURS [362448]
MethodeICS.HOURS_TO_SECONDS [i <HHMMSS>][i <seconds>]
BeschreibungRechnet Stunden im Format HHMMSS als Integer in Sekunden um.
Beispiel
362448 SECONDS_TO_HOURS [131088]
MethodeICS.DATE_DIFF [i <YYYYMMDD>, i <YYYYMMDD>][i <days>]
BeschreibungBerechnet die Anzahl Tage zwischen zwei Dati im Format YYYYMMDD als Integer.
Beispiel
20090101 20091231 DATE_DIFF [364]
MethodeICS.TIME_DIFF [i <HHMMSS>, i <HHMMSS>][i <HHMMSS>]
BeschreibungBerechnet die Zeit zwischen zwei Zeiten. Alle Zeiten im Format HHMMSS als Integer.
Beispiel
080000 173045 TIME_DIFF [93045]
MethodeICS.DATE_TIME_DIFF [i <YYYYMMDD> i <HHMMSS>, i <YYYYMMDD> i <HHMMSS>][i <HHMMSS>]
BeschreibungBerechnet die Zeit zwischen zwei Dati mit Zeiten. Alle Dati im Format YYYYMMDD als Integer.. Alle Zeiten im Format HHMMSS als Integer.
Beispiel
20080228 180000 20080301 183045 DATE_TIME_DIFF [483045]
MethodeICS.TIME_ADD [i <HHMMSS>, i <HHMMSS>][i <HHMMSS>]
BeschreibungAddiert zwei Zeiten. Alle Zeiten im Format HHMMSS als Integer.
Beispiel
183030 023030 TIME_ADD [210100]
MethodeICS.TIME_MINUS [i <HHMMSS>, i <HHMMSS>][i <HHMMSS>]
BeschreibungSubtrahiert zwei Zeiten. Alle Zeiten im Format HHMMSS als Integer.
Beispiel
210100 023030 TIME_MINUS [183030]
MethodeICS.SECONDS_TO_DATE_TIME [i <seconds>][i <HHMMSS>, i <YYYYMMSS>]
BeschreibungKonvertiert Sekunden in ein Datum im Format YYYYMMDD als Integer und in eine Zeit im Format HHMMSS als Integer. Die Sekunden entsprechen den Anzahl Sekunden seit dem 1.1.1970 ermittelt mit ICS.GET_SECONDS .
Beispiel
GET_SECONDS SECONDS_TO_DATE_TIME [152329, 20091201]
MethodeICS.DATE_TIME_TO_SECONDS [i <YYYYMMSS>, i <HHMMSS>][i <seconds>]
BeschreibungKonvertiert ein Datum im Format YYYYMMDD als Integer und eine Zeit im Format HHMMSS als Integer in Sekunden. Die Sekunden entsprechen den Anzahl Sekunden seit dem 1.1.1970 ermittelt wie mit ICS.GET_SECONDS.
Beispiel
20091201 152329 DATE_TIME_TO_SECONDS [1259677409]
MethodeICS.TIME_TO_STRING [i <HHMMSS>][s <HH.MM.SS>]
BeschreibungKonvertiert eine Zeit im Format HHMMSS als Integer in einen String im Format 'HH:MM:SS'.
Beispiel
183045 TIME_TO_STRING ['18:30:45']
MethodeICS.STRING_TO_TIME [s <'HH:MM:SS'>][i <HHMMSS>]
BeschreibungKonvertiert eine Zeit im Format 'HH:MM:SS' als String in einen Integer im Format HHMMSS.
Beispiel
'18:30:45' STRING_TO_TIME [183045]
MethodeICS.DATE_TO_STRING [i <YYYYMMSS>][s <DD.MM.YYYY>]
BeschreibungKonvertiert ein Datum im Format YYYYMMDD als Integer in einen String im Format 'DD.MM.YYYY'.
Beispiel
20091231 TIME_TO_STRING ['31.12.2009']
MethodeICS.STRING_TO_DATE [s <'DD.MM.YYYY'>][i <YYYYMMDD>]
BeschreibungKonvertiert ein dATUM im Format 'DD.MM.YYYYY' als String in einen Integer im Format YYYYMMDD.
Beispiel
'31.12.2009' STRING_TO_DATE [20091231]
MethodeICS.DATE_TO_STRING2 [i <YYYYMMSS> s <language>][s <DD. month YYYY>]
BeschreibungKonvertiert ein Datum im Format YYYYMMDD als Integer in einen String im Format 'DD. month YYYY'. Als <language> werden folgende Codes unterstützt: DE|FR|IT|EN
Beispiel
20091231 'DE' TIME_TO_STRING2 ['31. Dezember 2009']

6.13. Spezielle Methoden

MethodeICS.HALT [][]
BeschreibungBricht die Ausführung des aktuellen Skripts sofort ab.
Beispiel
ICS.HALT []
MethodeICS.CALL [s prozedurname][]
BeschreibungRuft die Prozedur <prozedurname> auf. Der Prozedurname muss als String übergeben werden. Falls die Prozedur nicht existiert, wird der Skript abgebrochen.
Beispiel
'MYPROC' ICS.CALL []
MethodeICS.CALLED_BY [s prozedurname][b status]
BeschreibungTestet ob eine Prozedur von einer anderen Prozedur <prozedurename> aufgerufen wurde.
Beispiel
PROCEDURE TEST
   IF 'A' CALLED_BY THEN
      DISPLAY 'TEST was called by A'
   ELSIF 'B' CALLED_BY THEN
      DISPLAY 'TEST was called by B'
   END_IF
END_PROCEDURE

PROCEDURE A
  TEST
END_PROCEDURE

PROCEDURE B
   TEST
END_PROCEDURE

A B
MethodeICS.OSCALL [s befehl][i status]
BeschreibungFührt den Betriebsystembefehl <befehl> aus. Der Skriptinterpreter wartet auf die Beendigung des Befehls. In <status> wird der Beendigungsstatus des Betriebssystembefehls zurückgegeben (0 = erfolgreiche Durchführung).
Beispiel
IF 'dir c:\' ICS.OSCALL <> 0 THEN
   DISPLAY 'der Befehl konnte nicht durchgeführt werden'
END_IF
MethodeICS.GETENV [s <var>][s <value>,b <status>]
BeschreibungLiefert den Wert der Umgebungsvariablen <var> in <value> zurück. Falls die Umgebungsvariable existiert, wird für den Status TRUE zurückgegeben.
Beispiel
IF 'SystemRoot' ICS.GETENV THEN
   DISPLAY 'SystemRoot=',$
ELSE
   DISPLAY 'SystemRoot existiert nicht'
END_IF
MethodeICS.GET_WORKING_DIRECTORY [][s <dir>]
BeschreibungLiefert das aktuelle Arbeitsverzeichnis. (Siehe auch Methoden der Klasse DIRECTORY).
Beispiel
GET_WORKING_DIRECTORY ['c:\iltools\data']
MethodeICS.GET_COMPUTERNAME [][s <name>]
BeschreibungLiefert den aktuellen Computernamen.
Beispiel
GET_COMPUTERNAME ['server']
MethodeICS.GET_SYSTEMLANGUAGE [][s <language>]
BeschreibungLiefert die aktuelle Systemsprache.
Beispiel
GET_SYSTEMLANGUAGE ['Deutsch (Schweiz)']
MethodeICS.GET_SYSTEMLANGUAGECODE [][s <languagecode>]
BeschreibungLiefert den 2-stelligen ISO-Code der aktuellen Systemsprache.
Beispiel
GET_SYSTEMLANGUAGECODE ['DE']
MethodeICS.GET_USERNAME [][s <name>]
BeschreibungLiefert den aktuellen Benutzernamen.
Beispiel
GET_USERNAME ['Administrator']
MethodeICS.INCR_ERROR_COUNT [][]
BeschreibungErhöht den aktuellen Fehlerzähler um 1. Bemerkung: Von ERROR wird automatisch ICS.INCR_ERROR_COUNT aufgefrufen.
Beispiel
IF IN.Name IS_NULL THEN
   DISPLAY 'name is not defined'
   INCR_ERROR_COUNT
END_IF
MethodeICS.GET_ERROR_COUNT [][i count]
BeschreibungFragt den aktuellen Fehlerzähler ab.
Beispiel
IF GET_ERROR_COUNT = 0 THEN
   DISPLAY 'script terminated with no errors'
END_IF
MethodeICS.SET_ERROR_COUNT [i count][]
BeschreibungSetzt den aktuellen Fehlerzähler auf <count>.
Beispiel
99 SET_ERROR_COUNT
MethodeICS.GET_GUID [][s guid]
BeschreibungLiefert einen GUID (Globally Unique Identifier), eine eindeutige 128-Bit Nummer welche vom Windows-System generiert wird. Der GUID wird als Hexadezimal-String mit der Länge von 38 Zeichen inklusive 6 Format-Zeichen zurückgegeben.
Beispiel
GET_GUID ['{C771D8CB-E6D5-4DC2-9B92-76F8ED982799}']
MethodeICS.GET_GUID_RAW [][s guid]
BeschreibungLiefert einen GUID (Globally Unique Identifier), eine eindeutige 128-Bit Nummer welche vom Windows-System generiert wird. Der GUID wird als Hexadezimal-String mit der Länge von 32 Zeichen ohne Format-Zeichen zurückgegeben.
Beispiel
GET_GUID_RAW ['C771D8CBE6D54DC29B9276F8ED982799']
MethodeICS.GET_STRING_MD5 [s string][s md5]
BeschreibungLiefert für einen String einen eindeutigen Schlüssel als String. Der Schlüssel entspricht dem MD5-128-Bit-Hashwert in Hexadezimaler Schreibform (MD5 = Message-Digest Algorithm 5). Falls der Schlüssel nicht berechnet werden kann, liefert die Methode NULL zurück (z.B. bein einem Input <> string).
Beispiel
'Hello World' GET_STRING_MD5 ['B10A8DB164E0754105B7A99BE72E3FE5']
MethodeICS.GET_FILE_MD5 [s file][s md5]
BeschreibungLiefert für ein File einen eindeutigen Schlüssel als String. Der Schlüssel entspricht dem MD5-128-Bit-Hashwert in Hexadezimaler Schreibform (MD5 = Message-Digest Algorithm 5). Falls der Schlüssel nicht berechnet werden kann, liefert die Methode NULL zurück (z.B. das File existiert nicht). Die Methode kann eingesetzt werden, um festzustellen, ob zwei Files identisch sind. Liefert die Methode unterschiedliche Schlüssel, so sind die Files nicht identisch.
Beispiel
'c:\iltools\data\examples\DM01AVCH24D.itf' GET_FILE_MD5 ['6100C2FA5842BDE3BCEF16B0775A5DBB']
MethodeICS.EXPAND_ICS_PATH [s file][s file, b status]
BeschreibungExpandiert einen relativen Pfad eines Files zum vollen Pfad in der ICS-Struktur. Sucht das File nach folgender Reihenfolge: 1. absoluter Pfad, 2. Pfad unter ILTOOLS_DIR\user, 3. Pfad unter ILTOOLS_DIR\system, 4. Pfad unter ILTOOLS_DIR, 5. Pfad wie Hauptkonfiguration, 6. Pfad wie Hauptkonfiguration aber unter ILTOOLS_DIR\system. Wird das File nicht gefunden, wird als Status FALSE zurückgegeben.
Beispiel
'\models\Grunddatensatz.ili' EXPAND_ICS_PATH ['c:\iltools\system\models\Grunddatensatz.ili' TRUE]
MethodeICS.INCLUDE [s script][b status]
BeschreibungInkludiert ein Script-File. Analg der Direktive |INCL . Mit dieser Methode können dynamisch Scripts geladen werden.
Beispiel
'\script\util.lib' INCLUDE [TRUE]
MethodeICS.INCLUDES_DISPLAY [][]
BeschreibungDisplays alle inkludierten Scripts.
Beispiel
INCLUDES_DISPLAY
MethodeICS.INCLUDES_GET [][li list]
BeschreibungGibt alle inkludierten Scripts als Liste zurück.
Beispiel
INCLUDES_GET [list]
MethodeICS.SCRIPT_GET [][s script]
BeschreibungLiefert das aktuelle Script.
Beispiel
SCRIPT_GET [script]
MethodeICS.SET_NEXT_SCRIPT [s script][]
BeschreibungSetzt ein Skript, das nach dem Ausführen des aktuellen Skripts ausgeführt werden soll. Durch den mehrmaligen Aufruf dieser Methode können auch weitere Skripts zur Ausführung gesetzt werden. Die Skripts werden in der Reihenfolge ausgeführt, wie dieses gesetzt wurden. Das zuerst gesetzte Script wird zuerst ausgeführt. Das zuletzt gesetzte Script wird zuletzt ausgeführt.
Beispiel
'\script\myscripts\myscript.cfg' SET_NEXT_SCRIPT
MethodeICS.SET_NEXT_SCRIPT_OPTION [s option, s value][]
BeschreibungZu einem mit ICS.SET_NEXT_SCRIPT gesetzten Script können nachfolgend mit dieser Methode Optionen für das Script gesetzt werden.
Beispiel
'input' OPT.output SET_NEXT_SCRIPT_OPTION
MethodeICS.GET_MAIN_PROGRAM [][s program]
BeschreibungGibt das aktuelle Hauptprogramm mit dem Pfad zurück, ..\icsw.exe oder ..\ics.exe .
Beispiel
GET_MAIN_PROGRAM ['c:\iltools\system\bin\icsw.exe']
MethodeICS.IS_BATCH_PROGRAM [][b status]
BeschreibungGibt zurück, ob das aktuelle Hauptprogram ics.exe ist. ics.exe wird für Batch-Prozesse eingesetzt.
Beispiel
IS_BATCH_PROGRAM [TRUE]