[NEWSboard IBMi Forum]

Thema: RNF0733

  1. #1
    Registriert seit
    Apr 2020
    Beiträge
    16

    RNF0733

    Moin,
    (von https://www.rpgpgm.com/2017/04/chang...-listings.html)
    The process to create an object from a SQLRPGLE source member is a multi-step process:


    1. The syntax of the SQL within the source member is checked to ensure it is valid.
    2. A copy of the source member being compiled is moved to a source file QSQLPRE in QTEMP.
    3. 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.
    4. 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.

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    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).
    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
    Mar 2002
    Beiträge
    5.286
    ... 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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  4. #4
    Registriert seit
    Apr 2020
    Beiträge
    16
    Zitat Zitat von Fuerchau Beitrag anzeigen
    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.

  5. #5
    Registriert seit
    Apr 2020
    Beiträge
    16
    gelöscht ** gelöscht ** gelöscht

  6. #6
    Registriert seit
    Apr 2020
    Beiträge
    16
    Zitat Zitat von BenderD Beitrag anzeigen
    ... 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.

  7. #7
    Registriert seit
    Apr 2020
    Beiträge
    16
    Zitat Zitat von BenderD Beitrag anzeigen
    ... 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

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    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.
    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

  9. #9
    Registriert seit
    Apr 2020
    Beiträge
    16
    Zitat Zitat von Fuerchau Beitrag anzeigen
    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.

  10. #10
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    ... 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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  11. #11
    Registriert seit
    Apr 2020
    Beiträge
    16
    Zitat Zitat von BenderD Beitrag anzeigen
    ... 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
    Ja is blöd, aber der komplette Build passed jetzt wieder.

    Das sind reservierte variablen:
    • $< = dateiname mit endung
    • $@ = dateiname ohne endung

Tags for this Thread

Berechtigungen

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