PDA

View Full Version : Rechenoperation aus Alpha String



Seiten : [1] 2

labm
23-07-07, 09:35
Problem -> Ich möchte gerne eine Rechen operation variabelhalten und eine rechenoperation zu einem alpha string zusammenfügen um später damit rechnen zu können ist so was möglich ich bitte um vorschläge bzw. mögliche lösungen.


&L = Länge in mm z.B. 2100
&B = Breite in mm z.B. 21
&H = Stärke in mm z.B. 14
&VEP = Stück im Paket z.B. 10
Rechen OPERATION
&L x &B x &VEP / 1000000 = XXX,XX QM Deckfläche
Rechen OPERATION
&L x &B x &H x &VEP / 10000000 = X,XXX CBM * Volumen

operation wird als Alpha String zusammengestellt es mussl variabel definierbar bleiben *
(z.B. für flächen berechnung, volumen berechnung....) *
BEISPIEL
operation = '2100 x 121 x 10 / 1000000'

ERGEBNIS 2,54 Quadratmeter





[?]

kuempi von stein
23-07-07, 09:43
Hallo,

gib Er mal zwei konkrete Beispiele.

k.

Fuerchau
23-07-07, 09:51
Mit SQL ist fast alles möglich, allerdings benötigt man dazu eine Datei mit mindestens 1 Satz:

select meine_Formel from myfile

Das Ganze kann man dann per Prepare und Statement-Cursor jederzeit ausführen.

Z.B.:

select 12*3+4/3.123 as erg from myfile

labm
23-07-07, 09:52
siehe Beispiel oben Danke und gruss an alle

labm
23-07-07, 09:54
wie kann ich es im RPG anbinden oder als parameter übergeben??

labm
23-07-07, 10:00
1) ich erstelle mein String(rechenoperation im Alpha format 200 Stellen alpha)
2) schreibe in eine Datei

3) Dann wird SQL ausgeführt

wo bekomme ich ergebnis, wie kann ich es einfach anbinden??

kuempi von stein
23-07-07, 10:25
Mit SQL ist fast alles möglich, allerdings benötigt man dazu eine Datei mit mindestens 1 Satz:

select meine_Formel from myfile

......


Hello,
habe mal gesucht und gefunden.

Wie wäre es mit:
select meine_Formel from sysibm/sysdummy1
?
Das war doch so ne Zombiedatei die man für sowas missbrauchen kann?

Gruss

kuempi

Fuerchau
23-07-07, 10:26
d MyStmt s 512
d MyErg s 30p 9

c/exec sql set options commit=*none
c/end-exec
c/exec sql
c+ declare cursor mycursor for statement mystmt
c/end-exec

c eval mystmt = 'select ' + Formel + ' from myfile'
c/exec sql
c+ prepare mystmt for :mystmt
c/end-exec
c if sqlcode <> *zero
c* Fehler in Formel
c endif
c/exec sql
c+ open mycursor
c/end-exec
c/exec sql
c+ fetch mycursor into :myerg
c/end-exec
c/exec sql
c+ close mycursor
c/end-exec

Die Syntax der SQL-Befehle habe ich jetzt leider nicht genau im Kopf.

Die Pseudo-Datei mit 1 Satz benötigst du nur, damit überhaupt 1 Satz und somit dein Ergebnis berechnet wird.

labm
23-07-07, 13:03
0417.65 C eval formel = '2100 * 121 * 10 / 1000000' *
0417.68 c/exec sql set option commit=*none
0417.69 c/end-exec
0417.70 c/exec sql
0417.71 c+ declare mycursor cursor for mystmt
0417.72 c/end-exec
0417.73 c eval mystmt = 'select ' + %trim(Formel)
0417.74 c + ' from myfile'
0417.75 C*
0417.76 c/exec sql
0417.77 c+ prepare mystmt from :mystmt
0417.78 c/end-exec
0417.79 c* if sqlcode <> *zero
0417.80 c* Fehler in Formel
0417.81 c* endif
0417.82 c/exec sql
0417.83 c+ open mycursor
0417.84 c/end-exec
0417.85 c/exec sql
0417.86 c+ fetch mycursor into :myerg 0417.87 c/end-exec *
0417.88 c/exec sql *
0417.89 c+ close mycursor *
0417.90 c/end-exec *
0417.91 C z-add myerg win309 30 9 *

Wenn ich es so wie oben ausführe bekomme ich als ergebnis immer 0

bitte um hilfe:confused:

Fuerchau
23-07-07, 13:33
Du musst den SQLCOD auswerten !
Probiere den Select erst mal per STRSQL aus.

Hast du die Datei "myfile" mit 1 Satz auch angelegt ?
Das kannst du auch per CRTPF und UPDDTA, ansonsten per SQL mit CREATE TABLE und INSERT.