Hallo, sysopr!

Am elegantesten geht das, wenn man es wie im Betriebssystem macht - mit einem UIM-Listpanel (z.B. WRKSPLF).

Beispiele finden sich in der QUSRTOOL: STRABU - Start Address Book Utility.

Wenn das zu abgefahren ist, dann mehrere Subfiles parallel schalten und mit F11 vorwärts springen, mit F10 rückwärts.

1. Die Daten passend in mehrere Subfiles schreiben.

2. Im DDS angeben:
R CTL01
A RTNCSRLOC(&SFLCSRFMT &SFLCSRFLD)
A SFLCSRFMT 10A H
A SFLCSRFLD 10A H
R CTL02
A RTNCSRLOC(&SFLCSRFMT &SFLCSRFLD)
A SFLCSRFMT 10A H
A SFLCSRFLD 10A H
R CTL03
A RTNCSRLOC(&SFLCSRFMT &SFLCSRFLD)
A SFLCSRFMT 10A H
A SFLCSRFLD 10A H


3. Im RPG angeben:
f sfile(sfl01:sflnbr01)
f sfille(sfl02:sflnbr02)
f sfile(sfl03:sflnbr03)

dou *inlr;
if (sflcsrfmt = 'SFL03' or sflcsrfmt = 'CTL03') and not *in10 and not *in11 or (sflcsrfmt = 'SFL02' or sflcsrfmt = 'CTL02') and *in11 or (sflcsrfmt = 'SFL01' or sflcsrfmt = 'CTL01') and *in10;
exfmt ctl03;
elseif (sflcsrfmt = 'SFL02' or sflcsrfmt = 'CTL02') and not *in10 and not *in11 or (sflcsrfmt = 'SFL01' or sflcsrfmt = 'CTL01') and *in11 or (sflcsrfmt = 'SFL03' or sflcsrfmt = 'CTL03') and *in10;
exfmt ctl02;
else;
exfmt ctl01;
endif;
select;
when *in03;
exsr sr_exit;
when *in10;
iter;
when *in11;
iter;
endsl;
enddo;

MfG
Thomas J. Fuchs