-
Aus ILE Programm direkt in IFS schreiben
Hallo,
ich möchte gerne direkt aus einem ILE-RPG Programm heraus im IFS eine Textdatei (xxx.txt) anlegen und befüllen. Diese Datei soll dann in einem Fremdsystem weiter verarbeitet werden.
Klar kann ich zunächst in eine physische Datei schreiben und diese dann mit CPYTOIMPF übertragen. Aber direkt diese Datei öffnen und befüllen...
-
-
Hi,
einfach ein CLOB File mit SQL schreiben.
Das ist einfacher als die unix api's zu verwenden
Ungefähr so
dcl-s aHtmlMailFile sqltype(clob_file) ; //
...
clob variable füllen
...
clob als IFS Datei anlegen
exec sql values(:clob) into : aHtmlMailFile ; //CLOB als IFS Datei schreiben
-
Dabei ist allerdings die Angabe einer CCSID beim CLOB_FILE erforderlich, sonst wird EBCDIC ausgegeben.
Bei Job-CCSID 65535 gibt es allerdings eine Fehlermeldung beim Konvertieren.
dcl-s aHtmlMailFile sqltype(clob_file) CCSID(1208); //
-
Sorry,
Hi,
einfach ein CLOB File mit SQL schreiben.
Das ist einfacher als die unix api's zu verwenden
Hier noch die Definition der CLOB Varaiblen:
dcl-s clob sqltype(CLOB:50000) ccsid(*utf8) ; // Hier muss die CCSID angegeben werden
Ungefähr so
dcl-s aHtmlMailFile sqltype(clob_file) ; //
...
clob variable füllen
...
clob als IFS Datei anlegen
exec sql values(:clob) into : aHtmlMailFile ; //CLOB als IFS Datei schreiben
-
Das ist ein Schritt zuviel!
In dem folgenden Beispiel werden 3 Texte (nacheinander) direkt in eine IFS-Datei geschrieben.
Der Trick ist, dass die File Operation LocClobFile_FO richtig gesetzt wird.
SQFOVR generiert eine neue IFS-Datei oder überschreibt eine vorhandene IFS-Datei
SQLFAPP generiert eine neue IFS-Datei, sofern nicht vorhanden. Sofern die IFS-Datei vorhanden ist, werden die Daten ans Ende der IFS-Datei angefügt.
Code:
DCL-S LocClobFile SQLTYPE(Clob_File) CCSID(1208);
DCL-S LocText Char(50);
DCL-S LocIndex Uns(3);
//---------------------------------------------------------------------------
Clear LocClobFile;
LocClobFile_Name = '/home/Dir1/Dir2/YourIFSFile.txt';
LocClobFile_NL = %Len(%Trim(LocClobFile_Name));
LocClobFile_FO = SQFOVR; //Create/Override existing IFS File
For LocIndex = 1 to 3;
Select;
When LocIndex = 1;
LocText = 'The important thing is not to stop questionning';
When LocIndex = 2;
LocText = 'Curiosity has its own reason for existence';
When LocIndex = 3;
LocText = 'Quote: Albert Einstein';
EndSl;
Exec SQL Set :LocClobFile = :LocText;
LocClobFile_FO = SQFAPP; //Add Data
EndFor;
Birgitta
-
Welcher Schritt war da zuviel?
Es wurden wie bei dir 2 Variablen (CLOB, CLOB_FILE) definiert und ein SQL ausgeführt.
Wenn _FO nicht angegeben wird, nimmt SQL einen Default an.
Was mich allerdings geärget hat ist, dass eine UCS2-Variable nicht direkt genommen werden kann (V7R3).
Ich musste diese mit einem DBCLOB redefinieren (Overlay).
Dann klappts auch mit UCS2 von/nach UTF8.
-
Ich habe KEINE CLOB-Variable nur eine CLOB-File!
Zuerst in eine Variable und dann ins IFS ist ein Schritt zuviel.
Birgitta
-
Hi,
ob nun eine Variable zuviel oder zuwenig ist wohl egal :-)
Wichtig ist: Bei dem CLOB ignoriert das System die CCSID bei der DCL-S LocClobFile SQLTYPE(Clob_File) CCSID(1208); Definition.
Die CCSID wird von der CLOB Variablen genommen. Deswegen die CLOB Variable mit UTF-8
Gruß
Michael
-
@Birgitta:
"Zuerst in eine Variable und dann ins IFS ist ein Schritt zuviel."
Und was ist das:
Exec SQL Set :LocClobFile = :LocText
Wir wollen ja schließlich keine Konstanten ausgeben.
MK hat statt LocText eben eine variable "clob" verwendet.
Und danke Michael, bzgl. der CCSID hast du Recht.
-
Hallo. Wenn ihr das neueste TR drauf habts dann gibts da jetzt neue SQL-Funktion(en):
https://www.rpgpgm.com/2020/11/writi...-with-sql.html
Ich konnte es aber leider noch nicht selber testen/verwenden :-(
LG
-
Nun ja, und noch eine Methode....;-).
Similar Threads
-
By dschroeder in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 30-01-17, 13:36
-
By PFR in forum NEWSboard Programmierung
Antworten: 15
Letzter Beitrag: 05-01-16, 15:42
-
By JoergHamacher in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 28-11-13, 09:56
-
By Kilianski in forum NEWSboard Server Software
Antworten: 0
Letzter Beitrag: 08-08-02, 16:07
-
By Michael@Paff.de in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 28-04-02, 08:42
Tags for this Thread
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks