[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Sep 2004
    Beiträge
    136

    Hilfe für api RSLVSP benötigt

    PHP-Code:
    AUTH_NONE    C       X'0000'

    CharType '*PGM';

    ConvertObjectTypeHex'*SYMTOHEX'
                        
    CharType
                        
    HexType
                        
    errc0100 );

    result GetSysPointerHexType
                          
    : %trimPgmName )
                          : %
    trimPgmLibl )
                          : 
    AUTH_NONE ); 
    Wenn das Object ein *SRVPGM ist stürzt das API ab, in der Hilfe steht, dass man mit X'2201' das unterbinden kann, aber wie genau?

    Gruß
    Xanas

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    *SRVPGM ist ein anderer Objekttyp als *PGM. Ändere den CharType entsprechend.

    Du kannst das auch mit Monitor-Gruppe abfangen, wenn Dir der Typ nicht bekannt ist.

    Allerdings unterscheidet die AS/400 ein Objekt mit Namen und Typ.
    Es kann also sowohl ein Pgm XXX als auch ein SRVPGM XXX geben.
    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.287
    auf meiner Open Source Seite findest du ein Beispiel PROCP4NAME

    D*B

    Zitat Zitat von Xanas Beitrag anzeigen
    PHP-Code:
    AUTH_NONE    C       X'0000'

    CharType '*PGM';

    ConvertObjectTypeHex'*SYMTOHEX'
                        
    CharType
                        
    HexType
                        
    errc0100 );

    result GetSysPointerHexType
                          
    : %trimPgmName )
                          : %
    trimPgmLibl )
                          : 
    AUTH_NONE ); 
    Wenn das Object ein *SRVPGM ist stürzt das API ab, in der Hilfe steht, dass man mit X'2201' das unterbinden kann, aber wie genau?

    Gruß
    Xanas
    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
    Sep 2004
    Beiträge
    136
    Zitat Zitat von BenderD Beitrag anzeigen
    auf meiner Open Source Seite findest du ein Beispiel PROCP4NAME

    D*B
    Ja genau da hab ich mein wissen über das API her, aber wenn das gesuchte objekt nicht da ist, raucht das Api ab.

    Mit der Monitor-Gruppe habe ich bisher so gemacht, aber wird im Joblog dokumentiert.

    Deswegen hatte ich hier mal nachgeschaut, aber das ist mir zu hoch.
    If the object is not found, and do not signal object not found exception is set to binary 0, then an object not found (hex 2201) exception is signaled. If the object is not found, and do not signal object not found exception is set to binary 1, then the operand 1 pointer is set to a null pointer value and no exception is signaled.
    Help -

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    schreib doch gleich was du eigentlich wissen willst...
    deine Doku ist die Dokumentation der MI Anweisung RSLVSP und nicht die des entsprechenden APIs.
    Das API hat diese Funktion nicht, wenn du die auf dieser Ebene reinpacken willst, dann kannst du einen Aufruf von access() vorwegschicken, oder einen Monitor drummachen.
    Ich verwende dieses API allerdigs im Kontext dynamisches binden und da würde der Abfang der Fehlerkonstellation an dieser Stelle den Absturz bis zur Verwendung des Procedure Pointers verschieben, was mir nicht so gut gefiel.

    D*B

    Zitat Zitat von Xanas Beitrag anzeigen
    Ja genau da hab ich mein wissen über das API her, aber wenn das gesuchte objekt nicht da ist, raucht das Api ab.

    Mit der Monitor-Gruppe habe ich bisher so gemacht, aber wird im Joblog dokumentiert.

    Deswegen hatte ich hier mal nachgeschaut, aber das ist mir zu hoch.
    Help -
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  6. #6
    Registriert seit
    Sep 2004
    Beiträge
    136
    Ich weis in meinem Programm nicht ob das Objekt was ich Suche ein *SRVPGM oder *PGM ist. Da dachte ich mir, guck ich erstmal ob es ein *PGM ist und wenn der zurückgegeben Parameter *null ist guck ich mal ob es ein *SRVPGM ist. Vieleicht sollte ich mir da auch noch mal was einfallen lassen, ist jetzt wo ich so drüber nachdenke auch nicht wirklich optimal.

    Gruß
    Xanas

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Anstelle dieses API's versuchs doch mal mit
    Retrieve Object Description (QUSROBJD) API
    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

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    was hast du denn wirklich vor? vielleicht hat ja jemand einen Vorschlag für dich!

    D*B

    Zitat Zitat von Xanas Beitrag anzeigen
    Ich weis in meinem Programm nicht ob das Objekt was ich Suche ein *SRVPGM oder *PGM ist. Da dachte ich mir, guck ich erstmal ob es ein *PGM ist und wenn der zurückgegeben Parameter *null ist guck ich mal ob es ein *SRVPGM ist. Vieleicht sollte ich mir da auch noch mal was einfallen lassen, ist jetzt wo ich so drüber nachdenke auch nicht wirklich optimal.

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

  9. #9
    Registriert seit
    Sep 2004
    Beiträge
    136
    Also ich hab ein Service Programm was das QSQPRCED kapselt.

    in der qsqp400 Datenstruktur gibt es da so ein usePointers in verbindung mit dem mainProgrammpointer.

    zu den Systempointern kam ich weil...

    Ich hatte bisher immer den Mainprogramm namen der Callers meines Serviceprogrammes gesetzt, das hat aber zu Problemen geführt, wenn das Programm im Betrieb neu kompiliert wurde, weil der Programmname dann Pötzlich so ein "Qirgenwas" in der QRPGLEOBJ war. Dann dachte ich mir das kanns doch nicht sein, also die Doku noch mal gelesen und bin dabei über die Systempointer gestolpert, also dachte ich probier es doch mal damit.

    So und dabei bin ich dann über das oben geschilderte Problem gestolpert.

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Da frage ich mich nun, was du mit dem API eigentlich bezweckst und ob es mit dynamischem SQL oder CLI nicht besser lösbar wäre.

    Ansonsten kann dein Aufrufer ja über deine Schnittstelle den Programmnamen mitgeben (der steht ja nun mal in der SDS).
    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
    Mar 2002
    Beiträge
    5.287
    ich würde mal meinen, dass du da denselben Tod stirbst, da der RSLVSP auch über Name und Bibliothek geht und dann den Bezug zu der QRPLOBJ auch nicht bekommt.
    Das einfachste wird sein, den SystemPointer in deinem Serviceprogramm zu Beginn zu ermitteln und dann zu cachen.

    D*B

    Zitat Zitat von Xanas Beitrag anzeigen
    Also ich hab ein Service Programm was das QSQPRCED kapselt.

    in der qsqp400 Datenstruktur gibt es da so ein usePointers in verbindung mit dem mainProgrammpointer.

    zu den Systempointern kam ich weil...

    Ich hatte bisher immer den Mainprogramm namen der Callers meines Serviceprogrammes gesetzt, das hat aber zu Problemen geführt, wenn das Programm im Betrieb neu kompiliert wurde, weil der Programmname dann Pötzlich so ein "Qirgenwas" in der QRPGLEOBJ war. Dann dachte ich mir das kanns doch nicht sein, also die Doku noch mal gelesen und bin dabei über die Systempointer gestolpert, also dachte ich probier es doch mal damit.

    So und dabei bin ich dann über das oben geschilderte Problem gestolpert.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  12. #12
    Registriert seit
    Sep 2004
    Beiträge
    136
    Zitat Zitat von BenderD Beitrag anzeigen
    ich würde mal meinen, dass du da denselben Tod stirbst, da der RSLVSP auch über Name und Bibliothek geht und dann den Bezug zu der QRPLOBJ auch nicht bekommt.
    Das einfachste wird sein, den SystemPointer in deinem Serviceprogramm zu Beginn zu ermitteln und dann zu cachen.

    D*B
    Zu begin Ruft jedes Programm meine Init routine auf, dann wurde das Programm in die qsqp400 struktur geschrieben und wird nicht mehr geändert.

    Das Problem ist genau das Cachen, hat über den Namen nicht Funktioniert, deswegen lag meine Hoffnung in dem Pointer, der dann immer noch eben auf das Objekt zeigt, was auf einmal die die QRPGLEOBJ geschupst wurde.

    Ich hab nämlich mal so eine Krücke gebaut und mir den Namen über den Callstack vor jedem execute ermittelt und siehe da keine SQL-System Fehler mehr, aber das ging mit zu sehr auf die Performance.

Similar Threads

  1. Hilfe benötigt bei O-Bestimmungen
    By woodstock99 in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 14-04-08, 14:43
  2. Probleme API QUSLJOB aufzurufen
    By TMusolf in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 25-01-07, 12:42
  3. Hilfe! Rollback bei Transaktionen funktioniert nicht
    By remo2010 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 23-11-06, 13:31
  4. Hilfe bei Lodrun Anleitung
    By marcel331 in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 12-08-06, 13:01
  5. Hilfe benötigt! Rücksicherung Daten von MAGSTAR Band
    By cicero22 in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 20-10-05, 11:59

Berechtigungen

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