[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jul 2002
    Beiträge
    9

    Question CL Variablen konvertieren

    HALLO!

    Wieder ne Frage!
    Wie kann ich in CL eine mit *char deklarierte Variable welche ein Feld mit Zahlen ausliest in eine Variable mit *dec
    Charakter umändern???

    Daniel

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241

    Post

    Einfach mit CHGVAR !
    CL versucht den Zeichenwert automatisch in einen Zahlenwert zu konvertieren.
    Es ist aber darauf zu achten, dass nur Zahlen ohne Dezimalkomma und Tausendertrennung verwendet werden können. Ein Vorzeichen am Anfang ist erlaubt.
    Ggf. kan die Zeichenvariable auch mittels CHGVAR(&DECVAR) VALUE(%sst(&charvar, 1, 5) *cat %sst(&charvar, 7, 2)), CHGVAR(&DECVAR) VALUE(&DECVAR / 100) aufgelöst 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

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    26

    Post

    Hallo Daniel,

    du kannst eine Zeuchenvariable einfach mit dem Wert in Decimalvariable schieben und dann mit rechen etc.
    Hier ein kleines Beispiel.
    PGM
    DCL VAR(&CHAR)TYPE(*CHAR)LEN(2)VALUE('12')
    DCL VAR(&DEC) TYPE(*DEC) LEN(4 0)
    CHGVAR VAR(&DEC) VALUE(&CHAR)
    CHGVAR VAR(&DEC) VALUE(&dec + 10)
    ENDPGM

  4. #4
    Registriert seit
    Jul 2002
    Beiträge
    9

    Post

    Danke!!!

    Es war nur das Problem, ich brauchte, wenn leerräume waren nullen. Das chgvar war schon klar, aber ich hab nun mit den Subtrings die Nullen in die Leerräume füllen können. Danke für den Ansatz!!!

    Musste dann nämlich dltsplf ausführen, und dazu brauchte ich die Spoolnummer. Beim Auslesen schreibt er für Nullen vor der Zahl nichts. Ich kann ihm aber nicht ein bis drei Leerräume anbieten, bis ne Zahl kommt.

    Daniel


  5. #5
    Registriert seit
    Jun 2002
    Beiträge
    30

    Talking

    Hallo,

    mit ein wenig Handarbeit kann man auch führende Nullen einschieben.
    Beispiel:

    CHGVAR VAR(&SPLNBR) VALUE(%SST(&ZEILE 101 4))
    IF COND(%SST(&SPLNBR 1 3) *EQ ' ') THEN(CHGVAR +
    VAR(%SST(&SPLNBR 1 3)) VALUE('000'))
    IF COND(%SST(&SPLNBR 2 2) *EQ ' ') THEN(CHGVAR +
    VAR(%SST(&SPLNBR 2 2)) VALUE('00'))
    IF COND(%SST(&SPLNBR 3 1) *EQ ' ') THEN(CHGVAR +
    VAR(%SST(&SPLNBR 3 1)) VALUE('0'))

    Hinweis: Im API-Handbuch gibt es Beispiel DLTOLDSPLF, das SPLF nach Datum löscht.

Similar Threads

  1. Dynamisches SQL in einem CL erstellen
    By Sony in forum IBM i Hauptforum
    Antworten: 27
    Letzter Beitrag: 20-07-09, 21:48
  2. Programmbibliothek in einem Cobol oder CL Programm ermitteln
    By schatte in forum NEWSboard Programmierung
    Antworten: 19
    Letzter Beitrag: 10-01-07, 11:32
  3. JobProtokoll in CL Job
    By RLPforum in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 22-09-06, 09:39
  4. num. Feld in Datumsfeld konvertieren
    By edig in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 27-07-06, 08:20
  5. Übergabeparameter im CL Script
    By bo1 in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 23-06-06, 15:00

Berechtigungen

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