View Full Version : Problem bei CHGVAR
Hallo Zusammen
kann mir jemand Unterstützung geben
hab eine Variable so eine deklariert
DCL VAR(&NULL) TYPE(*CHAR) LEN(1) VALUE(X'00')
und möchte dann ein
CHGVAR VAR(&CMDSHR) VALUE('PS -EF | GREP ' *CAT +
'PHP-CGI' *CAT ' | AWK "{PRINT $2}" | +
XARGS KILL -9' || &NULL)
aber der Editor reklamiert immer mit folgende Fehlermeldung
Zeichenfolge '|| &NULL) ' enthält ein ungültiges Zeichen.
Danke für die Unterstützung
Grüsse
Vito
dschroeder
21-11-19, 13:41
Müsste es nicht so heißen?
... XARGS KILL -9' *CAT &NULL)
Ich glaube, das || ist im CL kein gültiger Concatenator. Du musst *CAT verwenden.
Dieter
die 12 Striche gibt es nur in der SQL Umgebung aber auch dort wäre concat die bessere Wahl.
hier mußt du *tcat * cat oder *bcat verwenden.
außerdem muß hinter den strich der 2. zeile ein '
und vor das xargs ebenfals ein '
So geht's bei mir
CHGVAR VAR(&CMDSHR) VALUE('PS -EF | GREP ' *CAT +
'PHP-CGI' *CAT ' | AWK "{PRINT $2}" | +
XARGS KILL -9' *CAT &NULL)
ohne meckern.
Danke, funktioniert bei mir auch
Gruss
Das || kann in CL verwendet werden.
Aus dem Handbuch "Software Development Guidelines", das ich für unsere Group-IT entwickelt habe:
The use of ¬=, ||, |>, and |< is not accepted. From the IBM manual C4157215.pdf:
<tbody>
Note: Using the ampersand symbol or the vertical bar can cause problems because the symbols are not at the same code point for all code pages. To avoid this, use *AND and *OR instead of the symbols.
</tbody>
Wie du schon sagst. Die Zeichen sind Codepage-Abhängig und werden nur zur Compilezeit entsprechend umgewandelt (SRC-CCSID->Job-CCSID).
Zur Laufzeit funktioniert das dann nicht mehr, wenn eine andere CCSID verwendet wird, da Programmcode keiner Umwandlung mehr unterliegt.
Das kennt man ja eigentlich auch schon aus RPG/LE für Zeichen wie #,&,...