PDA

View Full Version : altes rpg, in einem string was tauschen



dibe
18-09-14, 13:29
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

BenderD
18-09-14, 13:39
MOVEA ist den Freund (schauder!!!)

D*B

mk
18-09-14, 13:40
oder auch ein MOVE oder MOVEL
und SUBST gibt es auch im old RPG

B.Hauser
18-09-14, 14:13
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

dibe
18-09-14, 14:48
Das mit dem SQL find ich am besten aber die Programmierer sagen das es kein SQLRPT gibt.
Aber movea hilft
Danke
Dietlinde Beck

malzusrex
18-09-14, 16:08
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

dibe
18-09-14, 17:10
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

malzusrex
18-09-14, 17:41
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..

ExAzubi
19-09-14, 07:11
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 ;)