[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    119

    Unhappy ILE COBOL und Timestamp Problem

    Hallo!

    Ich habe eine Datei mit SQL erstellt:
    create table file1 (t1 timestamp)
    Format von t1: yyyy-mm-dd-hh.mm.ss.ssssss

    In einem SQL-ILE-COBOL (SQLCBLLE) Programm möchte ich den aktuellen Timestamp möglichst in wenigen Programmschritten in diese Datei einfügen.

    mit function current-date bekomme ich einen Timestamp, der aber nicht so aussieht wie das Format in meiner Datei.
    Format von current-date: yyyymmddhhmmssss+xxxx

    Muß in den Cobol-Timestamp denn mühsam zerschneiden und für mein Datei-Feld zusammensetzen?
    Warum geht das denn nicht so einfach wie in ILE-RPG durch eine einfache Konvertierung?

    Wäre für Hilfe sehr dankbar.

    Schöne Grüße
    Reiner

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Am einfachsten ist es so:

    /exec sql
    set :myfield = current date
    /end-exec

    "myfield" muss als Timestamp "pic x(26)" declariert sein.

    Noch einfacher ist es, wenn man das Feld beim Insert bzw. Update direkt mit der Funktion füllt:

    /exec sql
    update myfile set myfield = current date, ....
    /end-exec

    /exec sql
    insert into my file (f1, f2, f3, ...)
    values (:f1, current date, :f2, :f3, ...)
    /end-exec
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Jun 2001
    Beiträge
    119
    Ja, so ist es am einfachsten.

    Danke für den Tipp.

    Wie kann man denn die Variable current-date im Cobol-Programm einfach in die gewünschte Form bringen? Gibt es da keine Funktion, die das Ganze in die entsprechende Form konvertiert?
    Hat man ILE Cobol an den Formaten von SQL vorbei entwickelt?

    Grüße
    Reiner

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Es gibt eine eigene ANSI-Group für COBOL und die legt nun mal alles fest, auch das Date-Format.

    SQL wird nun wieder von einer anderen Gruppe normiert, so dass es da nun zu Inkompatibilitäten kommen kann.

    RPG ist eine ureigenste Entwicklung von IBM (alle anderen haben nur kopiert) und kann deshalb von IBM auch beliebig erweitert werden.
    Das Beste Beispiel ist die Verwendung von Funktionen, die im RPG an fast jeder beliebigen Stelle verwendet werden können:

    eval myerg = 25 * MyFun(p1 : p2 : ...) + 17

    In COBOL sieht das dann so aus:
    77 myerg pic s9(15) comp-3.
    77 zwerg pic s9(15) comp-3.
    :
    call procedure "MyFun" using p1 p2 returning zwerg
    compute myerg = 25 * zwerg + 17

    Also langsam finde ich RPG erheblich besser auch wenn ich früher COBOL-Freak war !

    Nun für das Zusammensetzen gibt es leider nur den schweren Weg mittels redefinition des Feldes und der schönen STRING-Funktion oder per API (QWCCVTDT).
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Jan 2001
    Beiträge
    340
    vielleicht hilft die TIMESTAMP Funktion weiter?

    The TIMESTAMP function returns a timestamp from a value or a pair of values.

    The rules for the arguments depend on whether the second argument is specified.


    If only one argument is specified:
    It must be a timestamp, a valid string representation of a timestamp, or a character string of length 14.

    A character string of length 14 must be a string of digits that represents a valid date and time in the form yyyyxxddhhmmss, where yyyy is year, xx is month, dd is day, hh is hour, mm is minute, and ss is seconds.


    If both arguments are specified:
    The first argument must be a date or a valid string representation of a date; the second argument must be a time or a valid string representation of a time.

    The result of the function is a timestamp. If either argument can be null, the result can be null; if either argument is null, the result is the null value.
    Gruss und HTH
    Rolf

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Ich denke das API QWCCVTDT ist da die bessere Alternative, da sie das ISO-Format "YYYY-MM-DD-hh.mm.ss.ssssss" direkt liefern kann.

    Die andere Alternative wäre noch ein RPGLE-Modul als Funktion, dass den Timestamp mit der Anweisung TIME ganz einfach liefern kann. Dieses Modul kann dann mit dem ILE-Cobol gelinkt werden bzw. als Service-Programm zur Verfügung gestellt werden.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    May 2002
    Beiträge
    2.642

    Cobol Timestamp

    Hallo Rebe,
    vielleicht hilft Dir dieser Link:


    http://www-912.ibm.com/s_dir/slkbase...ht=0,timestamp

    Gruss TARASIK

Similar Threads

  1. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 10:58
  2. ILE COBOL und SQLCLI ?
    By rebe in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 08-02-06, 15:50
  3. Problem mit XML PARSE in ILE COBOL
    By MikRom in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 15-08-05, 09:06
  4. ILE Cobol: accept aTimestamp from timestamp?
    By rebe in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 26-09-01, 08:46
  5. Problem bei ILE COBOL mit sql connect to
    By rebe in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 07-09-01, 13:55

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •