[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Dec 2005
    Beiträge
    131

    Question verbotene Variablen, Zeichen und Namen

    Hallo zusammen!

    Mal wieder bin ich auf der Suche...

    Dieses Mal geht es um Zeichen oder ganze Ausdrücke, die im RPG nicht erlaubt sind.
    Ich bin zufällig darauf gestoßen, weil ich mit dem RDi auf einem System gearbeitet habe, welches "andere" Einstellungen bzgl. CCSID LANGID, CNTRYID o.ä. hat.
    Auf jeden Fall habe ich eine Variable ##CPF genannt, und bekam ständig Fehlermeldungen, dass die Variable CPF nicht definiert sei. Ich habe vergeblich gesucht, wo der Fehler lag, bis ich (auch wieder zufällig) die Source im SEU öffnete.
    Und hier stand dann nicht mehr ##CPF sondern ££CPF.

    Tja, und seitdem suche ich eine Übersicht, auf welche "Ausdrucksweise" man bei der Programmierung achten muss.

    Bei einigen Sonderzeichen ist es mir klar, dass ich sie nicht verwenden darf (Ziffer zu Beginn, ?+*'%!" usw.) - aber spätestens bei Variablennamen, die nicht offensichtlich systemeigen klingen, gibt es vielleicht die eine oder andere Überraschung!?

    Ich habe bei meiner Suche im www leider nichts dazu gefunden, aber bestimmt hat jemand etwas dazu in petto...

    Vielen Dank schonmal für jegliche Hilfe!

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Das Thema heißt "varianter Zeichensatz" und "invarianter Zeichensatz".
    Invariant bedeutet eben, dass diese Zeichen in jeder CCSID identisch ist.
    Das das "#"-Zeichen auch im Lib-Namen erlaubt ist, ist es halt so, dass man an diese Lib in einer anderen CCSID nur mit "£" wieder drankommt.

    Irgendwo in den Tiefen des "iSeries Information Centers", zum Thema Globalisierung, ist der auch definiert.
    Im Wesentlichen sind das:

    A-Z a-z 0-9 ,.-;?

    Die C-Programmierer auf der AS/400 kriegen nämlich einen Fön, da "{}" sehr häufige Zeichen sind und die sind in jeder CCSID anders.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Nachtrag:

    Dies gilt übrigens auch für alle verwendeten Konstanten, da diese nur zur Compilezeit in die Job-CCSID (wenn sie denn nicht wieder mal 65535 ist) umgewandelt wird.

    Ein "chain ('#') Myfile;" führt dann immer zu %notfound()!
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    ILE RPG Reference V7R2 - Symbolic Names and Reserved Words

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    In der Referenz sind aber z.B. "#@" aufgeführt, dies sind variante Zeichen!
    Ich habe nun den Link gefunden:

    http://www-01.ibm.com/support/knowle...et.htm?lang=de

    Wie man sieht, ist sogar das Anführungszeichen (COBOL-Fraktion) ein variantes Zeichen!
    D.h., dass z.B. in CMD's verwendete Anführungszeichen ggf. auf anderer CCSID nicht funktionieren.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    In der Referenz sind aber z.B. "#@" aufgeführt, dies sind variante Zeichen!
    Das stimmt schon, aber man sollte auch alles lesen!
    Im nächsten Satz steht nämlich:

    "The $, #, and @ may appear as different symbols on some codepages."

    Am besten fährt man, wenn man seine Namenskonventionen so festlegt, dass keine Sonderzeichen verwendet werden.

    Ansonsten gibt es in RPG wenig Beschränkungen.
    Mit SQL sollte man etwas vorsichtiger sein, zum einen gibt es einen ganzen Katalog von reservierten Worten und zum anderen sollte man keine Variablen-Namen mit SQ oder SQL beginnen lassen, diese sind für den SQL Precompiler (SQLCA/SCLDA) reserviert.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    "The $, #, and @ may appear as different symbols on some Codepages" ist aber genau das Problem eines Compilers, wenn man eine Variable "$X" oder "#X" benennt und mit einer anderen CCSID compiliert.
    Da wird dann aus "#" eben "£" und das ist im Namen nicht erlaubt -> ergo Compiler-Fehler.

    Wenn man denn die Quelle von der Herkunft in eine SRC-PF mit der richtigen CCSID stellt und seinen Job auch auf eine CCSID (eben nicht 65535), wird die Quelle für den Compiler in die Job-CCSID gewandelt.
    Dabei wird z.B. das "#"-Zeichen korrekt der CCSID zugewiesen und der Compiler streikt nicht.

    Allerdings erlebe ich es (auch mit V7R1 gerade wieder aktuell) immer wieder, dass die Maschinen nicht auf die korrekte CCSID der aktuelle Sprache gestellt werden sondern systemweit mit 65535 arbeiten.
    Anschließend wundert man sich dann wieder warum die Zeichen mit ODBC/FTP o.ä. so komisch aussehen.

    Fährt man aber mit einer CCSID auch im System gibt es erheblich weniger Probleme dieser Art.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Nachtrag:
    Gerade in SQL sollte man mit Sonderzeichen in Feldnamen vorsichtig sein da bei falscher CCSID diese ggf. nicht gefunden werden und somit der SQL nicht funktioniert.
    Leider ist hier das "#"-Zeichen wieder mal ein gern gesehener Favorit.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Cobol und Call und Variablen
    By KingofKning in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 19-02-15, 16:42
  2. Lebensdauer von static Variablen
    By dschroeder in forum NEWSboard Programmierung
    Antworten: 17
    Letzter Beitrag: 22-01-15, 15:23
  3. Anzahl der Host-Variablen geringer als die Ergebniswerte
    By hartmuth in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 18-09-14, 09:57
  4. CL Variablen konvertieren
    By danielfeurstein in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 22-07-02, 15:19
  5. Neue Namen für VEDA-Software
    By Kirsten Steer in forum Archiv NEWSblibs
    Antworten: 0
    Letzter Beitrag: 12-03-02, 08:00

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •