-
eigene Prozeduren in ILE Cobol?
Hallo!
Ist es eigentlich möglich in ILE Cobol eigene Prozeduren/Funktionen zu schreiben? Mit Ein- und Ausgabeparametern? So wie in ILE RPG?
Habe mal in der Literatur gesucht, aber nichts gefunden. Sollte es wirklich nicht gehen??
Viele Grüße
Reiner
-
Natürlich geht auch das !
Jedes Modul in eine eigene Quelle.
PROCEDURE DIVISION [using Parm1 parm2 ...] [returning Value].
Durch das "Returning" wird die Funktion deklariert.
Der Aufruf ist in COBOL leider etwas anders, da es keine Funktionsdeklaration so gibt:
CALL "Program" [using Parm1 Parm2 ...] [returning Value].
Auf gleichem Wege sind übrigens alle C-Funktionen aus COBOL aufrufbar.
Durch
IDENTIFICAION DIVISION.
PROGRAM-ID. MYPROG is recursive.
kann zum 1. Mal auch COBOL rekursiv aufgerufen werden !!!
Man Kann sowohl Variablen exportieren als auch auf exportierte zugreifen.
usw.
usw.
Nachzulesen in:
http://publib.boulder.ibm.com/iserie...s/c0925403.pdf
http://publib.boulder.ibm.com/iserie...s/c0925393.pdf
http://publib.boulder.ibm.com/iserie...s/x0913173.pdf
-
Hallo,
schönen Dank Herr Fürchau für die Hinweise.
Kleines Problem. Habe Funktion T2 wie beschrieben erstellt und mit crtcblmod umgewandelt. Muß diese Funktion auch in ein Binderverzeichnis.
Aufrufendes Programm T1 macht Probleme beim Umwandeln mit crtbndcbl. Siehe Liste:
000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. T1.
000300*------------------------------------
000400 DATA DIVISION.
000500*------------------------------------
000600 WORKING-STORAGE SECTION.
000700 01 i pic 9.
000800 01 a pic x.
000900*------------------------------------
001000 PROCEDURE DIVISION.
001100 HP1.
001200 move 1 to i
001300 call "T2" using i returning a
001400 goback.
* 9 ID: LNC2762 BEW.STUFE 30 FOLGENR. 001300
Nachricht . . . : Phrase GIVING/RETURNING der Anweisung CALL ist für
LINKAGE-Angabe PROGRAM nicht zulässig.
Wo liegt denn hier das Problem? Bei der Funktion T2 oder bei T1?
Danke für Hilfe.
Schöne Grüße
Reiner
-
Entweder ein Binderverzeichnis erstellen oder jedes Modul mit CRTCBLMOD erstellen und anschließend per CRTPGM die Module durch Einzelangabe "binden", dabei allerdings nicht vergessen, das Start-Modul zu benennen (meistens das 1.).
Da der CRTBNDCBL das Programm T2 nicht findet (fehlendes Binderverzeichnis) geht er von einem Programm und nicht von einer Funktion aus. Bei Programmen ist aber "returning" nicht erlaubt.
Bei kleinen Programmen kann man ja auf Binderverzeichnisse verzichten. Bei größeren sollte man diese jedoch verwenden, es vereinfacht das Binden, insbesonders wenn man Funktionen/Module in Service-Pgm'e auslagert gehts nicht mehr anders.
Hinweis:
Da der Compiler generell nicht zwischen internen oder externen Call's unterscheidet ist die Fehlersuche natürlich etwas schwerer wenn kein "returning" verwendet wird.
Erst zur Laufzeit wird ggf. ein Tippfehler im Modulnamen bemerkt, da das Modul zur Erstellzeit nicht als statischer Call erkannt wird (Aufruf eines Moduls) und daher von einem dynamischen Call ausgeht.
Übrigens:
Man kann auch mehrere Module in eine Quelle stecken (ich finde nur nicht mehr wo es stand). Vorteil ist hier ggf. dass die anderen Module nach aussen nicht sichtbar sind sondern nur vom 1. Modul aufgerufen werden können (wofür immer das auch gut sein mag).
-
jetzt geht's
Hallo,
jetzt muß ich mir doch noch selbst eine Antwort schreiben.
Eine wichtige Sache haben Sie mir nicht geschrieben Herr Fürchau.
Nämlich, daß ich Prozeduren mit 'call procedure "name" using ... ' aufrufen muß. Dieses war mir
noch nicht bekannt. Jetzt funktioniert alles.
Grüße
Reiner
-
Ok, das habe ich leider übersehen.
Similar Threads
-
By rebe in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 08-02-06, 15:50
-
By MikRom in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 15-08-05, 09:06
-
By rebe in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 24-03-05, 14:36
-
By rebe in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 16-04-04, 09:29
-
By rebe in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 07-09-01, 13:55
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