-
und wie bekomm ich das (im RPG) in das entsprechende Format?
-
Also eine Zahl im RPG in eine Struktur zu stellen ist doch wohlnicht das Problem:
IMYDATE DS
I 1 40MYYEAR
I I '-' 5 5
I 6 7 20MYMON
I I '-' 8 8
I 9 10 MYDAY
Nun nur noch das Datum in diese Struktur zerlegen und hinterher wieder mit Einzelbefehlen zusammenbauen:
MyNumDate = MYYEAR * 10000 + MYMON * 100 + MYDAY
Diese Berechnung überlasse ich nun dir.
-
das mit der Struktur war mir schon klar!
Nur beim Umwandeln bekomme ich leider immer diesen Fehler:
PHP-Code:
Satz *...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8
362 C+ SET :NEWDAT = MYDATE + 1 DAYS
5722ST1 V5R3M0 040528 SQL-RPG-Programm erstellen SIBESMLAUX
DIAGNOSENACHRICHTEN
MSG ID WTK SATZ TEXT
SQL0104 30 362 Position 23 Token MYDATE ungültig. Gültige Token: :.
Nachrichtenzusammenfassung
Gesamt Info Warnung Fehler Wertigk. Beendigung
1 0 0 0 1 0
Die Anweisungen in meinem Programm schauen so aus:
PHP-Code:
IMYDATE DS
I 1 40YY
I I '-' 5 5
I 6 70MM
I I '-' 8 8
I 9 100DD
C MOVEL*YEAR YY 4
C MOVEL*MONTH MM 2
C MOVEL*DAY DD 2
C/EXEC SQL
C+ SET :NEWDAT = MYDATE + 1 DAYS
C/END-EXEC
-
Ich würde sagen, dass vor das "mydate" noch ein Doppelpunkt muss. Also so:
PHP-Code:
C/EXEC SQL
C+ SET :NEWDAT = :MYDATE + 1 DAYS
C/END-EXEC
Mfg KAMPI
-
Wie wäre es mit eine RPGLE Routine die das Datum um so viele Tage erhöht wie du Lust hast ??
PHP-Code:
d rtncde s 7
d tage s 7 0
d datum_parm s 8 0
d datum_d s d
d zeit_parm s 6 0
d zeit_t s t
d timestamp s z
c *entry plist
c parm rtncde
c parm tage
c parm datum_parm
c eval rtncde = *blanks
c *iso test(d e) datum_parm
c if not %error
c *iso move datum_parm datum_d
c else
c eval rtncde = '*Error'
c endif
c if rtncde = ' '
c adddur tage:*d datum_d
c movel datum_d datum_parm
c endif
c return
Gruß
DVE
-
zu DVE
wenn ich es mit RPGLE machen könnte/dürfte würde ich es mit
SQL machen und da wär es mir klar bzw. wärs kein Problem!
zu Kampi4:
das hatte ich auch schon und da gibt's dann folgenden Fehler:
PHP-Code:
Satz *...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8
362 C+ SET :NEWDAT = :MYDATE + 1 DAYS
5722ST1 V5R3M0 040528 SQL-RPG-Programm erstellen SIBESMLAUX
DIAGNOSENACHRICHTEN
MSG ID WTK SATZ TEXT
SQL0312 30 362 Position 24 Variable MYDATE nicht definiert oder nicht
verwendbar.
Nachrichtenzusammenfassung
Gesamt Info Warnung Fehler Wertigk. Beendigung
1 0 0 0 1 0
Fehler der Wertigkeitsstufe 30 in Quelle gefunden.
-
Definiere dazu folgendes:
I DS
I 1 10 MYDATE
Ich denke, dass der SQL-Compiler in diesem Fall die Struktur ablehnt, da es sich nicht um eine Single-Variable handelt.
-
stimmt daß war die Fehlermeldung!
Aber jetzt bekomme ich folgende Meldung:
PHP-Code:
Satz *...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8
363 C+ SET :NEWDAT = :MYDATE + 1 DAYS
5722ST1 V5R3M0 040528 SQL-RPG-Programm erstellen SIBESMLAUX
DIAGNOSENACHRICHTEN
MSG ID WTK SATZ TEXT
SQL0187 30 363 Position 35 Verwendung der gekennzeichneten Dauer
ungültig.
Nachrichtenzusammenfassung
Gesamt Info Warnung Fehler Wertigk. Beendigung
1 0 0 0 1 0
Wie muß den das Feld NEWDAT definiert sein als 10 alpha oder 10 num. oder auch als DS?
-
hab mir die SQL-Fehlermeldung SQL0187 (WRKMSGF QSQLMSG) mal etwas genauer angeschaut:
PHP-Code:
System: BHSWHR
Nachrichten-ID . . . . . . . : SQL0187
Nachrichtendatei . . . . . . : QSQLMSG
Bibliothek . . . . . . . . : QSYS
Nachricht . . . : Verwendung der gekennzeichneten Dauer ungültig.
Ursache . . . . : Einer der folgenden Fehler trat auf:
-- Eine gekennzeichnete Dauer ist angegeben, ist aber nicht der Operand
des Additions- oder Subtraktionsoperators.
-- Eine gekennzeichnete Dauer von Jahren, Monaten oder Tagen ist als
Additions- oder Subtraktionsoperand angegeben, der andere Operand ist jedoch
kein Datum und keine Zeitmarke.
-- Eine gekennzeichnete Dauer von Mikrosekunden ist als Additions- oder
Subtraktionsoperand angegeben, der andere Operand ist jedoch keine Uhrzeit
und keine Zeitmarke.
-- Eine gekennzeichnete Dauer von Stunden Minuten oder Sekunden ist als
Additions- oder Subtraktionsoperand angegeben, der andere Operand ist jedoch
keine Zeitmarke.
-- Eine gekennzeichnete Dauer ist als linker Operand einer Subtraktion
angegeben.
-- Der für die gekennzeichnete Dauer angegebene Wert ist nicht numerisch.
Fehlerbeseitigung: Verwendung der gekennzeichneten Dauer korrigieren. Die
Anforderung wiederholen.
Kann es sein, daß das SQL-Statmant (Addition von 1 Tag) in einem SQLRPG womöglich gar nicht funkt?
-
Hallo,
hättest dir mal besser die Postings von Baldur oder Kampi4 ansehen sollen
C/EXEC SQL
C+ SET :NEWDAT = :MYDATE + 1 DAYS
C/END-EXEC
Dieter Bender,
der auch froh ist, dass heute Freitag ist
edit: und jetzt das DAYS gesehen hat
 Zitat von muadeep
