-
 Zitat von Andreas_Prouza
Dafür kannst du die SQL-Funktion get_clob_from_file(pfad) verwenden.
... aber bedenke
- GET_CLOB_FROM_FILE muss unter Commitment Control ausfrührt werden.
- GET_CLOB_FROM_FILE liefert einen Large Object Locator zurück und dieser muss in RPG entsprechend mit SQLTYPE definiert werden, also DCL-S MyClobLoc SQLType(Clob_Locator);
- Ein LOB Locator kann mit SQL-Funktionen (z.B. LOCATE oder SUBSTR) wie ein normales alphanumerisches Feld behandelt werden. Eine direkte Bearbeitung mit RPG-Funktionen ist hingegen nicht möglich.
Ansonsten kannst Du auch mit IFS_READ-Funktionen die ganze IFS-Datei in einem Schwung lesen und ausgeben ... dafür musst Du das Programm NICHT (unbedingt) unter Commitment Control ausführen.
Code:
Select Line
from Table(QSYS2.IFS_READ_UTF8(Path_Name => '/home/YourDir1/YourDir2/YourIFSFile.txt',
End_Of_Line => 'NONE')) a;
Außerdem kannst Du auch die IFS-Datei direkt mit (embedded) SQL direkt als LOB_FILE lesen. Du musst lediglich die CLOB-File definieren und die vom Precompiler erstellten Daten-Struktur-Unterfelder füllen.
Für die LOB_Files gilt das gleiche wie für die LOB Locators. Sie können mit SQL-Funktionen wie alphanumerische Strings berarbeitet werden, aber nicht mit normalen RPG-Variablen und Funktionen.
Etwa so:
Code:
DCL-S MyClobFile SQLType(CLOB_File);
DCL-S MyText Char(50);
DCL-S Start Int(10);
DCL-S RowLen Int(5) inz(120);
DCL-S Index Uns(3);
DCL-S MyIFSFile VarChar(256) inz('/home/YourDir/YourIFSFile.txt');
//*******************************************************************
Exec SQL Set Option Commit=*NONE, DatFmt=*ISO, TimFmt=*ISO,
Naming=*SYS, CloSQLCsr=*EndActGrp;
MyCLOBFile_Name = %Trim(MyIFSFile);
MyCLOBFile_NL = %Len(%Trim(MyCLOBFile_Name));
MyCLOBFile_FO = SQFRD; //Read Only
For Index = 1 to 15;
Start = (Index-1) * RowLen + 1;
Exec SQL Set :MyText = Substr(:MyCLOBFile, :Start, :RowLen);
Dsply MyText;
If SQLCODE = 100 or SQLCODE < *Zeros
or %Len(%Trim(MyText)) = *Zeros;
Leave;
EndIf;
EndFor;
*InLR = *On;
Birgitta
-
Wie gesagt, du kannst den SQLTYPE( DBCLOB : 1M) per based Pointer mit VARUCS2 redefinieren und dann ganz normal als RPG-Variable verwenden.
Das ist auch äußerst praktisch für die IFS-Ausgabe per CLOB_FILE.
-
 Zitat von Fuerchau
Wie gesagt, du kannst den SQLTYPE( DBCLOB : 1M) per based Pointer mit VARUCS2 redefinieren und dann ganz normal als RPG-Variable verwenden.
Das ist auch äußerst praktisch für die IFS-Ausgabe per CLOB_FILE.
Und warum sollte ich mir das antun?
Ich kann das Ganze gleich so wie ich es brauche mit SQL aufbereiten und das Ergebnis dann nach RPG übertragen.
i.Ü. sind RPG-Variablen auf 16MB beschränkt, IFS-Dateien dagegen auf 2GB
-
Weil es schneller ist und funktioniert. Ich habe das schon gebaut, bevor es die anderen IFS-Zugriffe überhaupt gab. Damit lese ich z.B. EDI-Dateiformate aus und erstelle EDI-Dateien.
Similar Threads
-
By KingofKning in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 11-03-15, 18:24
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 16
Letzter Beitrag: 02-10-09, 12:43
-
By Frank Pusch in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 21-10-08, 13:15
-
By Michael_Wien in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 24-01-08, 15:13
-
By Jenne in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 21-10-04, 10:21
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