[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Apr 2005
    Beiträge
    385

    Wie am besten lösen...

    Hallo zusammen,

    als junger RPGler (34 ) habe ich mich doch sehr an die QTEMP gewöhnt, einfach herrlich da Arbeitsdateien reinzustelen und jeder JOB hat seinen eigenen Bereich ohne das ein anderer stören würde....

    Unter JAVA gibt es ja die QTEMP für solche zwecke nicht mehr, da die JAVA-Anwendung ein anderer Job ist, als die DB-Connection.
    Somit habe ich das Problem, das ich zwar per CREATE TABLE oder CRTDUPOBJ zwar eine Tabelle in die QTEMP stellen kann, aber der jeweils andere JOB nicht darauf zugreifen kann.

    Wie habt Ihr dieses Problem gelöst.

  2. #2
    Registriert seit
    Sep 2004
    Beiträge
    136
    Ich weis ja nicht welche Art von Java-Anwendung du verwendest, wir haben eine Java Webanwendung und wenn ich da wirklich temporäre Daten in einer Tabelle ablegen müsste, würde ich wahrscheinlich eine Tabelle generieren mit einer Spalte in der die SESSIONID mit geführt würde.

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.206
    Auch für SQL gilt das selbe.
    Du kannst dir in QTEMP auch temporäre Tabellen anlegen, solange du mit SQL darauf zugreifst.
    SQL läuft in einem QZDASOINIT-Job.
    Wenn du per Java auch AS/400-Programme aufrufst gibt es hier 2 Methoden:
    a) per AS400-Programmobject
    b) als SQL-Prozedur
    Bei a) läuft dies allerdings in einem anderen Service-Job, bei b) läuft es im selben QZDASOINIT-Job.

    Das Hauptproblem ist aber, dass du mit Java (oder .NET) in vielen Fällen "offline" arbeitest.
    Also
    - Open Connection
    - mach was mit SQL
    - Close Connection
    Ist der Connection-Pool aktiviert, bleibt die Verbindung zwar offen, aber die Garantie dass du den selben QZDASOINIT-Job wieder erwischst kann dir keiner geben.

    Temporäre Tabellen können also nur kurzfristig (innerhalb einer Aufgabe) verwendet werden.

    Sitzungsspezifische Tabellen können das zwar lösen, aber hier benötigst du auf jeden Fall "Aufräumaktionen", die garantiert nicht mehr benötigte Tabellen killen.
    Es reicht da nicht in den Destruktoren aufzuräumen schließlich ist keine Software so perfekt dass sie nicht mal unmotiviert abstürzt oder gekillt wird.

    Ggf. hilft halt ein Redesign der Anwendung ob temporäre Tabellen nicht mit anderen SQL's oder Methoden (Speichertabellen, Listen u.v.m.) abgelöst werden können.
    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

  4. #4
    Registriert seit
    Apr 2005
    Beiträge
    385
    Das Proble was ich habe ist, das ein ein kleines Progrämmchen zur Auswertung in JAVA verwirklichen will. Die RPG Version ruft zur Datensammlung ein Programm auf, welches in die Arbeitsdatei in die QTEMP schreibt und diese dann nur anzeigt.
    Quasi JAVA ne JTABLE aufbauen, aber Datensammler wollte ich das selbe Programm aufrufen --> ISt ja schon da..
    Allerdings komme ich in die Problematik QTEMP AS400Call und QZDAOINIT....

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.206
    An Stelle des AS400Call definiere eine SQL-Prozedur die das RPG dann aufruft.
    Per SQL "call myproc (p1, p2, ...pn)" kannst du das Programm dann aufrufen und das Ergebnis aus der QTEMP lesen.
    Du kannst allerdings jedes Programm auch ohne Prozedur aufrufen, dabei ist jeder Parameter in genau der Form zu übergeben wie es das Programm erwartet, also:

    call myPgm ('XXXX', 12345.12, '123456', ...)

    Der erste Parameter ist vom Typ char(4), der 2. vom Typ DEC(7, 2), der 3. entweder char(6) oder Numeric(n, m).
    Bei Strukturen als Parameter bist du allerdings verloren, dann benötigst du einen Wrapper der einzelne Parameter erwartet und diese dann in einer Struktur weiterreicht.
    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
    Mar 2002
    Beiträge
    5.286
    ... das ist kein QTEMP Proble, das wird so eh' nix!!!
    Anzeige einer JTable kann nicht aus 5250 aufgerufen werden => sinnvolle Synchronisation geht so nicht. Da kriegt dann irgendjemand irgendwas angezeigt, was irgendwer irgendwann irgendwohin geworfen hat.

    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/

  7. #7
    Registriert seit
    Apr 2005
    Beiträge
    385
    Wer hat den von 5250 gesprochen???
    Es gibt ein kleines Info-Programm welches die halbe Firma nutzt und nur deshalb ne 5250 Installation hat, für sonst nix. Dieses Info-Programm macht nichts anderes als sich aus gefühlten 4000 Töpfen ein paar Daten zu holen und diese dann aggregiert anzuzeigen.

    Ich wil eigentlich nur das Anzeigeprogramm überflüssig machenund somit die 5250 Installationen. Nicht mehr und auch nicht weniger.

    Das Anzeigeprgramm macht nicht anderes
    1. Selektion eingegen
    2. Datensammler aufrufen
    3. Ergebnis anzeigen

    Ich will nur die Punkte 1 & 3 ablösen und somit die CA-Installationn weitgehenst überflüssig machen.
    Meine Intention:

    1. JAVA-PGM am PC starten und selektion eingeben
    2. RPG-Prgramm arbeiten lassen ==> nicht in JAVA nachturnen bzw. anpassen
    3. Ergebnis im JAVA-PGM auf dem PC anzeigen lassen.

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.206
    Warum sollte das nicht gehen?
    Wenn du wie gesagt ein SQL-Call statt AS400Call machst kannst du die Daten aus QTEMP laden.
    Wichtig ist natürlich, dass du in der Verbindungsfolge die korrekte Bibliotheksliste definierst, damit dein Programm auch alle Ressourcen findet.
    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
    Mar 2002
    Beiträge
    5.286
    ... da kann man auch gleich eine stored procedure draus machen, die ein resultSet zurückgibt.

    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/

Similar Threads

  1. Job noch aktiv - wie kann ich dies am besten prüfen ?
    By falke34 in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 14-05-14, 17:15

Berechtigungen

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