[NEWSboard IBMi Forum]
Seite 1 von 3 1 2 ... Letzte
  1. #1
    Registriert seit
    May 2016
    Beiträge
    18

    Question Perl CGI (auf OS/400 V4R5M0)

    Erst ein mal ein freundliches "Neuling" Hallo in die Runde *ALL,

    auf meiner guten alten 9401/150 mit OS/400 V4R5M0, hab ich das Perl gemäß CPAN installiert und ebenfalls als CGI eingerichtet.
    Soweit ist erst einmal alles in Ordnung.
    Doch das Problem ist die Datenbankanbindung!

    Ich kann aus meinen Tabellen außschließlich Felder mit Feldinhalt NUMERIC auslesen, bzw. bekomme aus diesen Feldern die Werte zurück.
    Alles was CHAR ist, wird beim verarbeiten "verschluckt".
    Nun bin ich auf die Idee gekommen, dass es am CCSID liegen könnte und hab eigens nochmal eine neue Tabelle erzeugt, welche auch den aktuellen System CCSID (37) besitzt.
    Aber es wird nicht besser.
    Das Besondere allerdings ist, dass ich mittels Perl-CGI in diese Tabelle schreiben kann und die Daten auch vorhanden sind. Ich kanns mit STRSQL prüfen und auch via NetData abrufen. Nur das Perl selbst kann mir diese Feldinhalte nicht darstellen, obwohl die while Schleife alle Zyklen durchläuft, so viele Zeilen wie dei Tabelle besitzt.
    Selbst beim Test auf der QSH (perl /../db1.pl) habe ich das gleiche Ergebnis.
    Die Schleife läuft alle Zeilen der Tabelle durch, aber angezeigt bekomme ich nur die Numerischen Felder.

    Was, außer auf mein geliebtes Perl zu verzichten, kann ich noch tun und beachten?
    Gibt es ein besonders SQL Statement, eine Konfiguration die ich noch nicht gelesen habe?

    Ich danke schon mal im voraus,
    Thomas

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Nur mal so eine Idee: Versuch doch mal die Alpha-Felder statt mit CHAR mit VARCHAR zu definieren. Wie sieht es dann aus?
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  3. #3
    Registriert seit
    May 2016
    Beiträge
    18
    Das ist eine ganz klassisch definierte Tabelle (via PDM). Ich hab dort in der Datendefinitionsbeschreibung nur A für alphabetische Zeichen zur Verfügung oder S für die Ziffernwerte.

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Auch in DDS kann man alphanumerische Felder mit variabler Länge definieren, durch Schlüssel-Wort VARLEN.
    Gib sicherheitshalber noch die Feld-Länge bei VARLEN(Länge) an, damit alle Informationen auch wirklich in der Tabelle gespeichert werden.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Bei Zeichenfeldern brauchst du in der DDS gar nichts anzugeben, lass das "A" mal weg.
    Ansonsten schau mal hier:
    https://www.google.de/url?sa=t&rct=j...3lNbTg&cad=rja
    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

  6. #6
    Registriert seit
    May 2016
    Beiträge
    18
    Guten Abend und Danke für die schnellen Antworten.
    Ich hab mich nach der PPT Folie gerichtet, die DDS Beschreibung geändert und das "A" weg gelassen - leider hilft alles nichts!
    Es werden wieder nur die numerischen Felder zurück geliefert aber nicht die Alphabetischen bzw. Alphanumerischen.
    VARCHAR als Schlüselwort kennt meine Beschreibung noch nicht.

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Zitat Zitat von tommi_011 Beitrag anzeigen
    VARCHAR als Schlüselwort kennt meine Beschreibung noch nicht.
    Ich hatte ja auch VARLEN und nicht VARCHAR gesagt. VARCHAR ist der SQL-Datentyp.
    A in Verbindung mit VARLEN ist die DDS-Beschreibung für Felder mit variabler Länge

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  8. #8
    Registriert seit
    May 2016
    Beiträge
    18
    Oh, sorry richtig! Da hab ich wohl was falsch gelesen. Ich werde es mal nachher probieren.

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Für SQL ist der Typ CHAR und VARCHAR nicht so unterschiedlich. Ich sehe da eher immer noch ein CCSID-Problem.
    Bist du sicher, dass die Zeichendaten tatsächlich nicht zurückkommen?
    Prüfe mal die Länge des Inhaltes sowie den Hex-Wert.
    Als Verbindung wird von Perl, glaube ich, ODBC verwendet.
    Somit kannst du z.B. via Excel o.ä. auch per ODBC vom PC Daten abrufen.
    Wenn hier die Daten korrekt gelesen werden können, ist das irgendwo ein Problem in PHP.
    Ggf. passt die Perl-Version nicht mehr zum V4R5.

    Vielleicht ist DBI besser als CGI ?
    http://www.tutorialspoint.com/perl/perl_database.htm
    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
    May 2016
    Beiträge
    18
    Ich hab folgende Zwischenstand, aber noch nichts verbessertes:

    "VARLEN" hat keinen Einfluss genommen.
    Ich hab aber CCSID(500) und CCSID(65535) auf zwei Testfeldern im DDS definiert. Aber auch das hat noch nicht wirklich was gebracht.

    Das Perl selbst spricht die Datenbank nicht mit ODBC an (nicht vorhanden) sondern mit DBI:B2, also dem eigentlichen Treiber für DB2/400

    Bei der Auswertung hab ich fetchrow_hashref (wie im Powerpointbeispiel) eingerichtet und mal $data->${DATENFELD} auswerten lassen.
    Aufgrund des "$" Zeichens bekomme ich einen Hexadezimalenwert angezeigt (Hashwert?).
    Der ist bei allen 3 Felder gleich, auch bei dem numerischen, der mir einen Wert (0x1df710) anzeigt.

    Somit bin ich der Meinung das die Daten an sich ausgelesen werden. Da scheint eher Perl das Problem zu haben mir die Zeichenfelder anzuzeigen?

  11. #11
    Registriert seit
    Oct 2013
    Beiträge
    171
    Super, genau das Uninteressante, das was funktioniert, sagst Du uns. :-)
    Und wenn Du in ein Textfeld Deiner Datei z.B. mal "Test" hineinschreibst, kriegst Du dann x'E385A2A3' (worauf ich tippe) oder x'54657374' oder etwas ganz Anderes?

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Alle Werte gleich deuten schon auf die Default-Funktion Hash für ein Objekt.
    Vielleicht hilft dir ja diese Seite weiter:
    http://search.cpan.org/dist/DBD-DB2/DB2.pod
    Kannst du nicht Perl auf dem PC ausführen?
    Ggf. kann man dann dort besser debuggen als im Nebel stochern.
    Denn wo die DB im Endeffekt ist ist doch egal, Hauptsache sie ist erreichbar.
    Welche Art von Schnittstelle verwendet wird lässt sich relativ einfach feststellen:
    Bau eine "Sleep"-Funktion im Script ein während die Verbindung geöffent ist.
    Auf der AS/400 kannst du dann per
    WRKOBJLCK CONNECTUSER *USRPRF
    den Verbindungsjob herausfinden.
    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

Similar Threads

  1. Lizenzen OS/400 V4R5M0 Prozessorgruppe P05
    By Frank Hildebrandt in forum NEWSboard Server & Hardware Markt
    Antworten: 2
    Letzter Beitrag: 02-05-03, 16:32
  2. MSAccess und V4R5M0 (CA Express)
    By Matthias.Hayn in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 07-03-02, 14:17
  3. MSAccess und V4R5M0 (CA Express)
    By Matthias.Hayn in forum NEWSboard Windows
    Antworten: 1
    Letzter Beitrag: 07-03-02, 13:13
  4. releasewechsel von v3r6m0 auf v4r5m0
    By delphix in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 18-02-02, 13:48
  5. Trigger 5.1, TGTRLS(V4R5M0)
    By Robi in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 28-01-02, 09:35

Tags for this Thread

Berechtigungen

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