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

    Cobol Printer File INFDS

    Hallo Zusammen,
    mal eine Frage an die Cobol Cracks.
    Ich möchte von einer geöffneten printer file die INFDS Attribute auslesen, sprich Spoolfile Name, Number, Job Name, Nummer, User und diese für die Weiterverarbeitung in eine Datei schreiben.
    Eine INFDS gibt es ja nicht, dachte das bekomme ich über eine Feedback-area hin, aber das klappt auch irgendwie nicht.
    Habe Ihr vlt. ein Beispiel parat?
    Danke.
    Klaus

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.896
    Ich bin auch kein Cobol-Experte, aber vielleicht bringt der IBM Service Spooled_File_Info zurück, was Du brauchst:
    Spooled_File_Info Table Function
    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

  3. #3
    Registriert seit
    Sep 2004
    Beiträge
    346
    Zitat Zitat von B.Hauser Beitrag anzeigen
    Ich bin auch kein Cobol-Experte, aber vielleicht bringt der IBM Service Spooled_File_Info zurück, was Du brauchst:
    Spooled_File_Info Table Function
    Danke, ja wollte ich auch nehmen, aber leider läuft die Kiste noch unter V7R1.
    Werde wohl dann die API QUSRSPLA nehmen.


  4. #4
    Registriert seit
    Jun 2001
    Beiträge
    2.000
    chatgpt:

    wie kann ich in cobol den Spoolfile Name, Number, Job Name, Nummer, User auslesen

    ChatGPT

    Um in COBOL auf IBM i (früher AS/400 oder iSeries) Informationen wie Spoolfile-Name, Spoolfile-Nummer, Job-Name, Job-Nummer und User auszulesen, müssen Sie API-Aufrufe (Application Programming Interface) verwenden, die diese Informationen aus dem System extrahieren können. Ein gängiger Ansatz ist die Verwendung der API QUSRSPLA (Retrieve Spooled File Attributes), die Informationen über Spooled Files liefert.

    Hier ist ein grundlegendes Beispiel, wie Sie diese Informationen in COBOL verwenden können:
    Beispiel: COBOL-Programm zur Verwendung der QUSRSPLA-API

    cobol

    IDENTIFICATION DIVISION.
    PROGRAM-ID. SPOOLEXAMPLE.
    ENVIRONMENT DIVISION.
    DATA DIVISION.
    WORKING-STORAGE SECTION.

    * Define the structure for the input parameters and output data.
    01 API-INPUT-PARM.
    05 SPOOLED-FILE-NAME PIC X(10) VALUE 'SPLFNAME'.
    05 SPOOLED-FILE-NUMBER PIC S9(4) COMP VALUE 1.
    05 JOB-NAME PIC X(10) VALUE 'JOBNAME'.
    05 JOB-USER PIC X(10) VALUE 'USER'.
    05 JOB-NUMBER PIC X(6) VALUE 'JOB#'.

    01 API-OUTPUT-DATA.
    05 SPOOLED-FILE-ATTRIBUTES-LENGTH PIC S9(9) COMP.
    05 SPOOLED-FILE-ATTRIBUTES PIC X(500).

    01 API-ERROR-DATA.
    05 ERROR-CODE-LENGTH PIC S9(9) COMP VALUE 0.
    05 ERROR-CODE PIC X(7).

    PROCEDURE DIVISION.
    * Call the QUSRSPLA API to retrieve the spooled file attributes.
    CALL 'QUSRSPLA' USING
    API-OUTPUT-DATA
    API-INPUT-PARM
    ERROR-CODE.

    * Check for errors.
    IF ERROR-CODE-LENGTH NOT = 0
    DISPLAY 'Error retrieving spooled file attributes.'
    STOP RUN
    ELSE
    DISPLAY 'Spoolfile Name: ' SPOOLED-FILE-NAME
    DISPLAY 'Spoolfile Number: ' SPOOLED-FILE-NUMBER
    DISPLAY 'Job Name: ' JOB-NAME
    DISPLAY 'Job Number: ' JOB-NUMBER
    DISPLAY 'User: ' JOB-USER
    END-IF.

    STOP RUN.

    Erklärung:

    API-INPUT-PARM: Hier geben Sie die Parameter wie den Namen und die Nummer des Spool-Files sowie den Job-Namen, User und die Job-Nummer an.
    API-OUTPUT-DATA: Dieses Feld wird von der API gefüllt und enthält die Attribute des Spool-Files, die Sie abrufen möchten.
    API-ERROR-DATA: Hier wird der Fehlercode zurückgegeben, falls bei der API-Aufruf ein Fehler auftritt.

    API-Parameter:

    SPLFNAME: Ersetzen Sie dies durch den tatsächlichen Namen des Spool-Files.
    JOBNAME, USER, JOB#: Ersetzen Sie diese durch die tatsächlichen Werte, die Sie verwenden möchten.

    Anmerkungen:

    Bibliothek: Stellen Sie sicher, dass das Programm in der richtigen Bibliothek ausgeführt wird, in der die Spool-Files und Jobs vorhanden sind.
    Zugriffsrechte: Der Benutzer, der das COBOL-Programm ausführt, muss die entsprechenden Berechtigungen haben, um auf die Spool-Files und Job-Informationen zuzugreifen.

    Dieses Beispiel ist ein sehr einfacher Einstieg. In der Praxis müssen Sie möglicherweise weitere Fehlerbehandlungen und Anpassungen vornehmen, um es an Ihre spezifischen Anforderungen anzupassen.


    ------------------------------------------------------------------------

    k.a. ob das ok ist ...
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  5. #5
    Registriert seit
    Sep 2004
    Beiträge
    346
    Zitat Zitat von Robi Beitrag anzeigen
    chatgpt:

    wie kann ich in cobol den Spoolfile Name, Number, Job Name, Nummer, User auslesen

    ChatGPT

    Um in COBOL auf IBM i (früher AS/400 oder iSeries) Informationen wie Spoolfile-Name, Spoolfile-Nummer, Job-Name, Job-Nummer und User auszulesen, müssen Sie API-Aufrufe (Application Programming Interface) verwenden, die diese Informationen aus dem System extrahieren können. Ein gängiger Ansatz ist die Verwendung der API QUSRSPLA (Retrieve Spooled File Attributes), die Informationen über Spooled Files liefert.

    Hier ist ein grundlegendes Beispiel, wie Sie diese Informationen in COBOL verwenden können:
    Beispiel: COBOL-Programm zur Verwendung der QUSRSPLA-API

    cobol

    IDENTIFICATION DIVISION.
    PROGRAM-ID. SPOOLEXAMPLE.
    ENVIRONMENT DIVISION.
    DATA DIVISION.
    WORKING-STORAGE SECTION.

    * Define the structure for the input parameters and output data.
    01 API-INPUT-PARM.
    05 SPOOLED-FILE-NAME PIC X(10) VALUE 'SPLFNAME'.
    05 SPOOLED-FILE-NUMBER PIC S9(4) COMP VALUE 1.
    05 JOB-NAME PIC X(10) VALUE 'JOBNAME'.
    05 JOB-USER PIC X(10) VALUE 'USER'.
    05 JOB-NUMBER PIC X(6) VALUE 'JOB#'.

    01 API-OUTPUT-DATA.
    05 SPOOLED-FILE-ATTRIBUTES-LENGTH PIC S9(9) COMP.
    05 SPOOLED-FILE-ATTRIBUTES PIC X(500).

    01 API-ERROR-DATA.
    05 ERROR-CODE-LENGTH PIC S9(9) COMP VALUE 0.
    05 ERROR-CODE PIC X(7).

    PROCEDURE DIVISION.
    * Call the QUSRSPLA API to retrieve the spooled file attributes.
    CALL 'QUSRSPLA' USING
    API-OUTPUT-DATA
    API-INPUT-PARM
    ERROR-CODE.

    * Check for errors.
    IF ERROR-CODE-LENGTH NOT = 0
    DISPLAY 'Error retrieving spooled file attributes.'
    STOP RUN
    ELSE
    DISPLAY 'Spoolfile Name: ' SPOOLED-FILE-NAME
    DISPLAY 'Spoolfile Number: ' SPOOLED-FILE-NUMBER
    DISPLAY 'Job Name: ' JOB-NAME
    DISPLAY 'Job Number: ' JOB-NUMBER
    DISPLAY 'User: ' JOB-USER
    END-IF.

    STOP RUN.

    Erklärung:

    API-INPUT-PARM: Hier geben Sie die Parameter wie den Namen und die Nummer des Spool-Files sowie den Job-Namen, User und die Job-Nummer an.
    API-OUTPUT-DATA: Dieses Feld wird von der API gefüllt und enthält die Attribute des Spool-Files, die Sie abrufen möchten.
    API-ERROR-DATA: Hier wird der Fehlercode zurückgegeben, falls bei der API-Aufruf ein Fehler auftritt.

    API-Parameter:

    SPLFNAME: Ersetzen Sie dies durch den tatsächlichen Namen des Spool-Files.
    JOBNAME, USER, JOB#: Ersetzen Sie diese durch die tatsächlichen Werte, die Sie verwenden möchten.

    Anmerkungen:

    Bibliothek: Stellen Sie sicher, dass das Programm in der richtigen Bibliothek ausgeführt wird, in der die Spool-Files und Jobs vorhanden sind.
    Zugriffsrechte: Der Benutzer, der das COBOL-Programm ausführt, muss die entsprechenden Berechtigungen haben, um auf die Spool-Files und Job-Informationen zuzugreifen.

    Dieses Beispiel ist ein sehr einfacher Einstieg. In der Praxis müssen Sie möglicherweise weitere Fehlerbehandlungen und Anpassungen vornehmen, um es an Ihre spezifischen Anforderungen anzupassen.


    ------------------------------------------------------------------------

    k.a. ob das ok ist ...
    Danke Dir, habe nun auch die API benutzt, dachte halt nur, dass es wie bei RPG auch eine INFDS gibt.

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.455
    ChatGPT weiß eben nicht alles:
    Das gibts ebenso für COBOL.
    Das Thema bei COBOL nennt sich dann OPEN-FEEDBACK Area:
    Mittels Accept kann man diese dann einlesen.
    Die Struktur habe ich online leider nicht gefunden, sollte aber zur RPG-Struktur passen.
    Man muss halt nur die Filler selber ausrechnen.

    https://www.ibm.com/docs/en/i/7.5?to...cept-statement

    https://www.ibm.com/docs/en/i/7.5?topic=information-infds-open-feedback-example
    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
    Jun 2001
    Beiträge
    2.000
    meine Frage an Chatgpt: ist die open feedback area im cobol wie die infds in rpg


    ChatGPT

    Die Open Feedback Area (OFA) in COBOL ist nicht direkt vergleichbar mit der INFDS (File Information Data Structure) in RPG, obwohl sie in gewisser Weise ähnliche Informationen bereitstellen kann. Beide Mechanismen dienen dazu, zusätzliche Informationen über eine Datei oder eine Dateioperation bereitzustellen, aber sie funktionieren auf unterschiedliche Weise und bieten unterschiedliche Informationen.
    INFDS in RPG

    Die INFDS in RPG ist eine Datenstruktur, die verwendet wird, um spezifische Informationen über eine Dateioperation zu erhalten, wie zum Beispiel den letzten verwendeten I/O-Befehl, den Fehlerstatus, den Dateinamen und mehr. Sie wird speziell für eine Datei definiert und enthält eine Vielzahl von Feldern, die der RPG-Programmierer direkt verwenden kann.
    Open Feedback Area in COBOL

    Die Open Feedback Area in COBOL auf IBM i ist eine Struktur, die Informationen über den Status einer geöffneten Datei enthält. Sie wird hauptsächlich verwendet, um Details über die Datei zu erhalten, nachdem die Datei geöffnet wurde.
    Verwendung der Open Feedback Area in COBOL:

    Definition der Open Feedback Area:
    Sie müssen die Open Feedback Area im Working-Storage-Bereich definieren.

    cobol

    WORKING-STORAGE SECTION.
    01 OPEN-FEEDBACK-AREA.
    05 OFA-FEEDBACK-LENGTH PIC S9(4) COMP.
    05 OFA-FEEDBACK-DATA PIC X(256).

    Verwendung der OFA mit der Datei:
    Sie müssen die OFA der Datei im FILE-CONTROL-Bereich zuweisen.

    cobol

    FILE-CONTROL.
    SELECT YOURFILE ASSIGN TO DISK
    ORGANIZATION IS SEQUENTIAL
    FILE STATUS IS FILE-STATUS-CODE
    OPEN-FEEDBACK IS OPEN-FEEDBACK-AREA.

    Abruf von Informationen nach dem Öffnen:
    Nachdem die Datei geöffnet wurde, können Sie die Informationen in der OPEN-FEEDBACK-AREA analysieren. Diese Informationen könnten die Anzahl der Datensätze in der Datei, den Zugriffspfad, Dateiattribute usw. enthalten.

    Unterschiede und Gemeinsamkeiten:

    INFDS in RPG: Wird für eine Vielzahl von Informationen über Dateioperationen verwendet, und diese Informationen können direkt in einer Datenstruktur abgelegt und abgerufen werden.

    OFA in COBOL: Bietet spezifische Informationen über den Status der Datei nach dem Öffnen, ist aber weniger umfassend und spezifisch im Vergleich zu INFDS in RPG.

    Fazit:

    Während die Open Feedback Area in COBOL einige Funktionen bietet, die mit denen der INFDS in RPG vergleichbar sind, ist sie in ihrer Anwendung eingeschränkter und weniger flexibel. Für umfassendere Datei- und Fehlerinformationen in COBOL sind andere Methoden wie File Status Codes, deklarative Fehlerbehandlung oder System-APIs notwendig.

    ----------------------------------------------------------------------------------
    Aber es wäre ja auch traurig, wenn ChatGpt einen guten Cobol Entwicker ersetzen könnte
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.455
    Wie heißts so schön: Versuch macht kluch.
    Warum die Definitionen der Areas so schwierig zu finden sind weiß ich auch nicht.
    Viele Texte der IBM-Seiten sind ja nur noch 1,5 Bildschirmseiten lang und verweisen dann auf textuelle Links, die man dann wieder lange suchen muss.
    Ggf. gibts da was im Programmier-Handbuch (nicht in der Reference).

    Aber auch hier, COBOL kann ja auch Programme aufrufen, somit reicht hier auch ein CLP mit einem RTVSPLFA, was einfacher als so manches API ist.
    Wahrscheinlich macht das E30GL aber noch viel eleganter.
    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
    Sep 2004
    Beiträge
    346
    Ja, leider passt die Syntax von CHATGPT nicht.
    OPEN-FEEDBACK IS OPEN-FEEDBACK-AREA darf nicht in File-Control stehen, sondern muss in SPECIAL-NAMES stehen. Aber ich bekomme nicht die Attribute der printerfile angezeigt. Das muss dann wohl irgendwie mit ACCEPT gehen, aber so wie Du schon schreibst, man findet nichts aussagekräftiges im Netz.
    Bleibe bei der API, die funktioniert.
    Danke für die Tipps.

  10. #10
    Registriert seit
    Mar 2002
    Beiträge
    5.325
    ... wie wärs denn hiermit:
    https://www.ibm.com/docs/el/i/7.3?to...k-area-layouts
    Bitfrickeler werden hiermit viel Spass haben. (sieht schlimmer aus, als die Spool APIs

    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/

  11. #11
    Registriert seit
    Sep 2004
    Beiträge
    346
    Zitat Zitat von BenderD Beitrag anzeigen
    ... wie wärs denn hiermit:
    https://www.ibm.com/docs/el/i/7.3?to...k-area-layouts
    Bitfrickeler werden hiermit viel Spass haben. (sieht schlimmer aus, als die Spool APIs

    D*B
    danke, hatten wir aber schon. Nur wie man das definiert, keine Ahnung. Aber kein Problem, ich rufe die API auf und gut ist.

  12. #12
    Registriert seit
    Mar 2002
    Beiträge
    5.325
    ... die Mimik ist doch (fast) identisch mit RPG. Die infds anhängen hast du ja schon gefunden. Dann musst du in deiner infds die Felder deklarieren, die du haben willst (Positionen ab Stelle 81 identisch mit RPG. gefüllt wird das dann mit accept. (ACCEPT MY-FEEDBACK-A FROM OPEN-FEEDBACK-AREA FOR MY-FILE) und dann sind die Felder gefüllt.

    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. INFDS Printer
    By malzusrex in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 30-04-20, 16:44
  2. INFDS und Post?
    By robertki in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 02-02-07, 12:27
  3. PAGRTT aus Printer-File ermitteln
    By MatthiasK in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 10-01-07, 13:26
  4. Printer File Linien
    By DEVJO in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 07-12-05, 17:31
  5. Printer File / Remote Printer
    By chris in forum NEWSboard Drucker
    Antworten: 3
    Letzter Beitrag: 19-02-02, 22:52

Tags for this Thread

Berechtigungen

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