-
Ich hätte noch einen Frage, rein Interessehalber. Könnte ich SRCDAT bzw SRCSEQ auch einen String mit der Länge 6 übergeben?
-
Übergeben kannst du was du willst, Hauptsache in der Datei stehts dann numerisch.
-
Ok danke .
Ich habe jedoch noch eine andere Frage.
Und zwar musste ich das Programm so umschreiben das es die Daten aus einer Datei liest. Die Werte sind korrekt:
zb:
SRCSEQ = 000100
SRCDAT = 060919
SRCDTA = ' A CCSID(273)'
Jedoch bekomme ich die Meldung wenn ich mir die erstellte Datei anschaue das die Folgenummern nicht korrekt angeordnet sind und sie neu angeordnet werden(Doppelte oder nicht aufsteigende Folgenummer. Sätze wurden neu angeordnet.). Das Änderungsdatum wird garnicht eingetragen. (000000)
Werden die führenden '0' bei einem Move weggelassen? (Move weil ich die als Char vorliegenden Zahlen wieder in P umwandeln will)
Beim Schreiben in die Datei gibt es keine Fehlermeldung, ein CRTPF ist jedoch nicht möglich bis ich manuell in die Datei gehe, wobei laut meldung SRCSEQ neu geordnet wird, und etwas ändere um SRCDAT zu setzen.
Der Write sieht so aus:
PHP-Code:
DCMDREC DS 92 DSRCSEQ 6P 2 DSRCDAT 6P 0 DSRCDTA 80A
C move seq srcseq C move dat srcdat C eval srcdta = dta
C write dds cmdrec
-
MOVE überträgt rechtsbündig genau so viele Stellen wie das Quellfeld lang ist, maximal jedoch so viele Stellen wie das Zielfeld lang ist.
Bei einer kürzeren Übertragung bleibt der Rest des Feldes stehen.
Für numerische Übertragung nimmt man Z-ADD oder EVAL, was dann auch Kommagerecht passiert.
Desweiteren sind deine Felder falsch definert:
SRCSEQ/SRCDAT sind vom Typ S (gezont).
Es wird deswegen kein Fehler ausgelöst, weil das Schreiben der Datei ungeprüft akzeptiert wird.
-
 Zitat von Fuerchau
MOVE überträgt rechtsbündig genau so viele Stellen wie das Quellfeld lang ist, maximal jedoch so viele Stellen wie das Zielfeld lang ist.
Bei einer kürzeren Übertragung bleibt der Rest des Feldes stehen.
Für numerische Übertragung nimmt man Z-ADD oder EVAL, was dann auch Kommagerecht passiert.
Desweiteren sind deine Felder falsch definert:
SRCSEQ/SRCDAT sind vom Typ S (gezont).
Es wird deswegen kein Fehler ausgelöst, weil das Schreiben der Datei ungeprüft akzeptiert wird.
Z-Add hatte ich schon probiert. Also nach meinem Move einen z-add.
Ich habe gerade versucht die Datei per Hand umzuwandeln und mir dann das SF angeschaut. Anscheinend wird weder SRCSEQ noch SRCDAT korrekt geschrieben:
PHP-Code:
- A CCSID(273) . .j¤
Ist meine Übergabe SRCSEQ SRCDAT SRCDTA dann in der Reihenfolge überhaupt richtig? Weil es bei dem SF ja SRCSEQ SRCDTA und dann SRCDAT ist.
EDIT: Geschafft es geht. Habe die Datei aus der gelesen wird neu definiert, P durch S ersetzt(sowohl in der Datei als auch im Programm) und jetzt geht es. 
Vielen Danke für die Hilfe!
-
Hallo,
diesmal geht es nicht um das Schreiben einer DDS Datei sondern das Lesen einer solchen.
Ich habe den Namen eines Feldes auf das Referiert wird und will nun aus der referenzierten Datei die Länge, die Dezimalstellen und die Art dieses Feldes wissens. Sobald ich die SRCDTA habe kann ich dies ja über Substring herausfinden.
Dazu hätte ich aber ein paar Fragen:
1. Kann ich über einen einfachen read aus dieser Datei lesen und die Daten in SRCSEQ SRCDTA und SRCDAT schreiben lassen? Wie müsste dieser read aussehen? (Ein Beispiel wäre sehr freundlich)
2. Brauche ich dann in meinem CL Programm 2 OVRDBF?
Gruß Martin
EDIT:
Tut mir Leid bin schon über was gestolpert, sollte jetzt funktionieren.(Kann ich erst morgen testen)
PHP-Code:
C open reftab C read REFTAB cmdrec C dow NOT %eof(reftab) C eval name2 = %subst(srcdta:19:10) C if name=name2 C eval laenge = %subst(srcdta:30:4) C eval art = %subst(srcdta:35:1) C eval dec = %subst(srcdta:36:2) C endif C read REFTAB cmdrec C enddo C close reftab
-
Wie du schon schreibst, du brauchst im CL ein OVRDBF. Ansonsten ist es wie beim schreiben.
Gruß
DVE
-
 Zitat von DVE
