Servus,
ich muss nach langer Zeit wider ein Programm schreiben welches eine Subfile enthält....
Nun laufe ich aber auf ein Problem und habe keine Ahnung warum das Problem auftritt.
Wäre super wenn mir hier einer Input liefern kann was schief läuft, damit ich mit dem Programm weiterkomme.
Folgende Prozeduren dürften von interesse sein:
Code:
dcl-s rrn zoned(4) inz(1);
dcl-proc Main;
dcl-pi Main;
auftragsnummer like(auftragsnummer_t) const;
end-pi;
dcl-ds Header likeds(Header_t);
dcl-ds Geraete likeds(Geraete_t) dim(99);
clear Header;
clear Geraete;
GetHeaderData(auftragsnummer:Header);
SetHeader(Header);
dow (key <> F12);
InitSubfile();
GetGeraeteData(Header.lgnrNummer:Header.nutzeinheit:Geraete);
SetSubFile(Geraete);
exfmt geraeteCtl;
if (key = ENTER);
dou %eof;
readc geraetesfl;
if (not %eof);
if (io_auswahl = 'X' or io_auswahl = 'x');
WriteDatabase(Header:o_laufendeNummer:
o_geraetenummer:o_seriennummer:h_gId:h_messstellenId);
endif;
endif;
enddo;
endif;
enddo;
end-proc;
Code:
dcl-proc InitSubfile;
reset rrn;
Subfile.wipe = *on;
Subfile.display = *off;
Subfile.end = *off;
write GERAETECTL;
Subfile.wipe = *off;
Subfile.display = *on;
Subfile.end = *on;
end-proc;
Code:
dcl-proc SetSubFile;
dcl-pi SetSubFile;
Geraete likeds(Geraete_t) dim(99);
end-pi;
dow (Geraete(rrn).geraeteNummer <> '');
io_auswahl = '';
o_geraetetyp = Geraete(rrn).geraeteTyp;
o_seriennummer = Geraete(rrn).serienNummer;
o_laufendenummer = Geraete(rrn).laufendeNummer;
o_raum = Geraete(rrn).raum;
o_geraetenummer = Geraete(rrn).geraeteNummer;
h_gid = Geraete(rrn).geraeteId;
h_messstellenid = Geraete(rrn).messstellenId;
write geraetesfl;
rrn += 1;
enddo;
end-proc;
In der letzten Prozedur bekomme ich beim write den Fehler geworfen. Das passiert immer wenn er die Subfile neu bauen soll, aber ich initialisiere die Subfile davor ja in der Main Prozedur neu, so klappt es ja auch beim ersten Aufbau, warum also nicht beim zweiten?
Bin für jede Hilfe dankbar.
Bookmarks