-
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