[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Hybrid View

  1. #1
    Registriert seit
    Dec 2009
    Beiträge
    314

    Webservice über PHP aus einer COBOL Anwendung

    Hallo,

    vergangenen Freitag wurde folgende Aufgabenstellung an mich herangetragen:
    Aus einer COBOL-Anwendung soll ein PHP mit n Parametern aufgerufen werden, das sich dann mit diesen Parametern mit einem WEB-Service verbindet und von diesem eine Antwort erhält, welche wieder in das COBOL-PGM muss.

    Habe keine Erfahrung mit PHP und soll das asap lösen können. Für jeden Denkanstoss bzw. Links zu Literatur oder einfaches Beispiel wäre ich dankbar.
    LG
    Andreas
    Ein AS/400 Dinosaurier since 1989

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Der Aufgabensteller gehört erschlagen .

    PHP ist eine Scriptsprache, die auf einem Web-Server läuft.
    Du müsstest also per Socket-API (und das ist schon nicht einfach) einen Web-Service aufrufen der das PHP-Script startet, das wiederum einen Web-Service aufruft und dir anschließend das Ergebnis zurückliefert.
    Da wäre es gleich besser, per Socket den Web-Service direkt abzufragen.

    Alternativ könnte ein vorgestartetes PHP-Script (und da weiß ich nicht, ob das überhaupt geht) auf deinem WEB-Server (auf der AS/400) auf einer DTAQ lauern, von deinem COBOL per QSNDDTAQ den Auftrag erhalten und über eine 2. DTAQ (per QRCVDTAQ) das Ergebnis zurückliefern.

    Hierbei ist zu beachten, dass ggf. ja mehrere parallele Abfragen laufen könnten und somit ein Keyed-DTAQ mit z.B. JobNr. als Key zu verwenden wäre.

    Ein Direktaufruf von PHP ohne eine Serverinstanz (z.B. Zend) wird wohl nicht möglich sein.
    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
    Dec 2009
    Beiträge
    314
    Hallo,
    danke für die Antwort. Zend Server wurde bei uns auf Anordnung meiner Chefs bereits installiert und daher würde ich gerne einen Weg finden, wie ich das direkt über die AS400 handeln kann.
    Andreas
    Ein AS/400 Dinosaurier since 1989

  4. #4
    Registriert seit
    Jan 2003
    Beiträge
    759
    Weitere Alternative: das Cobol-Programm ruft ein RPGLE-Programm auf welches den Web-Service-Request ausführt - nativ, ohne PHP, ohne Zend-Server...

    HTTP API
    http://www.scottklement.com/presenta...%20HTTPAPI.pdf

  5. #5
    Registriert seit
    Dec 2009
    Beiträge
    314
    Zitat Zitat von RobertMack Beitrag anzeigen
    Weitere Alternative: das Cobol-Programm ruft ein RPGLE-Programm auf welches den Web-Service-Request ausführt - nativ, ohne PHP, ohne Zend-Server...

    HTTP API
    http://www.scottklement.com/presenta...%20HTTPAPI.pdf
    Hallo,
    das ist für mich leider der letzte Ausweg, da ich der Dinosaurierer auf der AS400 bei uns bin und meine Chefs aus der sogenannten neuen Welt stammen. Daher bevorzugen Sie bei uns die PHP Geschichte, auch wenn keiner von uns Erfahrung damit hat
    Andreas
    Ein AS/400 Dinosaurier since 1989

  6. #6
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Ein PHP-Script kannst du ganz einfach über die QSH aufrufen.

    Code:
    /usr/local/Zend/Core/bin/php -f /home/mein_script.php
    Wenn du Parameter an das Script übergeben möchtest schaut das dann so aus:
    Code:
    /usr/local/Zend/Core/bin/php -f /home/mein_script.php "erster Wert" "das ist jetzt der zweite Wert"
    In PHP sind dann diese Parameter in der globalen Variable (Array) $argv.

    Einen "Returnvalue" gibt es jedoch nicht. Da musst du dann schaun, wie weiter arbeitest. Du könntest z.B. in PHP ein Cobol-Programm mit Parameter aufrufen, dass die Verarbeitung weiter führt.

  7. #7
    Registriert seit
    Dec 2009
    Beiträge
    314
    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen
    Ein PHP-Script kannst du ganz einfach über die QSH aufrufen.

    Code:
    /usr/local/Zend/Core/bin/php -f /home/mein_script.php
    Wenn du Parameter an das Script übergeben möchtest schaut das dann so aus:
    Code:
    /usr/local/Zend/Core/bin/php -f /home/mein_script.php "erster Wert" "das ist jetzt der zweite Wert"
    In PHP sind dann diese Parameter in der globalen Variable (Array) $argv.

    Einen "Returnvalue" gibt es jedoch nicht. Da musst du dann schaun, wie weiter arbeitest. Du könntest z.B. in PHP ein Cobol-Programm mit Parameter aufrufen, dass die Verarbeitung weiter führt.
    Das ist dann mein größeres Problem, da ich das ganze aus einer Onlineanwendung aufrufen muss(Vertragsanlage) und ich brauche den Returnvalue für die weiter Vorgehensweise im Online-PGM für Abbruch oder weitermachen
    Andreas
    Ein AS/400 Dinosaurier since 1989

  8. #8
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Zitat Zitat von nico1964 Beitrag anzeigen
    Das ist dann mein größeres Problem, da ich das ganze aus einer Onlineanwendung aufrufen muss(Vertragsanlage) und ich brauche den Returnvalue für die weiter Vorgehensweise im Online-PGM für Abbruch oder weitermachen
    Das geht ja um viele Ecken. Wie sollen denn die genauen Aufrufwege sein?

  9. #9
    Registriert seit
    Dec 2009
    Beiträge
    314
    Zitat Zitat von Pikachu Beitrag anzeigen
    Das geht ja um viele Ecken. Wie sollen denn die genauen Aufrufwege sein?
    1. COBOL -PGM Vertragsanlage online
    2. im CHECK des DSPF Aufruf des PHP mit n Parametern
    3. PHP verbindet sich mit WebService und erhält eine Antwort
    4. Antwort zurück in COBOL anwendung
    5. Cobol weitermachen oder nicht....
    Andreas
    Ein AS/400 Dinosaurier since 1989

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Dann hast du ja jetzt alles was du brauchst, allerdings so ganz ohne CLP wird es wohl nicht gehen (weil das einfacher ist).
    Du kannst natürlich alles per
    77 MyCmd pic x(1000).
    77 MyCmdLen pic s9(10)V9(5) comp-3 value 1000.
    CALL "QCMDEXC" using MyCmd MyCmdLen

    In MyCmd musst du dann die Kommandos per "String ... " zusammenschustern.

    string "OVRDBF ..." into MyCmd
    call "QCMDEXC" ...
    string "/usr/... """ delimited by size
    Parm1 delimitd by space
    """ """ delimited by size
    Parm2 delimitd by space
    """" delimited by size
    into MyCmd
    call "QCMDEXC" ...

    open Input MyStdout
    ...
    close MyStdout
    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

  11. #11
    Registriert seit
    Dec 2009
    Beiträge
    314
    @fuerchau
    Danke, dass habe ich mir auch ungefähr so vorgestellt. jetzt brauch ich dann nur das php-basteln und dann sind wieder alle glücklich bei uns
    Andreas
    Ein AS/400 Dinosaurier since 1989

  12. #12
    Registriert seit
    Jan 2011
    Beiträge
    81
    Zitat Zitat von nico1964 Beitrag anzeigen
    3. PHP verbindet sich mit WebService und erhält eine Antwort
    PHP im WEB ist doch eine aktive Anwendung, wie soll die denn antworten. oder ist es nur eine Abfrage? wenn -JA- dann solltest Du PHP vergessen. Das geht einfacher mit einem COBOL oder RPG-Programm.

Similar Threads

  1. v4 of PHP Toolkit can be downloaded from AURA
    By Hellena Smejda in forum Archiv NEWSblibs
    Antworten: 0
    Letzter Beitrag: 22-04-11, 05:20
  2. Dekleration Cobol <-> RPG
    By Xanas in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 12-01-07, 07:32
  3. Programmbibliothek in einem Cobol oder CL Programm ermitteln
    By schatte in forum NEWSboard Programmierung
    Antworten: 19
    Letzter Beitrag: 10-01-07, 11:32
  4. Cobol <> RPGLE
    By Xanas in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 13-12-06, 13:38
  5. Cobol
    By Uli Müller in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 09-11-06, 09:21

Berechtigungen

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