View Full Version : altes rpg, in einem string was tauschen
Guten Tag.
wie kan ich in 'altem' RPG in einem Strig einen Wert tauschen?
also
eval Ergebnis = %subst(basis:1:zahl) + variable + %subst(basis:zahl+laenge)
als nicht ILE, nicht Free
Danke
MOVEA ist den Freund (schauder!!!)
D*B
oder auch ein MOVE oder MOVEL
und SUBST gibt es auch im old RPG
Oder versuch embedded SQL zu verwenden. Auch das lässt sich in altes RPGIII einbinden.
C/EXEC SQL
C+ SET :ERGEBNIS = SUBSTR(:BASIS, 1, :ZAHL) CONCAT :VARIABLE CONCAT
C+ SUBSTR(:BASIS, :ZAHL + :LAENGE)
C/END-EXEC
Birgitta
Das mit dem SQL find ich am besten aber die Programmierer sagen das es kein SQLRPT gibt.
Aber movea hilft
Danke
Dietlinde Beck
Ehmm,
Lochkarten müsst ihr aber nicht mehr stanzen... oder ?
;-)
E ARA 16 1
E ARB 20 1
*
C MOVEL'ABCDEFGH'TEXT 16
C MOVE 'IJKLMNOP'TEXT
C MOVE 'XXXX' TEXT4 4
*
C MOVEATEXT ARA
C MOVEAARA HILFE 8
C MOVEAHILFE ARB
C MOVEATEXT4 ARB,9
C MOVEAARA,9 HILFE
C MOVEAHILFE ARB,13
C MOVEAARB TEXT20 20
*
C SETON LR
Am Anfang steht in TEXT "ABCDEFGHIJKLMNOP".
Dieser wird bei dann bei H und I geteilt, und 4* das "X" eingefügt.
Am Ende steht in TEXT20 'ABCDEFGHXXXXIJKLMNOP'
Alt genug ??
Gruß
Ronald
Wieso Lochkarten?
Wir haben die alten Programme auf Streifen!
Danke für das Beispiel. Das 'können' wir auch.
Unser Problem ist, das wir halt nicht wissen WO im String wir was einfügen sollen. Das suchen wir vorher mit scan. Wir haben, auf anraten von Robi, das nun in ein ILE Pgm ausgelagert was wir rufen.
Danke
DB
ILE ist natürlich besser,
im 36er-Code geht es auch. Das mit dem nicht genau wissen wo und suchen war mir so nicht ersichtlich.
E ARA 16 1
E ARB 20 1
*
C MOVEL'ABCDEFGH'TEXT 16
C MOVE 'IJKLMNOP'TEXT
C MOVE 'XXXX' TEXT4 4
*
C MOVEATEXT ARA
C 'DE' SCAN TEXT P 20
C P ADD 1 BIS 20
C 1 DO BIS I 20
C MOVEAARA,I HILFE 1
C MOVEAHILFE ARB,I
C ENDDO
C MOVEATEXT4 ARB,I
C I ADD 4 P
C MOVEAARA,I ARB,P
C MOVEAARB TEXT20 20
*
C SETON LR
In diesem Beispiel wird nach 'DE' in TEXT gesucht.
Nach dem DE wird wieder die 4*XXXX eingefügt
Gruß
Ronald
gar nicht mehr so einfach in dem alten Code zu denken..
Es gibt auch in RPT den befehl SUBST
C LEN SUBST BASIS ZZTEXT
C CHECKR VARIAB L1
C CAT VARIAB:0 ZZTEXT
C SUBST BASIS:L1 ZZTXT1
C CAT ZZTXT1:0 ZZTEXT
So sollte es gehen :-)
I Love The Basics ;)