[NEWSboard IBMi Forum]
Seite 2 von 2 Erste 1 2
  1. #13
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... ich bin mir aus dem Kopf auch nicht sicher, ob man überhaupt so ohne weiteres mehr als 16 MB zusammenhängenden Speicher auf dem Heap allokieren kann. Bei Deiner Variante mit dem %str wäre da ein varying Feld die bessere Wahl (da kann man dann auf die Länge zugreifen.

    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/

  2. #14
    Registriert seit
    May 2015
    Beiträge
    11
    Hallo D*B,

    das Feld hatte ich schon auf varying geändert. Ich denke wenn die vermeintlich größte Datei (Artikelstamm) mit 3,4MB auskommt und ich max. 16MB habe und die nicht reichen sollten, muss ich sowieso mit dem Kunden in Kontakt treten. Vielleicht kann er ohne gr0ßen Aufwand logische Einheiten bilden, die ich dann auch verarbeiten kann.

    Aber nicht mehr in diesem Jahr.

    Ich wünsche allen Usern einen guten Rutsch.

    Jörg

  3. #15
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Zumindest laut Doku kann man mit Teraspace max. 4GB am Stück zuordenen, im SingleLevel nur 16MB.
    Allerdings bedarf es da entsprechender H-Einstellungen, damit %alloc() auf Teraspace zugreift.

    Warum man dann keine Variablen >16MB (und dann auch nur im Full-Free > 1MB) definieren kann, entzieht sich mir, das hat die IBM dann wohl wieder vergessen.
    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. #16
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Zumindest laut Doku kann man mit Teraspace max. 4GB am Stück zuordenen, im SingleLevel nur 16MB.
    Allerdings bedarf es da entsprechender H-Einstellungen, damit %alloc() auf Teraspace zugreift.

    Warum man dann keine Variablen >16MB (und dann auch nur im Full-Free > 1MB) definieren kann, entzieht sich mir, das hat die IBM dann wohl wieder vergessen.
    ... die Variablengröße ist eigentlich Banane, der Speicher ist ja schon allociert und man kriegt einen Pointer darauf ins Programm und man kann dann ja ein Fenster drüberschieben, indem man jeweils die Länge der Fenstervar auf den based Pointer draufaddiert. Bleibt noch, dass man eventuell Einstellungen für die Kompatibilität des RPG Schinkens mit dem C Programm braucht und dass man an die Länge des allocierten Speichers drankommen muss, damit man nicht in Probleme rennt, wenn man drüber hinausgreift - habe ich aber auch nicht im Kopf und würde ich nachschauen, falls ich das wirklich mal brauche (und dann würde ich wahrscheinlich gleich bei der leistungsfähigeren Programmiersprache bleiben...
    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/

  5. #17
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Zitat Zitat von Fuerchau Beitrag anzeigen
    und dann auch nur im Full-Free > 1MB definieren kann
    Natürlich kann man auch in den Fixen D-Bestimmungen Variablen bis 16 MB definieren. Die Längenangabe wird mit Schlüssel-Wort LEN() definiert!

    Birgitta
    Birgitta Hauser

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

  6. #18
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Da nun mal ILERPG native nicht mehr als 16MB für eine einzelne Variable/DS zulässt, sich per Teraspace durchaus aber 4GB am Stück allokieren lässt, kommt man dann um Pointer nicht herum.
    Verwendet man SQL muss man mit LOB_LOCATOR arbeiten. Dies ist leider kein Pointer (10U) und man muss mit SUBSTR die Teildaten per SQL extrahieren, das geht auch vom bereits geladenen LOB_LOCATOR.
    Bis max. 16MB kann man per SQLTYPE(CLOB:16000000) die Daten auch direkt per Fetch auslesen.
    Man erhält dann eine DS mit 2 Feldern:
    D*X1 S SQLTYPE(CLOB:16000000)
    DX1 DS
    DX1_LEN 10U 0
    DX1_DATA A LEN(16000000)

    so dass man in X1_LEN direkt die Länge von X1_DATA bekommt und keine zusätzlichen Funktionsaufrufe benötigt.

    Ansonsten:
    1 DS/Variable kann max. 16MB groß werden, aber davon kann man durchaus mehrere definieren.
    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. #19
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Nachtrag:
    Da die Quelle ja wohl XML ist und XML meist in UTF-8 daherkommt, muss man beim Laden ins CLOB auf die CCSID achten. Sonst knallt es ggf. bei der XML-Auswertung.
    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

Similar Threads

  1. Inhalt CLOB Feld in IFS-Datei
    By alex61 in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 06-07-16, 11:51
  2. MONMSG: Inhalt abfragen
    By JoergHamacher in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 03-02-16, 11:47
  3. Parameter eines Programms ermitteln
    By Daechsle in forum IBM i Hauptforum
    Antworten: 14
    Letzter Beitrag: 18-06-15, 08:26
  4. OFFSET zwischen POINTERs
    By jsranko in forum IBM i Hauptforum
    Antworten: 12
    Letzter Beitrag: 26-02-15, 09:43
  5. aktuelles Statement in einem ILE-Programm eines fremden Jobs ermitteln
    By Ottersberg in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 04-09-14, 10:31

Tags for this Thread

Berechtigungen

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