Wie du schon schreibst, du brauchst im CL ein OVRDBF. Ansonsten ist es wie beim schreiben.
Gruß
DVE
Danke!
Gruß Martin .
-
Hallo,
anderes Programm aber wieder etwas mit DDS, deshalb wieder dieser Thread. Ich bekomme zz einen Fehler beim Open. Beschrieben ist die Datei so:
PHP-Code:
FDDS O F 92 Disk UsrOpn f ExtFile(Path) f ExtMbr(Mbr)
MBR wird an das Prog übergeben
PHP-Code:
CALL PGM(DDSGENLINE) PARM(&ZNAM &FLIB &FFILE &MBR)
und aus 2 Vars setze ich den Pfad zusammen. Das hat bisher immer funktioniert(habe das aus meinem DDS Prog. genommen). Die Datei wird ordnungsgemäß erstellt, der OVR Befehl ist auch i.O.
Nun bekomme ich aber den Fehler:
PHP-Code:
call ddsbasis parm(ddst liba libb ddste test textf textm ZPROG) Datei DDST in Bibliothek liba erstellt. Teildatei TEST zu Datei DDST in liba hinzugefügt. Datei + in Bibliothek *LIBL mit Teildatei TEST nicht gefunden Fehlernachricht CPF4102 während OPEN angezeigt.
Fehler soll das sein:
PHP-Code:
03 - Datei nicht vorhanden. Bibliothek als *LIBL angegeben.
DDSBasis ist ein CL Prog das dann das ILE Prog aufruft. Die Datei ist jedoch erstellt worden.
Ein andere Fehler ist ein Dezimalstellenfehler. Hier stimmt jedoch die Zeilenangabe nicht. Auf Zeile XYZ steht nur C/EXEC SQL. Kann es sein das er Platz/Leerzeilen also (0010.00 - damit der Code übersichtlicher wird), ignoriert und sich die Zeilenangabe dadurch verändert?
Gruß Martin
EDIT: Dateifehler behoben. Dafür gibts jetzt einen andren:
Er will einen Open auf Datei DDS machen, welche aber schon auf ist. Der einzige Open den ich mache ist jedoch der hier:
PHP-Code:
C eval Path = FLib+'/'+FFile C eval Path = %trim(Path) C* close dds C open dds C eval datnam=FFile C exsr fill C exsr head C exsr rec C exsr Line C close dds C return
In den Untermethoden werden nur Writes gemacht um die Datei zu erstellen.
-
Hallo,
(Ja ich bringe diese Thema wieder mal hoch. ) Ich hätte eine Frage zum return bei CL und zwar steht im Programming Guide das man über diesen Return keine Paramater zurückgeben kann. (Insofern ich mich nicht verlesen habe.) Ich würde jedoch gerne wissen ob das CL Programm das ich von VARPG aufrufe alle Dateien richtig erstellt hat, oder ob etwas schiefgegangen ist und die halb erstellten Dateien wieder gelöscht wurden.
Da ich beim Return ja anscheinend nichts übergeben kann wie kann ich das sonst überprüfen um dem User eine Rückmeldung geben zu können ob alles i.O. ist oder ob etwas schiefgegangen ist.
Gruß Martin
-
Alle Parameter beim CLP sind per Reference.
Das CLP kann diese verändern, der Inhalt steht dann im rufenden Programm.
-
Hallo,
für die Rückgabe von Fehlern hat OS400 einen speziellen Mechanismus: man sendet einfach per API eine Escape Message, das kommt sogar beim SBMJOB noch beim Submitter an.
mfg
Dieter Bender
 Zitat von Squall
Hallo,
(Ja ich bringe diese Thema wieder mal hoch.  ) Ich hätte eine Frage zum return bei CL und zwar steht im Programming Guide das man über diesen Return keine Paramater zurückgeben kann. (Insofern ich mich nicht verlesen habe.) Ich würde jedoch gerne wissen ob das CL Programm das ich von VARPG aufrufe alle Dateien richtig erstellt hat, oder ob etwas schiefgegangen ist und die halb erstellten Dateien wieder gelöscht wurden.
Da ich beim Return ja anscheinend nichts übergeben kann wie kann ich das sonst überprüfen um dem User eine Rückmeldung geben zu können ob alles i.O. ist oder ob etwas schiefgegangen ist.
Gruß Martin
Similar Threads
-
By homue in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 18-07-07, 16:47
-
By Stoeberl in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 10-01-07, 10:58
-
By Squall in forum NEWSboard Programmierung
Antworten: 9
Letzter Beitrag: 10-10-06, 08:53
-
By Squall in forum IBM i Hauptforum
Antworten: 31
Letzter Beitrag: 28-09-06, 17:53
-
By Angela in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 22-08-06, 10:11
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