-
Hallo Fuerchau,
danke für die Antwort. Super, das man auch Hilfe erhält wenn es nicht um ein klassisches Problem geht.
Was ich mich frage, werden diese Prozeduren verwendet wie Methoden in Java. Ich versuche da ein Bezug herzustellen (evtl. ist das gar nicht so gut oder macht keinen Sinn??)).
Würde denn grundsätzlich folgendes gehen oder macht die Verwendung so Sinn (dirty Beispielcode):
main(start)
DCL-PROC start1;
name = 'testname';
write tt;
close TESTFILE;
END-PROC;
DCL-PROC start;
start1();
END-PROC;
--> Sprich: Prozeduren rufen andere Prozeduren auf (Programm intern), unabhängig ob ein Wert mit return zurückgegeben wird oder nicht.
In so einem Beispiel habe ich dann auch folgendes Problem, dadurch das ich die Datei schließe läuft es bei erneutem ausführen auf Fehler "Datei geschlossen".
Lasse ich das weg, kommt beim umwandeln die Warnung das die Datei geschlossen werden soll und der Job behält die Datei in Zugriff.
--> ISt das evtl. ein Beispiel wofür man Prozeduren auf keinen Fall nutzen sollte?
-
Meiner Meinung nach machen Prozeduren fast immer Sinn! Man muss nur wissen, wie sie sich verhalten. Deklarationen, die innerhalb von Prozeduren vorgenommen werden, sind lokal. Das heißt, wenn du innerhalb einer Procedure eine Datei deklarierst und öffnest, steht diese Datei nur lokal zur Verfügung. Eine andere Procedure kann diese Datei nicht nutzen. Sie müsste sie dann schon selber öffnen.
Du kannst eine Datei natürlich außerhalb der Procedure (also im globalen Bereich) öffnen. Dann steht sie allen Prozeduren zur Verfügung.
Dieter
-
Mit "außerhalb" sind F- und D-Bestimmungen vor der ersten Prozedur gemeint.
Diese Definitionen gelten dann als Global.
Wenn du also eine F-Bestimmung am Anfang hast wird diese automatisch geöffnet (außer eben bei USROPN).
Wenn du dann einen Close kodierst, kannst du nicht erwarten, dass die Datei der nächsten Prozedur wieder zur Verfügung steht.
Du kannst natürlich auch zwischen DCL-PROC und END-PROC Dateibestimmungen definieren. Diese sind dann lokal.
Und AutoOpen-Dateien bleiben natürlich offen, wenn du am Ende *INLR auf *OFF belässt.
Um das automatisch zu verhindern, dann musst du eine MAIN-Prozedur erstellen:
https://www.ibm.com/support/knowledg...sd/hmainkw.htm
Die hat dann keinen Zyklus und INLR wirkt nicht mehr.
-
Danke euch beiden, das hat mir für mein Verständnis sehr geholfen!!!
Eine Frage noch. Sobald ich die f bestimmung innnerhalb der Prozedur mache, bekomme ich beim kompilieren die Meldung das eine Ergebnisdatenstruktur benötigt wird und der Name der Variable nicht definiert ist. Gibt es an der Stelle auch noch was zu beachten?
Schönen Abend!
-
GM!
Schau dir auf Simon Hutchinsons Blog mal die beiden Blogs an.
Dort zeigt er recht anschaulich die Lösung deines Problems denn du musst wenn du die Tabelle lokal definierst eine DS angeben in welche du den Buffer liest.
http://www.rpgpgm.com/2016/03/defini...rocedures.html
http://www.rpgpgm.com/2016/03/defini...es-part-2.html
Oder auf meiner Git-Seite habe ich auch ein kleines Beispiel dazu:
https://github.com/prsbrc/Miscellane...Def_Proc.rpgle
Greets
-
Danke euch allen! Hat mir sehr geholfen.
Similar Threads
-
By Curious in forum IBM i Hauptforum
Antworten: 9
Letzter Beitrag: 01-02-18, 17:34
-
By Gutmann in forum IBM i Hauptforum
Antworten: 9
Letzter Beitrag: 04-08-17, 10:32
-
By iseries_user in forum NEWSboard Programmierung
Antworten: 14
Letzter Beitrag: 11-05-16, 10:13
-
By DEVJO in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 16-09-15, 13:14
-
By AnjaS in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 16-01-03, 09:18
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