-
 Zitat von Fuerchau
Übrigens was auch geht:
Ich habe mal die externe DS als interne DS mit allen Felder und Anpassung des Datumformates durchgeführt. Die Schreiblese-Routinen berücksichtigen nun das definierte Datumformat.
Vielleicht ist das ja eine Lösung in dem ihr alle Schnittstellen statt als "E DS" als DS anlegt und per COPY einbindet. Der Aufwand ist ggf. geringer da man die DS ja aus einer Umwandlungsliste herauskopieren kann.
Bei Ergänzungen mit neuen Feldern muss man dann halt die DS anpassen.
Das ginge wahrscheinlich, aber es würde zu hohen Aufwand bedeutet. Wir suchen ja nach einer allgemeingültigen Lösung für tausende Dateien. Ggf. müssten wir alle Datumsparameter aller Programme prüfen und sie auf const umstellen. Wäre natürlich auch ein Heidenaufwand. Außerdem ist das natürlich leichter gesagt als getan. Man müsste dann an manchen Stellen auch die Logik verändern.
-
Dann gibts für euch auch nur die Lösung bei DDS zu bleiben.
Wenn ihr vernünftig mit Copystrecken gearbeitet habt und auch Prototypen entsprechend in Copy's stehen sehe ich da nur ein geringeres Problem. Ansonsten wird hier wirklich Chaos ausbrechen.
Vielleicht könnt ihr euch ja auch für die interne DS als Copy einen Generator bauen.
-
 Zitat von dschroeder
Wir überlegen aber, alle DDS beschriebenen Dateien auf DDL umzustellen.
... was soll das für einen Sinn machen? Das Problem ist nicht DDS oder DDL, das Problem ist RLA oder SQL!!!
D*B
-
Da muss ich Dieter auch zustimmen. Das Datumformat ist leider ein kritischer KO-Punkt für solche Vorhaben. Und was ist denn tatsächlich damit gewonnen?
Außer der Indexblockung von 64-KB statt 4KB gibt es keinen Unterschied und von der Performance her gibt es auch eher marginale wenn überhaupt messbare Unterschiede. REUSEDLT(*YES) kann man auch schon bei DDS einsetzen.
Da ist es schon gravierender VARLEN-Felder in den Satz zu definieren an Stelle dies dem Zufall zu überlassen, denn im Satzaufbau ändert sich dadurch nichts, aber man spart echte IO's.
Oder bei SQL-Zugriffen vernünftige Indexanalyse oder Statementanalyse zu betreiben.
-
Im Moment sehe ich für uns auch keine Möglichkeit der totalen Umstellung. Zur Zeit fahren wir die Strategie, neue Tabellen mit DDL zu beschreiben. Wir nutzen dann z.B. autogenerated Keys. Unsere Dateizugriffe machen wir seit längerem bei neuen Programmen nur noch per SQL. Bei Programmänderungen werden oft auch alte Programme auf embedded SQL umgestellt. Es ist eben nur so, dass ein Datumsfeld der neuen DDL beschriebenen Tabellen ja vielleicht auch mal an ein "altes" Programm per Referenz übergeben wird. Dann knallt es. Es ist sehr unschön, dass jeder Programmierer jetzt im Hinterkopf haben muss, wie die Tabellenstruktur beschrieben ist (DDS oder DDL). Bisher habe ich nicht gedacht, dass das einen Unterschied macht.
Wir setzen häufig Tools ein, um Datensätze (also extern beschriebene Datenstrukturen) zu lesen und zu schreiben. Durch die Namenskonventionen weiß ich genau, wie ein bestimmtes Tool für eine Datei heißt, bzw. ich kann mir den Toolnamen aus unserem Repository heraussuchen. Die Dateien gucken wir uns oft mit SQL an, oder mit einem Browsertool, das uns die Strukturen auflistet oder wir nutzem einfach die Kontexthilfe mit Rdi (Strg + Space), um die Felder einer Datenstruktur angezeigt zu bekommen. Diese Information reichts jetzt eigentlich nicht mehr. Eigentlich müsste ich immer, wenn ich mit einem Datumsfeld hantiere, konkret in die Dateibeschreibung schauen, um nachzusehen, ob die Datei mit DDS oder mit DDL beschrieben ist.
Das finde ich so unschön.
-
Wenn du mit SQL umgehst, ist das nicht relevant wie die Datei definiert ist, sondern wie du die Hostvariablen deklarierst. Wenn du allerdings Hostvariablen wiederum als externe DS definierst stehst du vor dem selben Problem.
Das selbe gilt auch für die schönen Prototypen, die ausschließlich zur Compilezeit geprüft werden. Eine Laufzeitprüfung, die ggf. Typsicher wäre, erfolgt nun mal nicht.
Anscheinend erfolgt auch keine Prüfung des Prototyps bei abweichendem Datumformat. Hier erfolgt generell ein ausschließlicher Felddefinitionsvergleich ohne Datumsformat.
Da kann man sich dann gar nicht sicher sein, dass sowas dann gutgeht.
Auch finde ich es (persönlich) seltsam, Schnittstellen auf Basis EUR-Date zu definieren wo man doch schon seit Jahrzehnten weiß, dass nur ein ISO-Date immer und überall kompatibel ist.
Da hilft auch alles Jammern nicht. Du musst halt den schweren Weg der Vorabanalyse gehen und zumindest was die externen (unbeeinflussbaren) Schnittstellen angeht, hier die Prototypen auf CONST umzustellen.
-
 Zitat von dschroeder
