PDA

View Full Version : Cobol: Move A-Feld to B-Feld (3:5) ??



Rafer19
21-05-09, 09:07
habe leider nichts in den Doku's gefunden!

A-Feld p(5) Value 12345
B-Feld x(10)

ich kann
Move A-Feld (1:3) to B-Feld --> (123 )

aber kann ich auch
Move A-Feld to B-Feld (3:5) --> ( 12345 )

oder sogar
Move A-Feld (1:3) to B-Feld (3:3) --> ( 123 )

Danke!

Fuerchau
21-05-09, 10:23
Alles ist möglich.
Durch die Dereferenzierung wird intern ein Redefine auf das Feld durchgeführt und der Move dann ausgeführt.
Du kannst auch Variablen statt Konstanten verwenden, Indexfehler nicht ausgeschlossen.

Pikachu
22-05-09, 09:10
Die Startposition und Längenangabe sind anscheinend Teil des Bezeichners (http://publib.boulder.ibm.com/infocenter/iadthelp/v7r0/topic/com.ibm.etools.iseries.langref.doc/c092539567.htm#HDRIDENTFR) selbst.

Fuerchau
22-05-09, 11:04
Das ist so nicht korrekt.
Die Dereferenzierung in COBOL entspricht dem %subst() in RPGLE.

"%SUBST(MyVar: MyPos: MyLen)" kann sowohl links als auch rechts der Zuweisung stehen.

In COBOL gibt es %SUBST erst gar nicht, das kann dann per "MyVar(MyPos: MyLen)" direkt verwendet werden.

Dies entspricht im Übrigen einer direkten MI-Übersetzung.

Pikachu
22-05-09, 12:26
Wenn man "Identifier" als "Bezeichner" übersetzt, dann stimmt's doch: Im Kapitel "Identifier" der ILE COBOL Sprachreferenz (http://publib.boulder.ibm.com/infocenter/iadthelp/v7r0/topic/com.ibm.etools.iseries.langref.doc/c092539567.htm#HDRIDENTFR) ist beschrieben, wie sich ein "Identifier" zusammensetzt und da steht das mit der Startposition und der Längenangabe.