PDA

View Full Version : RNF0733



Seiten : [1] 2

x00
27-08-20, 10:22
Moin,
(von https://www.rpgpgm.com/2017/04/change-to-sqlrpgle-compile-listings.html)
The process to create an object from a SQLRPGLE source member is a multi-step process:



The syntax of the SQL within the source member is checked to ensure it is valid.
A copy of the source member being compiled is moved to a source file QSQLPRE in QTEMP.
The SQL statements in the source member are converted to calls and the new source member is placed in the source file QSQLTEMP1 in QTEMP, as a RPGLE source type.
It is this source member that is compiled.


Wenn Schritt 2 des Prozesses fehlschlägt wird RNF0733 geworfen.Gibt es einen weg das zu vermeiden?



Ein interaktiver Job ist keine Option
Ich benötige rpgPpOpt(*lvl2) entsprechend bin ich an crtSqlRpgI gebunden.

Fuerchau
27-08-20, 11:01
Die Breite der SRCPF wird bestimmt durch die Breite der umzuwandelnden Quelle.
Ist eine Copy/Include ggf. schon breiter, würde der Code abgeschnitten und das Programm sowieso nicht umgewandelt.
Prüfe mal deine SRCPF's, wie unterschiedlich denn so die Satzlängen sind und passe diese an (was leider nur mit einem neuen CRTSRCPF und Copy aller Member geht).

BenderD
27-08-20, 11:44
... ich würde erst mal versuchen im Parameter TOSRCFILE was anzugeben (wobei das wahrscheinlich nicht funzt, wenn ein Trottel mehr als 112 Recordlänge verwenden will).

D*B

x00
27-08-20, 12:08
Die Breite der SRCPF wird bestimmt durch die Breite der umzuwandelnden Quelle.
Ist eine Copy/Include ggf. schon breiter, würde der Code abgeschnitten und das Programm sowieso nicht umgewandelt.
Prüfe mal deine SRCPF's, wie unterschiedlich denn so die Satzlängen sind und passe diese an (was leider nur mit einem neuen CRTSRCPF und Copy aller Member geht).

Wir sind von sourcefiles auf Streamfiles im IFS umgestiegen. :(

x00
27-08-20, 12:15
gelöscht ** gelöscht ** gelöscht

x00
27-08-20, 12:21
... ich würde erst mal versuchen im Parameter TOSRCFILE was anzugeben (wobei das wahrscheinlich nicht funzt, wenn ein Trottel mehr als 112 Recordlänge verwenden will).

D*B


Nein, leider noch der selbe Fehler.

x00
27-08-20, 12:23
... ich würde erst mal versuchen im Parameter TOSRCFILE was anzugeben (wobei das wahrscheinlich nicht funzt, wenn ein Trottel mehr als 112 Recordlänge verwenden will).

D*B


Nein, leider noch der selbe Fehler

Fuerchau
27-08-20, 13:06
Ich glaube im Falle von IFS kann der Precompiler die Satzlänge nicht ermitteln (es gibt je keine) und legt die SRCPF mit 112 an. Dies kann man ja im Dialog mal probieren und sich die QTEMP daraufhin ansehen.
In diesem Fall musst du dann eine TOSRCFILE angeben, die nicht in der QTEMP liegt und bereits existiert.
Hier muss man dann nur darauf achten, dass nicht gerade 2 Entwickler dasselbe Programm wandeln.

Beim IFS ist leider das Problem, dass es keine Breitenbeschränkung gibt.
Ob der Precompiler da ein intelligentes Umbrechen macht bezweifle ich.

x00
27-08-20, 13:55
Ich glaube im Falle von IFS kann der Precompiler die Satzlänge nicht ermitteln (es gibt je keine) und legt die SRCPF mit 112 an. Dies kann man ja im Dialog mal probieren und sich die QTEMP daraufhin ansehen.
In diesem Fall musst du dann eine TOSRCFILE angeben, die nicht in der QTEMP liegt und bereits existiert.
Hier muss man dann nur darauf achten, dass nicht gerade 2 Entwickler dasselbe Programm wandeln.

ich habe mein Makefile so angepasst das folgende Befehle ausgeführt werden bevor kompiliert wird:

system "dltObj $(BIN_LIB)/compile objType(*FILE)"
system "crtSrcPf $(BIN_LIB)/compile rcdLen(250)"
system "cpyFrmStmF fromStmF('$<') toMbr('/QSYS.LIB/$(BIN_LIB).LIB/COMPILE.FILE/$@.MBR')"
system -i "CHGATR OBJ('$<') ATR(*CCSID) VALUE($(SOURCE_CCSID))"

das hat mein Problem gelöst. Vielen dank für die Antworten.

BenderD
27-08-20, 14:14
... der Haken daran ist, dass dann im erstellten Objekt ein temp. file als Quelle vermerkt wird, was unschön ist. Besser wäre das tempfile beim CRTSQLRPGI im Parameter TOSRCFILE anzugeben. Überdies würde ich raten @, $, § und diese Scherzartikel generell nicht zu verwenden, weder in Objektnamen, noch in Variablennamen, die sind für unterschiedliche CCSIDs nicht invariant.

D*B