[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    May 2013
    Beiträge
    15

    Sourcen aus IFS übernehmen und compilieren

    Hallo zusammen,

    ich habe folgende Problematik:

    Ein Kunde erhält von einem externen Dienstleister Sourcedateien in einem Zipfile.

    Dieses Zipfile soll nun im IFS eingestellt werden und dann per Programm

    a. alle Dateien (Sourcen) entpacken
    b. die Sourcen (Copystrecken .cpy und Programme .cblle) ins OS400 übernehmen
    c. die Programmobjekte dann compilieren

    Solange ich immer genau weiß welche Sourcen kommen ist das kein Problem, ich möchte das Programm aber variabel halten.

    Ich hatte gehofft, dass

    qsh cmd(ls *.cpy > Dateiname)

    und danach

    qsh cmd(ls *.cblle >> Dateiname)

    den gewünschten Erfolg bringen, dass ich beim Auslesen der Ausgabedatei erst die Copystrecken und dann die Programme erwische, leider scheint >> aber nicht zu funktionieren.

    Hat evtl. wer eine Idee oder eine bessere Lösung parat?

    Gruß
    Michael

  2. #2
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Hallo,

    1. Warum funktioniert der Befehl in der QSH nicht?
    Wird das File nicht erstellt?
    Wird der Inhalt überschrieben?
    Bei mir funktioniert es genau so wie du es beschrieben hast.

    2. Du könntest den Befehl auch wie folgt ausführen lassen:
    qsh cmd('ls *.cpy > Dateiname; ls *.cblle >> Dateiname;')

    3. Man könnte auch in RPG den Inhalt eines Verzeichnisses einlesen. (readdir)
    http://www.scottklement.com/rpg/ifs_ebook/ifs_ebook.pdf
    Aber das nur so als Info nebenbei.

    lg Andreas

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Da die Shell (QSH) Ausdrücke interpretiert und diese dann als Argumente an ein Kommando übergibt kannst du auch "ls *.cpy *.cblle" ausführen.

    Ansonsten sollte ">>" funktionieren. Mach das mal im Dialog und prüfe die Fehlermeldung.
    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
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Da die Shell (QSH) Ausdrücke interpretiert und diese dann als Argumente an ein Kommando übergibt kannst du auch "ls *.cpy *.cblle" ausführen.
    Dies liefert jedoch eine Liste sortiert nach namen und nicht nach Typ.
    Es sollen ja zuerst alle .cpy und dann .cblle aufgelistet werden.

  5. #5
    Registriert seit
    May 2013
    Beiträge
    15
    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen

    1. Warum funktioniert der Befehl in der QSH nicht?
    Wird das File nicht erstellt?
    Wird der Inhalt überschrieben?
    Bei mir funktioniert es genau so wie du es beschrieben hast.
    Vll. vorab zur Erklärung:

    Ich habe vorher eine Datei im OS400 mit einer Satzlänge von 256 Byte erstellt.

    Der Inhalt wird bei ls > Dateiname überschrieben

    bei ls >> Dateiname soll angeblich das Ergebnis angehängt werden. Der Befehl wird, sofern ich ihn direkt eingebe auch ohne Fehler ausgeführt, Daten werden aber keine geschrieben.

    Ich habe auch noch den CL-Befehl

    ADDENVVAR + ENVVAR(QIBM_QSH_CMD_OUTPUT)...

    mit den Werten FILE=... und FILEAPPEND=... ausprobiert.

    Hier bekomme ich zwar das Ergebnis, jedoch wird die Ausgabe dann nicht satzweise angehängt sondern direkt hinter die letzte Datei aus dem 1. ls. Und dies lässt sich dann mit dem RCVF auch nicht direkt verarbeiten.


    2. Du könntest den Befehl auch wie folgt ausführen lassen:
    qsh cmd('ls *.cpy > Dateiname; ls *.cblle >> Dateiname;')
    Das habe ich so auch gemacht, hatte es nur zur Verdeutlichung auseinander gezogen.

    3. Man könnte auch in RPG den Inhalt eines Verzeichnisses einlesen. (readdir)
    http://www.scottklement.com/rpg/ifs_ebook/ifs_ebook.pdf
    Aber das nur so als Info nebenbei.
    Muss offen gestehen, dass ich bisher relativ wenig mit dem IFS und schon gar nicht innerhalb von RPG (wir proggen hauptsächlich COBOL) zu tun hatte. Da ich aber letztes Jahr bereits ein wenig mit dem ls zu tun hatte, war dies für mich die naheliegenste Lösung.

    Aber schon einmal vielen Dank für die Infos

    P.S. Vielleicht hat ja zusätzlich noch jemand eine schlanke Lösung, wie ich im CL ohne große Umwege den Dateinamen (Name und Endung) auseinander nehmen kann.

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Dann fehlt ein CRLF am Ende des 1. ls.
    Du kannst auch einfach ein "echo >>Datei" vor dem "ls" ausführen für ein zusätzliches CRLF.
    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

  7. #7
    Registriert seit
    May 2013
    Beiträge
    15
    So,

    das Problem liegt in der direkten Ausgabe ins OS/400.

    Gebe ich den ls ins IFS aus, klappt es auch ohne den echo-Befehl.

    Mache ich die Ausgabe ins OS/400 erhalte ich zumindest nach ADDENVVAR und dem ls ein X'25', der Echo-Befehl fügt lediglich ein weiteres X'25' an bevor die Ausgabe des 2. ls dahinter ausgegeben wird.

    Ich werde nun einfach die Datei aus dem IFS importieren und dann verarbeiten. Sind zwar ein paar Schritte mehr als gewünscht, aber der Erfolg zählt gerade mehr.

    Wenn es jetzt noch einen simplen Weg gäbe den Dateinamen "aufzuspalten" wäre es perfekt.

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Im RPGLE gibts ja die Funktion %scan() um nach dem Punkt zu suchen.
    Im CLP muss man leider das API QCLSCAN bemühen.
    Man kann aber auch eine kleine Schleife und %sst() programmieren.
    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
    May 2013
    Beiträge
    15
    Habe die Ausgabe nun erstmal in eine Textdatei ins IFS umgeleitet und siehe da, alles gut.

    Der Tipp mit QCLSCAN hat auch hervorragend geklappt, Programm funktioniert jetzt.

    Vielen Dank für die Unterstützung

Similar Threads

  1. RPG Sourcen im IFS - CRTRPGMOD mit SRCSTMF
    By bofrost in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 27-12-11, 10:05
  2. Berechtigungen im IFS zuweisen
    By ChrisX in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 03-12-07, 12:07
  3. IFS - Freigabe per Befehlszeile
    By eps330 in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 26-11-07, 12:24
  4. Allgemeine Berechtigung für Jobs ... IFS Ordner ...
    By bode in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 30-10-06, 11:10
  5. Windowstabelle wird im IFS in CCSID 1252 erstellt
    By umeis in forum NEWSboard Windows
    Antworten: 3
    Letzter Beitrag: 11-08-06, 12:45

Berechtigungen

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