[NEWSboard IBMi Forum]

Thema: DSPFFD

Hybrid View

  1. #1
    Registriert seit
    Jan 2010
    Beiträge
    83
    evt. noch eine Idee. Bin völlig ratlos.
    Danke.

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Nach dem con_open kannst du auf der AS/400 per WRKOBJLCK User *USRPRF den QZDASOINIT-Job herausfinden, mit dem du verbunden bist.
    Anschließend führst du den Execute aus und hältst vor dem con_close an.
    Dan schau ins Joblog.
    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
    Jan 2010
    Beiträge
    83
    Hallo Herr Fuerchau,

    LIBR = "SWDTA"
    DATEI = "GSAP00"
    VAR1 = "CALL TRUMPFH.TTRFDC (" & LIBR & ", " & DATEI & ")"
    ...ist doch eigentlich korrekt.


    hier der JOBLOG:

    Job . . : QZDASOINIT Benutzer : QUSER Nummer . . . : 356457

    Job 356457/QUSER/QZDASOINIT im Subsystem QUSRWRK in QSYS am 05.10.10 um

    Druckereinheit PRT01 nicht gefunden.
    Fehler im Befehl CHGJOB für Job 356457/QUSER/QZDASOINIT.
    Druckereinheit PRT01 nicht gefunden.
    Job erfolgreich geändert; es traten jedoch Fehler auf.
    Benutzer TRUMPFH an Client 128.1.1.182 ist mit dem Server verbunden.
    Druckereinheit PRT01 nicht gefunden.
    Job erfolgreich geändert; es traten jedoch Fehler auf.
    Token SWDTA ungültig. Gültige Token: :.
    Token TRUMPFH ungültig. Gültige Token: ( INTO USING.
    Token . ungültig. Gültige Token: FOR WITH FETCH ORDER UNION EXCEPT
    OPTIMIZE.

    Nachrichten-ID . . . . : SQL0104 Bewertung . . . . . . : 30
    Nachrichtenart . . . . : Diagnose
    Sendedatum . . . . . . : 05.10.10 Sendezeit . . . . . . : 14:20:32

    Nachricht . . . : Token SWDTA ungültig. Gültige Token: :.
    Ursache . . . . : Bei Token SWDTA wurde ein Syntaxfehler entdeckt. Token
    SWDTA ist kein gültiges Token. : ist eine Teilliste gültiger Token. Diese
    Liste geht davon aus, dass die Anweisung bis zu diesem Token korrekt ist. Es
    kann eine frühere Stelle in der Anweisung fehlerhaft sein, aber bis zu
    dieser Stelle scheint die Syntax gültig zu sein.
    Fehlerbeseitigung: Einen der folgenden Schritte durchführen und die
    Anforderung wiederholen:
    - SQL-Anweisung im Bereich des Token SWDTA überprüfen. Anweisung
    korrigieren. Der Fehler kann ein fehlendes Komma oder Anführungszeichen
    sein, er kann in einem falsch geschriebenen Wort oder in der Anordnung der
    Klauseln begründet sein.

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Bei SQL musst du Zeichenkonstanten in einfache Hochkomma setzen und entsprechend der benötigten Länge übergeben (also 10-Stellig!).

    Ansonsten erkennt SQL hier nicht einen Programm-CALL und meldet ggf. halt noch andere Fehler.

    Wenn der CALL so nicht akzeptiert wird, musst du dies doch in einen QCMDEXC-Aufruf verpacken (diesen AUfruf hattest du ja schon mal).
    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

  5. #5
    Registriert seit
    Jan 2010
    Beiträge
    83
    ...habe das jetzt so getestet, bekomme aber noch einen Fehler im Joblog:

    Dim DATEI, LIBR, VAR1, VAR2 As String

    DATEI = UCase(Left(txt_datei.Text & Space(10), 10))
    LIBR = UCase(Left(txt_libr.Text & Space(10), 10))
    Dim cnn As ADODB.Connection
    Dim con_str As String
    Dim CallCmd As New ADODB.Command
    OnErrorResumeNext
    cnn = New ADODB.Connection
    VAR1 = "CALL TRUMPFH.TTRFDC(" & LIBR & ", " & DATEI & ")"
    VAR2 = "CALL QSYS.QCMDEXC ('" & VAR1 & "', " & Format(Len(VAR1), "00000000000.00000") & ")"
    adocon.con_open()

    joblog:
    Druckereinheit PRT01 nicht gefunden.
    Fehler im Befehl CHGJOB für Job 366164/QUSER/QZDASOINIT.
    Druckereinheit PRT01 nicht gefunden.
    Job erfolgreich geändert; es traten jedoch Fehler auf.
    Benutzer TRUMPFH an Client 128.1.1.182 ist mit dem Server verbunden.
    Druckereinheit PRT01 nicht gefunden.
    Job erfolgreich geändert; es traten jedoch Fehler auf.
    Befehlslänge ungültig. --> siehe Details
    Im Befehl ist ein Fehler aufgetreten.
    Fehler von Auslöserprogramm oder externer Routine erkannt.

    details:
    Nachrichten-ID . . . . : CPD0005 Bewertung . . . . . . : 30
    Nachrichtenart . . . . : Diagnose
    Sendedatum . . . . . . : 05.10.10 Sendezeit . . . . . . : 16:09:44

    Nachricht . . . : Befehlslänge ungültig.
    Ursache . . . . : Im zweiten Parameter, der an QCMDEXC oder QCMDCHK gesendet
    wurde, wurde eine ungültige Länge angegeben.
    Fehlerbeseitigung: Befehlslänge so ändern, dass sie von 1-32702 Zeichen
    reicht.

    Was muß ich denn im zweiten Parameter angeben?

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Eine "0" zu viel, ich zähle 11 statt 10.

    Desweiteren ist der Call für QCMDEXC wieder in CALL TRUMPFH/TTRFDC zu ändern.

    Wenn du nun doch QCMDEXC aufrufst, kannst du dir den SPACE und UCASE wieder sparen, da dies ja nun wieder vom CALL-CMD korrigiert wird .
    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

  7. #7
    Registriert seit
    Jan 2010
    Beiträge
    83
    ...jetzt sind die Fehler zumindest schon reduziert:

    Dim DATEI, LIBR, VAR1, VAR2 AsString
    DATEI = txt_datei.Text
    LIBR = txt_libr.Text
    VAR1 = "CALL TRUMPFH/TTRFDC(" & LIBR & " " & DATEI & ")"
    VAR2 = "CALL QSYS.QCMDEXC ('" & VAR1 & "', " & Format(Len(VAR1), "0000000000.00000") & ")"
    adocon.con_open()

    Joblog:

    Nachrichten-ID . . . . : CPD0005 Bewertung . . . . . . : 30
    Nachrichtenart . . . . : Diagnose
    Sendedatum . . . . . . : 06.10.10 Sendezeit . . . . . . : 08:02:18

    Nachricht . . . : Befehlslänge ungültig.
    Ursache . . . . : Im zweiten Parameter, der an QCMDEXC oder QCMDCHK gesendet
    wurde, wurde eine ungültige Länge angegeben.
    Fehlerbeseitigung: Befehlslänge so ändern, dass sie von 1-32702 Zeichen reicht.

  8. #8
    Registriert seit
    Jan 2010
    Beiträge
    83
    ...immer wieder derselbe Fehler: Befehlslänge ungültig. Ich weiß nicht, was ich noch ändern soll...

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Schau dir das Ergebnis von Var2 an.
    Format bereitet mit dem Dezimalkomma auf, was allerdings durch SQL (Abhängig von Verbindungseinstellungen) ggf. nicht erkannt wird, so dass an Stelle von 2 Parametern 3 übergeben werden und der 2. nur Packed(10,0) ist.

    Baue noch einen Replace drumherum:

    replace(Format(...), ",", ".")
    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

  10. #10
    Registriert seit
    Jan 2010
    Beiträge
    83
    juchhu, das hat funktioniert.
    Tausend Dank.

    So ist der Aufruf jetzt:

    VAR2 = "CALL QSYS.QCMDEXC('" & VAR1 & "', " & Replace(Format(Len(VAR1), "0000000000.00000"), ",", ".") & ")"

    Danke.
    Gruss
    Tobias

  11. #11
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... und, was kriegst du jetzt raus, was nicht schon in der QSYS2.SYSCOLUMNS drinsteht?

    D*B

    Zitat Zitat von padawan Beitrag anzeigen
    juchhu, das hat funktioniert.
    Tausend Dank.

    So ist der Aufruf jetzt:

    VAR2 = "CALL QSYS.QCMDEXC('" & VAR1 & "', " & Replace(Format(Len(VAR1), "0000000000.00000"), ",", ".") & ")"

    Danke.
    Gruss
    Tobias
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Informationen zu EINER Teildatei auslesen
    By Tom74 in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 22-12-07, 11:22
  2. fehlende DDS Sourcen: disassembler?
    By emax in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 06-10-06, 11:01
  3. DDS Feldname ermitteln
    By pwrdwnsys in forum NEWSboard Java
    Antworten: 18
    Letzter Beitrag: 07-09-06, 09:39
  4. Bezeichnung des Satzformates
    By flytokiwi in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 13-03-06, 11:22
  5. Cursor gezielt auf Fehlerfeld setzen ohne Indikatoren im DDS
    By coolie in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 01-06-04, 20:29

Berechtigungen

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