Zur Zeit fahren wir die Strategie, neue Tabellen mit DDL zu beschreiben. Wir nutzen dann z.B. autogenerated Keys. Unsere Dateizugriffe machen wir seit längerem bei neuen Programmen nur noch per SQL. Bei Programmänderungen werden oft auch alte Programme auf embedded SQL umgestellt.
Bis dahin bin ich ja völlig bei Dir. Was mir fehlt ist:
- neue Funktionen Parameter nur noch per VALUE (oder CONST, falls Programm oder als Implementierung einer externen SQL Function.
- Bei Änderung von Funktionen neue Schnittstelle (VALUE) zufügen.
- bei Änderung von Verwendung in Programmen auf VALUE umhängen.
- bei partiellem Redesign Datenbank: View Layer zur Entkoppelung einziehen
- bei Neuverwendung oder Änderung keine Zugriffe mehr auf das physical Layer.
-- jetzt kann man das physical Layer auf SQL DDL umstellen
Strategie hierbei, alte Welt zurückdrängen, um Freiheitsgrade im Datenbank Redesign durch Entkoppelung zu gewinnen. Wenn für eine Datei/Funktion die alte Welt nur noch marginal gebraucht wird, kann man (muss man aber nicht) rückbauen.
D*B,
der sich alle Probleme, die man nicht haben muss, gerne vom Hals hält!
PS: @Baldur: Datums Parameter per value oder const werden immer passend gemacht - und Übergabe per Reference ist in > 95% aller Fälle ein Kunstfehler.
-
Ich muss zugeben, die Ideen von D*B klingen vernünftig. Ich habe ja bereits gesagt, dass ich die Sache mit dem View Layer bei uns mal anspreche. Die anderen Punkte nehme ich dann auch gleich mit auf.
Der Punkt mit den 95% Kunstfehler bei Referenz ist aus meiner Sicht richtig, wenn man die alten Anwendungen aus heutiger Sicht betrachtet. Vor 20 Jahren hat man aber die meisten Programme als normale Programme (also Nicht-Serviceprogramme) geschrieben (Ich weiß gar nicht, ob damals Serviceprogramme schon gingen). Und da hat man einfach PARM-Anweisungen verwendet. Das war der Standard. Und das sind nun mal Calls per Reference. Ich weiß nicht, ob man damals die Parameter von "normalen" Programmen als const definieren konnte. Ich habe das jedenfalls nirgendwo gesehen.
-
Die ILE-Integration mit V4 war damals noch nicht so besonders. Aber die Konzepte gab es schon.
Und Felder mit Datum-Format gab es sowieso nur in ILE.
In OPM waren und sind das immer nur Char-Felder und da kann dann auch Müll drinstehen.
Da aber wie bei euch auch gerne Strukturen als Parameter übergeben werden und diese meist sowohl Parameter als auch Returnwerte enthalten muss man das so hinnehmen.
-
 Zitat von dschroeder
Ich muss zugeben, die Ideen von D*B klingen vernünftig. Ich habe ja bereits gesagt, dass ich die Sache mit dem View Layer bei uns mal anspreche. Die anderen Punkte nehme ich dann auch gleich mit auf.
Der Punkt mit den 95% Kunstfehler bei Referenz ist aus meiner Sicht richtig, wenn man die alten Anwendungen aus heutiger Sicht betrachtet. Vor 20 Jahren hat man aber die meisten Programme als normale Programme (also Nicht-Serviceprogramme) geschrieben (Ich weiß gar nicht, ob damals Serviceprogramme schon gingen). Und da hat man einfach PARM-Anweisungen verwendet. Das war der Standard. Und das sind nun mal Calls per Reference. Ich weiß nicht, ob man damals die Parameter von "normalen" Programmen als const definieren konnte. Ich habe das jedenfalls nirgendwo gesehen.
... das mit den "Altlasten" ist richtig, vor ILE und Prototyping war alles per Reference. Aber auch hier habe ich eine einfache Empfehlung:
- keine Aufrufe von Altprogrammen neu einbauen stattdessen:
-- SRVPGM als wrapper mit stabilisierter Schnittstelle erstellen und verwenden
-- packt man Programme mit Aufruf alt neu an, umhängen
-- Implementierung bei Änderung an neu hängen und alt zum Wrapper machen
Für technische Schönheit verbrennt man keinen Aufwand, bei Neu Entwicklung oder Änderung Redesign Aufwand vorsehen, so kommt man schrittweise zu modernisierten Anwendungen. Was alt ist, funktioniert und keinen Änderungsaufwand verursacht, kann alt bleiben!!!
D*B
-
OK, danke nochmals an alle für die guten Vorschläge!
-
Ich habe den Thread jetzt nicht weiter verfolgt, aber ich habe heute Nachmittag mit Barbara Morris und Scott Forstie gesprochen.
Akutell gibt es keine Möglichkeit Datums-oder Zeit-Formate für eine extern beschriebene Datenstruktur vorzugeben. Bei der Übertragung der Daten wird das DDS-Datums-Format übernommen und das Datum entsprechend aufbereitet in den Buffer übernommen. Sofern kein Datums-Format vorhanden ist (wie bei DDL-Tabellen) wird das Datum im ISO-Format aufbereitet.
Die einzige Möglichkeit, die es aktuell gibt, ist das/die Datums-Feld(er) in der (Referenz-)Datenstruktur/Template umzubenennen und anschließend erneut mit dem Original-Feld, jedoch mit geänderten Datums-Format zu überlagern.
Etwa so (nicht schön dafür selten):
Code:
dcl-ds YourDS extname('YOURFILE') qualified;
date_x extfld('YOURDATE');
YOURDATE date(*EUR) overlay(date_x);
end-ds;
Empfehlung von Barbara Morris und Scott Forstie ist einen RFE (Request for Enhancement - https://www.ibm.com/developerworks/rfe/ zu eröffnen.
Birgitta
Similar Threads
-
By dschroeder in forum NEWSboard Programmierung
Antworten: 20
Letzter Beitrag: 17-03-17, 09:30
-
By Fuerchau in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 13-03-16, 18:46
-
By bettman in forum IBM i Hauptforum
Antworten: 10
Letzter Beitrag: 04-12-13, 13:16
-
By ulli in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 19-02-02, 10:26
-
By W.Steiner in forum Archiv NEWSblibs
Antworten: 0
Letzter Beitrag: 24-08-01, 16:52
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