-
problem bei Call übergabe parameter numerisch gepackt
Hallo,
ich muss per CALL LIB/PGM (parm1 parm2 ...) programm aufrufen
das 2 parameter ist 8,0 numerisch gepackt
ich kann es mit CALL LIB/PGM (parm1 .x'01234567F' ...) aufrufen.
Die frage ob es irgendwie automatisch geht es umzusetzen
z. B.
30101134 --- > zu x'030101134F'
ich brauche die funktion umsetzung zahlen zu x'0123......
gibt es dazu built in funktion oder änliches oder beispiel PGM für die umsetzung.
-
Hallo
Habe das so gelöst:
CallPgm = 'call pgm(Prog) parm(X''0' + %editc(Feld:'X') + 'F'')'
mfg Chris
-
Das problem ist:
ich habe eine Zeichen folge
z.B. 'blabla12345678'
davon muss ich von stelle 7, 8 stellen extrahieren. dann ruffe per call pgm(xx) mit dieser parameter die länge dabei ist variabel
Aufgabenstellung:
'blabla12345678' von 7 stelle, 8 stellen lang
oder
blabla1234567' von 7 stelle, 7 stellen lang
Die übergabe mit %editc wird nicht funktionieren, da länge bekant ist bleibt aber variabel.
mfg
-
Hallo
Weißt du Beginn und Länge der Variable?
Dann mach einfach:
CallPgm = 'call pgm(Prog) parm(X''0' + %subst(Feld:Beginn:Länge) + 'F'')'
PS: bei gerader Anzahl der Länge musst du gegebenenfalls noch eine führende 0 einfügen.
Oder musst du Beginn und Länge der Variablen auch ermitteln?
mfg Chris
-
Um genau zu sagen:
von ist bekannt
Zeichen folge
'blablaAF/123456/15blabla'
was ich davon weiss ist di start position
i diesem fall 10 länge 7 vobei nur 6 stellenim diesem fall relevant sind dass heisst am ende muss es so aussehen x'0123456F' dal als übergabe 7,0 erwartet wird.
-
dann muß es so aussehen:
CallPgm = 'call pgm(Prog) parm(X''0' + %subst(Feld:10:6) + 'F'')'
-
wie es aussehen muss weiß ich. die frage wie kann mann es automatisieren und dabei veriabel bleiben.
unterprogramm mit übergabe parameter und rückgabe wert aufbereitet im gepacten hexa format.
übergabe parameter
parm 1 --> 123456
parm 2 ---> länge rückgabe 7,0
parm3 --> rückgabe wert x'0123456F'
oder
parm 1 --> 135,52
parm 2 ---> länge rückgabe 11,2
parm3 --> rückgabe wert x'00000013522F'
-
Definiere doch einfach ein Parameterfeld mit
d MyNum 8p 0
d MyRet 8p 0
im Code ermittle das erst numerische Zeichen und wandle um mit:
eval MyNum = %dec(substr(MyAlpha:sPos:rLen):8:0)
sPos = Startposition
rLen = Restlänge
Dann rufe das Programm einfach mit
CALL 'MYPROG'
PARM PARM1
PARM MyNum
PARM MyRet
auf.
Wenn du MyRet wieder alpha habe willst:
a) %char(MyRet) = linksbündig ohne Vornumm
b) %editc(MyRet:'X') = mit Vornullen
Similar Threads
-
By Stoeberl in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 10-01-07, 10:58
-
By hh-mi in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 15-11-06, 12:23
-
By chrhe in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 01-11-06, 14:55
-
By ChrisX in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 11-10-06, 15:31
-
By Flappes in forum IBM i Hauptforum
Antworten: 0
Letzter Beitrag: 06-10-06, 08:39
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