PDA

View Full Version : Feld-Scan mit n-Variablen



GEA
04-04-11, 14:40
Hallo,

folgendes "Problemchen":
Unsere Artikel-Nr. sind 15A; beim Verarbeiten sollen bestimmte Artikel-Strukturen ausgeschlossen werden, wobei die Position sowie die Anzahl der variablen Felder immer wieder unterschiedlich sein können. Bisher habe ich das fest im Programm verankernt:
z.B.
if %substr(teilenr:1:5) = '30081' and
%substr(teilenr:7:1) = 'S'

Das ganze will/muss ich nun schnellstens über eine Datei lösen, in dem ich hier einfach die jeweilige Artikel-"Maske" eintragen will; z.B. '30081*S*' oder '30081_S_37%'. Das ganze soll in RGPLE funktionieren, nur irgendwie fehlt mit der nötige Kick. Meine ersten Ansätze waren der %SCAN, habe ich aber wieder verworfen. Am liebsten wäre mir ein Befehl, wo ich einfach die beiden Felder mittels einer "Maskenselektion" miteinander vergleichen könnte.
if feld-a = %maske(feld-b)... oder so ähnlich
if '300812S137905 = '30081*S*37%' oder
if '300812S137905 = '30081_S_37_____' oder...

Ich hoffe das verstanden wurde, wonach ich auf der Suche bin.


Mit kollegialem Gruße an alle RPG-Programmierer..

Peter

B.Hauser
04-04-11, 15:07
Verwende doch einfach den SQL Like (vorausgesetzt, die Platzhalter sind wie in SQL gesetzt, d.h. % beliebig viele Zeichen und _ genau 1 Zeichen:


/Exec SQL
Set :isFound = Case When :MyArtNr Like Trim(:MyCompare) Then '1'
Else '0' End;

If IsFound;
//Erfüllt - Mach was Du willst
EndIf;


Birgitta

GEA
04-04-11, 15:22
Hallo Birigitta,

besten Dank für die schnelle Rückantwort. Das war genau das, wonach ich gesucht habe. Ich arbeite schon lange mit SQL, mit SQLRPGLE-Programmen allerdings weniger, aber auch schon so diverse Erfahrung gesammelt, aber was mir föllig neu war, dass man diese Art von Abfragen, ohne auf einen SELECT, UPDATE oder der gleichen Bezug zu nehmen, einfach im Programm anwenden kann.

1000x Danke, sagt der Franke :)
Peter

cbe
05-04-11, 09:02
klasse Sache, Birgitta!

wenn ich überlege, dass ich das mal aufwendig als /copy in RPG programmiert hatte...

Allein für solche Tips lohnt sich dieses Forum 100 fach!

Christian