View Full Version : ILE Quellen IFS vs Source Files
Andreas_Prouza
24-11-25, 16:35
wenn ich die CopySrc auf den SrcFile drinn lasse klappt es nicht :(
Was schreibt das Spool/Joblog?
Moin Andreas,
leider nicht so viel:
RNS9311 Beendigung 50 24.11.25 16:46:52,876182 QRN4CPP QDEVTOOLS *STMT QCMD QSYS 01C8
Ausgangsmodul . . . . . . . : GRP4CPP
Ausgangsprozedur . . . . . : cleanup
Anweisung . . . . . . . . . : 19
Nachricht . . . : Umwandlung gestoppt. Interner Fehler aufgetreten.
Fehlercode ist 1.
Ursache . . . . : Mögliche Fehlercodes sind: 1 - Fehler im Front-End des
Umwandlungsprogramms aufgetreten. 2 - Fehler während des Befehlsaufrufs
aufgetreten. 3 - Fehler im Back-End aufgetreten. 4 - Fehler im Befehl
aufgetreten. 5 - Speicherzuordnungsfehler im Befehl aufgetreten. 12 -
Speicherzuordnungsfehler im Front-End aufgetreten. 13 - Lesefehler im
Front-End des Umwandlungsprogramms aufgetreten. 14 - Schreibfehler im
Front-End des Umwandlungsprogramms aufgetreten. Fehlerbeseitigung: Den
Kundendienst benachrichtigen und die Fehlercode-ID mitteilen.
PS: ich habe grade mal das Objekt gelöscht und Tada auf einmal klappt es
PPS: es klappt doch nicht immer ich muss da wohl beim Hin und her Kopieren und CCSID Ändern was kaputt gemacht haben
Das Problem hast aber auch wenn die Quelle statt IFS in einer Source-Lib ist.
Was das IFS & UTF-8 betrifft, so hatte ich bis jetzt noch keine Probleme mit Sonderzeichen. Also zumindest nicht mehr Probleme als es auch mit den klassischen Src-Libs ebenfalls gab.
...bei korrekter CCSID der Quelldatei und Job CCSID klappt das auch mit den varianten Zeichen. Der UTF8 macht aus dem varianten Zeichen ein invariantes und das ist dann bei anderer Job CCSID der Griff ins Klo. Ich habe es zwar nicht ausprobiert, denke aber, dass GIT keine CCSID kennt.
D*B
Das klappt automatisiert mit DB-Dateien, allerdings nicht bei IFS-Dateien. Da muss man die Codewandlung schon selber machen.
Und wenn der Compiler der AS/400 die Daten wirklich von UTF8 korrekt umwandelt, müsste man ja am Spooler sehen. Und dann hat man i.d.R. den Vorteil von UTF8 wieder verloren.
Denn die Codeanweisungen sind immer im invarianten Zeichensatz, nur Textkonstanten können im varianten Zeichensatz sein.
Also ist eine UTF8-Speicherung nur für Kommentare sinnvoll, und dann wohl eher für die nicht-1252-Welt.
Dazu kommt, wie du schon sagst, Windows kennt keine CCSID und welche CCSID die Datei beim Hochladen auf die AS/400 bekommt, entscheidet erst mal wieder die Einstellung des NetServer, die häufiger auf 1252 oder gar noch auf 850 steht.
Das Compilen habe ich jetzt hinbekommen in dem ich in jede Quelle einmal rein gegangen bin und gespeichert habe danach hat es funktioniert.
Andreas_Prouza
24-11-25, 21:03
Was steht vor diesem Fehler im Joblog?
Da muss es noch mehrere Einträge geben vom Startzeitpunkt des Build-Prozess.
Das Compilen habe ich jetzt hinbekommen in dem ich in jede Quelle einmal rein gegangen bin und gespeichert habe danach hat es funktioniert.
Das klingt danach, dass die Quelle nicht UTF-8 war und erst durch das Speichern die Source mit UTF-8 gespeichert wurde.
Ich mache folgende Steps:
1. CPYTOSTMF die Source ins IFS (mit UTF-8)
2. Source ins GIT
3. Ich klone das Projekt vom GIT auf den lokalen PC
4. Source wird von OBI auf die IBM i ins IFS übertragen
5. Source wird via CHGATR mit CCSID auf 1208 (utf-8) gesetzt
6. Source wird kompeliert mit TGTCCSID *JOB
Mit diesen Steps funktioniert das sehr gut. Hatte ich auch schon früher mit den ganzen Sonderzeichen ohne Probleme probiert.
(Eventuell gibt's probleme wenn der JOB keine korrekte CCSID hat. Also *HEX)
2 Dinge sind da ausschlaggebend:
- CHGATR mit CCSID auf 1208
- JOB keine korrekte CCSID
@Andreas das JobLog hab ich jetzt leider nicht mehr.
@Fuerchau je genau ich hatte das mit CHGATR nachträglich geändert.
Das was mich jetzt grade noch stört ist das wenn ich im IFS eine neue Source erstelle ist diese in CCSID 850 ob wohl ich im RDI eigentlich auf UTF-8 gestellt habe.
Und was auch schade ist das ich beim neu erstellen meine Templates nicht verwenden kann
Andreas_Prouza
25-11-25, 10:16
Das was mich jetzt grade noch stört ist das wenn ich im IFS eine neue Source erstelle ist diese in CCSID 850 ob wohl ich im RDI eigentlich auf UTF-8 gestellt habe.
Ich glaube das hängt von der CCSID des Ordners ab.
Ich habe aber bei mir in meinem Home-Verzeichnis 3 files ...
* .profile
* .bash_profile
* .bashrc
... mit dem Inhalt:
export PATH="/QOpenSys/pkgs/bin:$PATH"
export QIBM_CCSID=1208
Dadurch werden alle Files im UTF-8 erstellt:
<dl style="box-sizing: inherit; border: 0px; margin-right: 0px; margin-bottom: 1.5rem; margin-left: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-alternates: inherit; font-variant-position: inherit; font-variant-emoji: inherit; font-stretch: inherit; line-height: inherit; font-family: "IBM Plex Sans", system-ui, -apple-system, BlinkMacSystemFont, ".SFNSText-Regular", sans-serif; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-variation-settings: inherit; font-feature-settings: "liga"; font-size: 16px; vertical-align: baseline; color: rgb(244, 244, 244); background-color: rgb(38, 38, 38);"><dt class="dlterm" style="box-sizing: inherit; padding: 0px; border: 0px; margin: 0px; font-style: inherit; font-variant: inherit; font-weight: bold; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-variation-settings: inherit; font-feature-settings: "liga"; vertical-align: baseline;">QIBM_CCSID (CCSID for translation)</dt><dd class="dlentry" style="box-sizing: inherit; padding: 0px; border: 0px; margin: 0px 0px 0px 1.5rem; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-variation-settings: inherit; font-feature-settings: "liga"; vertical-align: baseline;">When this variable is set to a numeric value, qsh and various utilities use the value for creating files and translating data from the CCSID of the job. The default value is "0" for the default job CCSID. A value of "65535" means no translation is done.</dd></dl>
Werden die Profile bei der Anmeldung vom Client ausgeführt?
Export exportiert die Variable in die Umgebung der Verbindung.
Wie sieht das aus, wenn ich auf der IBM was ins IFS kopiere?
Gilt dann auch die CCSID des Exports?
Dies würde bedeuten, dass alle Dateien des Users im IFS grundsätzlich per UTF8 estellt würden.
Und du hast immer noch nicht meine Frage beantwortet:
Was steht in der CCSID des erstellten Moduls?
Die CCSID des Jobs oder der Quelle?
Die IBM ist bei CCSID's schon mal etwas nachlässig.