irgendwie verstehe ich weder die Beschreibung, noch das Problem:
@LR: wirkt nur bei OPM (und dann ist ACTGRP uninteressant)
entfernt man das SETON LR, wird Mehrfachaufruf meist messbar schneller, Funktion kann sich aber ändern, weil bei Dateien neu positioniert wird etc.
@ACTGRP: für ILE ist das Pendant zu dieser Technik (verlassen mit LR) benamte ACTGRP und RCLACTGRP
@CLOSSQLCSR: SQL macht immer lazy close, man muss also zwischen close aus Programm und close aus Datenbanksicht unterscheiden; CLOSSQLCSR wirkt nur auf die Programmsicht (und das ist auch gut so!!!), das einzige, was die Datenbank (noch!!!) zum faktischen close zwingt ist ein disconnect. (Stichwort: caching) warum sich dafür soviele Leute dafür interessieren, ist mir schleierhaft...
@Problem: was stört an den offenen Dateien???
schneller kriegt man das Teil möglicherweise dadurch, dass man die Zwischendateien weglässt und das ganze in ein Statement packt (Stichwort: CTE)

D*B

Zitat Zitat von Robi Beitrag anzeigen
Hi,
ich habe hier ein SQLRPGLE Programm das nicht von uns ist.
Es ist ein Dienstprogramm und Wunder an Langsamkeit, daher habe ich mir mal die Source angesehen.

Es macht einige OVRDBF auf Ebene *job
und füllt mit div. dynamischen SQL's einige Dateien, um diese anschl. auszulesen und ein Ergebnis zu bringen.

Es wurde immer mit LR verlassen.
Ich habe nun das LR mal entfernt, und es ist deutlich schneller.
Aber ...
Je Aufruf sind die verwendeten Dateien neu geöffnet.

Wird dieses PGM vom Main Programm für 20 Datensätze aufgerufen, habe in 20 X die gleichen (4) Dateien geöffnet.

Wie kann ich das verhindern?

Ursprünglich lief es mit ACTGRP *caller, was *DFTACTGRP (OPM) war. Auch das versuchsweise setzen einer festen ACTGRP hat nix gebracht

Danke
Robi