PDA

View Full Version : free rpg CALLB



Seiten : [1] 2

loeweadolf
20-02-04, 17:16
01. Wie ist die Syntax für CALLB mit Parameter-Übergabe
(PLIST) im free rpg.

02. Gibt es für PLIST Ersatz im Free RPG ?


Vielen Dank im voraus für Antworten.

mfg. Ludger :rolleyes:

Fuerchau
20-02-04, 17:20
Schau mal ein paar Einträge früher (Ersatz für *ENTRY).
Genau dies ist auch hier die Lösung.

Also:

Prototyp definieren

und CALLP verwenden.

loeweadolf
20-02-04, 22:24
Hallo Baldur,

nach meinigen bisherigen Kenntnissen kann man in RPG IV
im festen Format folgendes verwenden:

CALL (Aufruf eines anderen Programmes)
CALLB (Aufruf statisch gebundene Module)
CALLP (Aufruf von Prozeduren / Service-Programmen,
die dynamisch beim 1. Aufruf gebunden werden)

Gibt es im freien Format kein CALLB und CALL mehr, sondern
nur noch CALLP ?

mfg. Ludger

:rolleyes:

Fuerchau
21-02-04, 07:39
JA !

Aber du kannst die Call's ja in kleine Sub-Routinen einbauen und rufst diese im Free-Format mittels "exsr MyCall" auf.

loeweadolf
21-02-04, 11:09
Gibts es denn bei der Verwendung von CALLP im Free RPG Unterschiede zu beachten, abhängig davon, ob es sich im Festen Format um CALLB oder CALLP gehandelt hat. ?

mfg. Ludger :rolleyes:

BenderD
21-02-04, 11:26
Hallo,

CALLP ist eine reine Compileranweisung und meint Call mit Prototyp. Im Prototyp steht dann ob es sich um einen CALL (EXTPGM) oder CALLB (EXTPROC) handelt generiert wird dann ein dynamischer call wie bei CALL oder ein gebundener call wie bei CALLB.
Bei der Verwendung von Prototypen erweitern sich dann die Möglichkieten für die Aufrufe weitere Angaben zu machen und es kommt die Möglichkeit hinzu das ganze freeformat zu machen und Rückgabewerte zu verwenden.

@Baldur: wenn schon ILE, warum dann Subroutine? Mir sind die Subroutines genauso ausgegangen, wie die Bezugszahlen und CALL und CALLB und LOOKUP und MOVE und READ und CHAIN und sonstiger Record Level Access.

mfg

Dieter Bender

loeweadolf
21-02-04, 11:40
Hallo Baldur und Dieter,

danke für Eure Mühe.

mfg Ludger :rolleyes:

loeweadolf
22-02-04, 00:22
Ich habe einen ersten Versuch gemacht mit CALLP in Free Format
für ein statisch gebundenes Programm.


D BDA020PR PR extproc('BDA020PR')
D 3 0 Pers-Nr.
D 3 0 Arbeitsgang-Nr.
D 2 0 Produktgruppe
D 25 Personal-Name
D 25 Arbeitsgang-Text
D 25 Produktgruppen-Text
D* - - - - - - - -
D parmPers 3 0
D parmAgng 3 0
D parmPrgr 2 0
D parmPerstx 25
D parmAgngtx 25
D parmPrgrtx 25

callP BDA020PR (parmPers:parmAgng:parmPrgr:parmPersTx:
parmAgngTx:parmPrgrtx);


Es wird beim Compilieren des Moduls dann folgender Fehler gemeldet.:

*RNF5410 30 1 Der Prototyp für den Aufruf ist nicht definiert.


Was habe ich vergessen ??

mfg. Ludger :rolleyes:

loeweadolf
22-02-04, 00:25
Der Doppelpunkt : mit anschl. P bewirkt wohl ein Smilie ?!

BenderD
22-02-04, 09:08
Hallo Ludger,

wenn es sich nicht um etwa Code (sprich aus dem Gedächtnis) handlet, dann müssen da noch mehr Fehler sein; die Deklaration des Prototyps ist bei den Parametern Fehlerhaft. Und das sieht mir nach Folgefehler eines anderen Fehlers aus.
Es wäre sinnvoll als erstes mal Smileys abzustellen, die nerven im Code nur (mich jedenfalls). Als zweites bitte den Original Code ausschneiden und alle Fehler mit zugehörigen Bezügen aus der Wandlungsliste zu posten, aber dann findest Du es wahrscheinlich schon selber.
Im Übrigen sind sprechende Namen nicht verboten und verbessern die Lesbarkeit des Codes für Außenstehende immens.

mfg

Dieter Bender