PDA

View Full Version : Ist es möglich



Seiten : 1 [2]

BenderD
10-03-10, 09:54
... das ist was ganz anderes, da gibt es bei meinen OpenSource Klamotten eine HASHTABLE, das ist ein Serviceprogramm das nach Art einer Java HashTable set und get Procedures für Namensvariablen hat. Schau dir das mal an...

D*B


Genau darum gehts mir.

Es wird in 1000 (ca.) Programmen der LDA gesetzt, ausgelesen, usw. und zwar immer an unterschiedliche Positionen verschiedene Werte.
Dies möchte ich nun über einen Service machen, der sämtliche Funktionen um den LDA übernimmt. Um eventuelle Änderungen am LDA dann zentral zu haben und nicht mehr in diversen Programmen nachzuziehen, was uns derzeit einige dringende Änderungen blockiert.
Um dann irgendwann einmal den LDA komplett abzulösen.

B.Hauser
10-03-10, 09:57
Anstatt einer LDA, einer anderen Dataarea oder eines Userspaces, kann man auch folgendes machen:

Eine Variable/Datenstruktur in einer Quelle global definieren. Die Werte können nur über eine exportierte Prozedur SETMYDS gesetzt werden und über GETMYDS ermittelt werden. Damit kann für jede Konstellation eine eigene Variable/Datenstruktur geschaffen werden, die von allen Programmen und Prozeduren verwendet werden kann. Das Service-Programm sollte in einer eigenen/benannten Aktivierungsgruppe laufen, damit alle Programme/Prozeduren innerhalb des Jobs zugreifen können.

Birgitta

BenderD
10-03-10, 09:57
... das ginge bereits mit einem Serviceprogramm, das diese Struktur definiert, im CL mit Set (myLDA) befüllt wird und dann an anderer Stelle mit get() die Daten holt; die in anderem Posting angesprochene HashTable ist da allerdings wesentlich flexibler, da diese keine Vereinheitlichung der Struktur voraussetzt und leichter erweiterbar ist.

D*B


Zur Erklärung:

Bisher wird in allen möglichen CL-Programmen der LDA genutzt um zusätzliche Parameter an die Programme, z.B. den Inhalt eines Displays.....oder Job-Informationen, u.a. auch ein 1stelliger Wert, der in jedem Programm benötigt wird.
Wenn wir jetzt aus jedem Programm den Kram ausbauen, oder umbauen, würden wir mit allen Mann einige Zeit zu tun haben, zumal andere Projekte dann liegen bleiben würden.
Ich möchte jetzt einen Service bauen, der den LDA für das CL-Programm "befüllt" um eine Struktur in den LDA zu bekommen. Es sind 69 verschiedene Werte die dort eingetragen werden, je nach Programm mal 5, mal 10, mal 1, mal 2....... und teilweise wird Wert A an Position 15 gesetzt und aus einem anderen Programm an Position 25, usw. usw........
Hier möchte ich einheitliche Strukturen schaffen und das alles über einen Service erledigen, der dann nach SNDRCVF aufgerufen wird und den LDA belegt, der dann von nachgelagerten Programm-Aufrufen ausgelesen werden kann.

cbe
10-03-10, 09:59
Zur Erklärung:

Bisher wird in allen möglichen CL-Programmen der LDA genutzt um zusätzliche Parameter an die Programme, z.B. den Inhalt eines Displays.....oder Job-Informationen, u.a. auch ein 1stelliger Wert, der in jedem Programm benötigt wird.
Wenn wir jetzt aus jedem Programm den Kram ausbauen, oder umbauen, würden wir mit allen Mann einige Zeit zu tun haben, zumal andere Projekte dann liegen bleiben würden.
Ich möchte jetzt einen Service bauen, der den LDA für das CL-Programm "befüllt" um eine Struktur in den LDA zu bekommen. Es sind 69 verschiedene Werte die dort eingetragen werden, je nach Programm mal 5, mal 10, mal 1, mal 2....... und teilweise wird Wert A an Position 15 gesetzt und aus einem anderen Programm an Position 25, usw. usw........
Hier möchte ich einheitliche Strukturen schaffen und das alles über einen Service erledigen, der dann nach SNDRCVF aufgerufen wird und den LDA belegt, der dann von nachgelagerten Programm-Aufrufen ausgelesen werden kann.
Du könntest eine Handvoll CL-Programme erstellen, die die übergeben Parameter an die korrekte Stelle in der LDA schreiben. Anstelle der direkten LDA-Verwendung stünde dann ein Call in der Anwendung.
Das kostet rel. wenig Aufwand und kann sukkzessive gemacht werden.

Spateneder
10-03-10, 10:54
Du könntest eine Handvoll CL-Programme erstellen, die die übergeben Parameter an die korrekte Stelle in der LDA schreiben.
Ich finde eine starre Struktur für die LDA eher hinderlich. Ich würde ein flexibles Schema aufbauen, wie z.B.:
Val1:XYZ;Val5:123;Val17:Abcd;
Dazu ein paar Service-Funktionen nach dem Muster MyVar=LdaGet(Val5), LdaPut(Val1:MyVar) usw.
Die maximal 1024 Zeichen sind schnell geparst oder neu aufgebaut und auf diese Weise kannst Du Dir ein System aufbauen, das wesentlich mehr Möglichkeiten bietet als eine vorgegebene Struktur.

BenderD
10-03-10, 12:22
... dieser Aufruf muss dann schon in geeigneter Form die Informationen enthalten, die global verfügbar sein sollen. Von dem Service aus ist selbst dann nicht an die Informationen dran zu kommen, wenn die Namen der Variablen und deren Bedeutung konsistent wäre - in letzterem Fall könnte man allenfalls noch mit in das CL reingenerierten Code nochwas ausrichten.

D*B



Hier möchte ich einheitliche Strukturen schaffen und das alles über einen Service erledigen, der dann nach SNDRCVF aufgerufen wird und den LDA belegt, der dann von nachgelagerten Programm-Aufrufen ausgelesen werden kann.

DEVJO
11-03-10, 11:03
Ich werde das Ergebniss posten, wenn fertig :rolleyes: