[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Mar 2003
    Beiträge
    35

    rename() und IFS

    Hallo Forum,

    Ich möchte im IFS eine Datei umbenennen.
    Mit der C-funktion rename(), ist das leider nicht möglich wie ich im API-Handbuch nachlesen konnte
    #include Qp0lstdi.h fehlt
    .

    Nun meine Frage wie binde ich diesen Header in ein RPG Programm ein

  2. #2
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.012
    Hallo,

    versuche es doch mal mit folgendem Prototyp:

    D* int Qp0lRenameKeep(const char *old, const char *new)
    D*----------------------------------------------------------------
    D Rename PR 10I 0 ExtProc('Qp0lRenameKeep')
    D old * Value options(*string)
    D new * Value options(*string)

    Gruß,
    KM

  3. #3
    Registriert seit
    Mar 2003
    Beiträge
    35

    Question

    Hallo KM,

    Danke erst mal ,
    das mit Qp0lRenameKeep() ist mir schon bekannt, aber leider bekomme ich mit dieser Funktion einen Fehler beim binden.
    Obwohl ich QC2LE eingebunden habe.

    Die Frage ist nun vielmehr genereller Natur -

    Wie binde ich eine C-Headerdatei in RPG ein ?
    ist dies überhaupt möglich ?
    und wenn ... wie ?

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo,

    C Prototypen kann man in RPG nicht einbinden, aber C Funktionen, wozu man dann einen Prototyp in RPG braucht: Selbigen kann man auf mehreren Wegen bekommen:
    - in QSYSINC nachsehen, ob da einer ist
    - den C Prototyp in RPG übersetzen
    - auf der Freeware Seite von Thomas Raddatz (tools400.de) nachsehen
    am einfachsten und besten ist meist das dritte (aller guten Dinge sind 3)
    beim binden muss dann natürlich der Import auflösbar sein, falls das nicht der Fall ist,
    - könnte man sich vertippt haben (Groß/Kleinschreibung, Hochkomma vergessen etc.
    - QC2LE vergessen haben
    - Serviceprogramm ist nicht in QC2LE drin
    ansonsten müsste der rename auch über einen Qshell Command möglich sein, den man über system oder QCMDEXC oder QSH auch aus RPG übergeben kann.

    mfg

    Dieter Bender

    Zitat Zitat von fabax
    Hallo KM,

    Danke erst mal ,
    das mit Qp0lRenameKeep() ist mir schon bekannt, aber leider bekomme ich mit dieser Funktion einen Fehler beim binden.
    Obwohl ich QC2LE eingebunden habe.

    Die Frage ist nun vielmehr genereller Natur -

    Wie binde ich eine C-Headerdatei in RPG ein ?
    ist dies überhaupt möglich ?
    und wenn ... wie ?
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Hallo fabax !

    Welcher Fehler wird denn gemeldet (siehe erstellte Spooldatei)?
    Für welches Release (VRM) wandelst du das Programm?

    Gruß
    Jürgen

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von Pikachu
    Hallo fabax !

    Welcher Fehler wird denn gemeldet (siehe erstellte Spooldatei)?
    Für welches Release (VRM) wandelst du das Programm?

    Gruß
    Jürgen
    Fehler, die beim Binden entstehen kann man nicht aus der Umwandlungs-Liste entnehmen.

    Sehr oft hilft, das Programm interaktiv umzuwandeln und dann einen Blick ins Joblog werfen. Das ist zwar auch nicht das gelbe vom Ei hilft aber meistens weiter.

    Birgitta
    Birgitta Hauser

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

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo nochmal,

    Ergänzung:
    - Qp0lRenameKeep() erfordert das binden des SRVPGMS QP0LLIB1, das ist in QC2LE nicht drin
    - BNDDIR QUSAPIBD täte es wohl auch
    - die Qshell Funktion heißt mv altName neuName

    mfg

    Dieter Bender

    Zitat Zitat von fabax
    Hallo KM,

    Danke erst mal ,
    das mit Qp0lRenameKeep() ist mir schon bekannt, aber leider bekomme ich mit dieser Funktion einen Fehler beim binden.
    Obwohl ich QC2LE eingebunden habe.

    Die Frage ist nun vielmehr genereller Natur -

    Wie binde ich eine C-Headerdatei in RPG ein ?
    ist dies überhaupt möglich ?
    und wenn ... wie ?
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.012
    Hallo,

    die Prozedur Qp0lRenameKeep() hat überhaupt nichts mit QC2LE zu tun. Wenn der Prototyp so definiert ist, wie bereits weiter oben angegeben, dann wird auch QP0LLIB1 automatisch gebunden und der "rename" funktioniert auch. Irgendwelche überflüssige Binderverzeichnisse sind da nicht nötig. Dein Binde-Fehler muß eine andere Ursache haben.

    Gruß,
    KM

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    @KM: bei mir wird Qp0lRenameKeep() auch ohne Bindeangaben gebunden, aber ich frage mich schon, ob das eine dokumentierte oder undokumentierte Eigenschaft ist. Bei letzterem könnte es schon Release Stände geben wo eine Bindeangabe erforderlich ist.

    mfg

    Dieter Bender

    Zitat Zitat von KM
    Hallo,

    die Prozedur Qp0lRenameKeep() hat überhaupt nichts mit QC2LE zu tun. Wenn der Prototyp so definiert ist, wie bereits weiter oben angegeben, dann wird auch QP0LLIB1 automatisch gebunden und der "rename" funktioniert auch. Irgendwelche überflüssige Binderverzeichnisse sind da nicht nötig. Dein Binde-Fehler muß eine andere Ursache haben.

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

  10. #10
    Registriert seit
    Mar 2003
    Beiträge
    35

    Thumbs up

    Zitat Zitat von fabax
    Hallo Forum,

    Ich möchte im IFS eine Datei umbenennen.
    Mit der C-funktion rename(), ist das leider nicht möglich wie ich im API-Handbuch nachlesen konnte .

    Nun meine Frage wie binde ich diesen Header in ein RPG Programm ein


    Auf der Zielmaschine läuft Version V5.2


    Ich habe mir inzwischen mit Rename Object (REN) beholfen. Über system() rufe ich dann den zusammengebauten String ab. Danke an BenderD für den Tip.


    REN OBJ('\Test\alte_datei) NEWOBJ('neue_datei.txt')

    Wichtig dabei ist, das in OBJ die alte Datei mit Pfad angeben werden muss. bei NEWOBJ aber nur die neue Datei stehen darf !

Similar Threads

  1. IFS - Freigabe per Befehlszeile
    By eps330 in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 26-11-07, 12:24
  2. Dateien per FTP von IFS auf der AS400 holen
    By kroehn in forum NEWSboard Windows
    Antworten: 5
    Letzter Beitrag: 08-11-06, 19:36
  3. Allgemeine Berechtigung für Jobs ... IFS Ordner ...
    By bode in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 30-10-06, 11:10
  4. Datei im IFS auf iSeries verschlüsseln
    By jo400 in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 21-10-06, 17:57
  5. Umlaute werden im IFS zu Sonderzeichen
    By y-tom in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 29-05-06, 14:31

Berechtigungen

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