PDA

View Full Version : DSPPGM: Wozu ist diese Einstellung "ID des codierten Zeichensatzes (CCSID)" ???



edv90020
08-09-09, 16:39
Hallo zusammen,

erstaml muss ich an ALLE ein Dank aussprechen die hier ihre Beiträge rein stellen!
Ich find' euch super, weiter so! :D

Hat jemand eine Ahnung was diese Einstellung Steuer bzw. wie man ihn die verändern kann ?

Programminformationen anzeigen
Anzeige 1 von 7
Programm . . . . . . . : TRDAE1RN Bibliothek . . . . . . : GETLG
Eigner . . . . . . . . : YSYS
Programmattribut . . . : RPGLE
Detail . . . . . . . . : *BASIC


Informationen zur Programmerstellung:
Programmerstellungsdatum/-zeit . . . . . . . . : 08.09.09 17:18:52
Programmart . . . . . . . . . . . . . . . . . : ILE
Modul der Programmeingangsprozedur . . . . . . : TRDAE1RN
Bibliothek . . . . . . . . . . . . . . . . . : QTEMP
Attribut der Aktivierungsgruppe . . . . . . . : GCACTGRP
Gemeinsam benutzte Aktivierungsgruppe . . . . : *NO
Benutzerprofil . . . . . . . . . . . . . . . . : *USER
Übernommene Berechtigung verwenden . . . . . . : *YES
ID des codierten Zeichensatzes (CCSID) . . . . : 65535
Anzahl der Module . . . . . . . . . . . . . . : 1 Ich kann diese Einstellung nicht nachvollziehen. Im Jobprotokoll (CRTBNDRPG) steht die CCSID auf "273"!

Spool-Datei anzeigen
Datei . . . . . : TRDAE1RN
Steuerung . . . .
Suchen . . . . .
*...+....1....+....2....+....3....+....4....+....5 ....+....6....+....7....+.
Pflegen Modell Edit record(1 screen)
5722WDS V5R4M0 060210 RN IBM ILE RPG GETLG/TRDAE1RN
Befehl . . . . . . . . . . . . . : CRTBNDRPG
Ausgegeben von . . . . . . . . . : YNIESZPO
Programm . . . . . . . . . . . . : TRDAE1RN
Bibliothek . . . . . . . . . . . : GETLG
Text 'Beschreibung' . . . . . . : *SRCMBRTXT
Quellenteildatei . . . . . . . . : TRDAE1RN
Quellendatei . . . . . . . . . . : QRPGLESRCN
Bibliothek . . . . . . . . . . . : GETLG
CCSID . . . . . . . . . . . . . : 273
Text 'Beschreibung' . . . . . . : TRDAE1R Test

Fuerchau
08-09-09, 17:12
Die CCSID eines Programmes ist zur Laufzeit vollkommen unbedeutend!

Ein OPM-Programm hat keine CCSID, beim ILE-Programm ist die CCSID auf Modulebene zu sehen und deutet nur auf die CCSID der Quelle hin.

Wenn ein OPM-Programm erstellt wird, wird die CCSID der Quelle in die CCSID des Job's umgewandelt und damit dann der Programmcode erstellt.
Alle Textkonstanten des Programmes behalten dann zur Laufzeit ihren Hexwert. Das ist insbesonders bei "varianten" Zeichen wie "!", "#" u.ä. problematisch wenn die CCSID der PF später eine andere als die Quelle ist.

Das Selbe gilt auch für ILE-Programme, nur sieht man hier, für welche CCSID das Modul entwickelt wurde.
Dies ist aber auch nicht relevant, wenn keine varianten Zeichen in der Quelle vorhanden sind.

Laut RPGLE-Handbuch wandelt der Compiler alle Copy-Strecken / Include's in die CCSID der Hauptquelle um bevor die Umwandlung in die Job-CCSID stattfindet.

Dies ist gegenüber OPM nur bedingt von Vorteil, da ja zur Laufzeit später keine Codewandlung stattfindet.

edv90020
09-09-09, 08:12
Alle Textkonstanten des Programmes behalten dann zur Laufzeit ihren Hexwert. Das ist insbesonders bei "varianten" Zeichen wie "!", "#" u.ä. problematisch wenn die CCSID der PF später eine andere als die Quelle ist.Das ist genau das Problem was ich derzeit habe (unter anderem).
Kann man die Programm CCSID überhaupt beeinflussen ?
Meine ILE Source-PF ist auf 273 eingestellt und auch die JOB CCSID ist auf 273 eingestellt und trotzdem wird mein ILE-Programm mit der CCSID 65535 erstellt.

Fuerchau
09-09-09, 10:07
Ich sagte doch, das Programm hat immer CCSID 65535.
Druck mal nach DSPPGM solange Enter, bis die Modulliste kommt. Mit 5 siehst du siehst die CCSID.

Wichtig ist, welche CCSID hat den Job und die DB zur Laufzeit.

edv90020
09-09-09, 10:59
Ok, mit der Aussage kann ich was etwas anfangen.

Vielen Dank.