hab mir die SQL-Fehlermeldung SQL0187 (WRKMSGF QSQLMSG) mal etwas genauer angeschaut:
PHP-Code:
System: BHSWHR
Nachrichten-ID . . . . . . . : SQL0187
Nachrichtendatei . . . . . . : QSQLMSG
Bibliothek . . . . . . . . : QSYS
Nachricht . . . : Verwendung der gekennzeichneten Dauer ungültig.
Ursache . . . . : Einer der folgenden Fehler trat auf:
-- Eine gekennzeichnete Dauer ist angegeben, ist aber nicht der Operand
des Additions- oder Subtraktionsoperators.
-- Eine gekennzeichnete Dauer von Jahren, Monaten oder Tagen ist als
Additions- oder Subtraktionsoperand angegeben, der andere Operand ist jedoch
kein Datum und keine Zeitmarke.
-- Eine gekennzeichnete Dauer von Mikrosekunden ist als Additions- oder
Subtraktionsoperand angegeben, der andere Operand ist jedoch keine Uhrzeit
und keine Zeitmarke.
-- Eine gekennzeichnete Dauer von Stunden Minuten oder Sekunden ist als
Additions- oder Subtraktionsoperand angegeben, der andere Operand ist jedoch
keine Zeitmarke.
-- Eine gekennzeichnete Dauer ist als linker Operand einer Subtraktion
angegeben.
-- Der für die gekennzeichnete Dauer angegebene Wert ist nicht numerisch.
Fehlerbeseitigung: Verwendung der gekennzeichneten Dauer korrigieren. Die
Anforderung wiederholen.
Kann es sein, daß das SQL-Statmant (Addition von 1 Tag) in einem SQLRPG womöglich gar nicht funkt?
-
die Posting der beiden (Baldur & Kampi4) habe ich gelesen und das Statment wurde auch korrigiert! :-)
PHP-Code:
C/EXEC SQL
C+ SET :NEWDAT = :MYDATE + 1 DAYS
C/END-EXEC
sorry,
aber die obige Fehlermeldung "SQL0187" kommt nach der Korrektur!
Similar Threads
-
By Joe in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 26-08-05, 09: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