[NEWSboard IBMi Forum]
Seite 2 von 2 Erste 1 2
  1. #13
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Windows/Notepad++ kann die Kodierung vopn EBCDIC 273 gar nicht erkennen.
    Ich hatte ein ähnliches Problem auf V6R1, dass die CCSID 1252 bei CLOB_FILE nicht unterstützt wurde und die Ausgabe daher wieder in 273 (JOb CCSID) erfolgte.
    Ich hatte geglaubt, dass dies per V7R3 nicht mehr passiert.

    Nun ist es wohl leider so, dass bei der Ausgabe ins IFS die Daten erst mittels iconv() in 1252 umgewandelt werden müssen oder per "QSH touch" eine leere IFS-Datei mit Codepage 1252 erstellt werden muss.
    Ich hatte mich da für iconv() bzw. das passende API entschieden, dann klappte es.
    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

  2. #14
    Registriert seit
    Feb 2017
    Beiträge
    41
    Wie Fuerchau schon schreibt, kann das an deinem Release hängen?
    Bei mir unter 7.3 hat die Datei per wrklnk die ccsid 1208 und im notepad++ steht auch utf-8.

  3. #15
    Registriert seit
    Jan 2007
    Beiträge
    904
    Ist bei mir auch so, 7.4
    kf

  4. #16
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Es gibt da einen Unterschied ob 1252 (Windows-ANSI) oder 1208 (UTF8).
    Ich denke UTF8 wird native unterstützt, ANSI aber nicht.
    In meinem Test war die Programmvariable vom Typ "C", also CCSID = 1200.
    Bei der Ausgabe wurde die IFS-Datei mit Code 1200 erstellt, was in Notepad++ auch korrekt mit 2-Byte-Codes dargestellt wird.
    Ist das Quellfeld aber vpm Typ "A", also Char, wird die Job-CCSID verwendet.

    Um also 1252 zu erstellen, ist iconv() erforderlich.

    Für die HTML-Erstellung ist allerding UTF8 ebenso erlaubt, wenn die Codierung auch angegeben ist:
    https://www.w3.org/International/que...eclarations.de
    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. #17
    Registriert seit
    Aug 2014
    Beiträge
    179
    ich habe es auf meiner 7.3 Maschine mit Systemwert QCCSID 1141 und Job-CCSID 1141 wie folgt nachgebaut und es funktioniert einwandfrei. Die CCSID der Datei im IFS ist 1208 und auch Notepad++ zeigt UTF8 an.
    HTML-Code:
             ctl-opt dftactgrp(*no) main(main);
          //------------------------------------------------------------------//
          //                                                                  //
          // Test - Write CLOB to IFS                                         //
          //                                                                  //
          //-----------------                                                 //
          // R.Ross 05.2020 *                                                 //
          //------------------------------------------------------------------//
          // SQL-Options                                                      //
          //------------------------------------------------------------------//
    
             exec sql set option datfmt=*iso, timfmt=*iso, commit=*none,
                                 decmpt=*period, closqlcsr=*endactgrp;
    
          //------------------------------------------------------------------//
          // Main                                                             //
          //------------------------------------------------------------------//
             dcl-proc Main;
    
             dcl-s   LocClob     SQLType(CLOB:10000) ccsid(*utf8);
             dcl-s   LocFile     sqltype(CLOB_FILE);
    
               exec sql
                set :LocClob = '<p>Test</p>';
    
               LocFile_name = '/home/export/html/test.html';
               LocFile_nl   = %len(%trim(LocFile_name));
               LocFile_fo   = SQFOVR;
    
               exec sql
                set :LocFile = :LocClob;
    
             end-proc;
          //------------------------------------------------------------------// 

  6. #18
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Versuche es doch mal mit 1252 (bitte).
    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. #19
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    So, hier nun meine funktionierende V6R1-Quelle mit CCSID 1252:

    Code:
    d FBType          ds                  template qualified    
    d  FB1                          10i 0                       
    d  FB2                          10i 0                       
    d  FB3                          10i 0                       
    
    d ConvertAPI      pr                  extpgm('CDRCVRT')   
    d  CCSID1                       10i 0 const               
    d  ST1                          10i 0 const               
    d  S1                            1    options(*varsize)   
    d  L1                           10i 0 const               
    d  CCSID2                       10i 0 const               
    d  ST2                          10i 0 const               
    d  GCCASN                       10i 0 const               
    d  L2                           10i 0 const               
    d  S2                            1    options(*varsize)   
    d  L3                           10i 0                     
    d  L4                           10i 0                     
    d  FB                                 likeds(FBType) 
    
    d StrDS           ds                  
    d FileString                          SQLTYPE(DBCLOB:8000000) ccsid(1200) 
    d FileData                        c   len(8000000) overlay(FileString)    
    d                                     varying(4)                          
    d FileBytes                       a   len(16000000) overlay(StrDS:5)      
    
    d OutDummy        s             10I 0 inz  
    d OutLen          s             10I 0 inz  
    
    d OutFB           ds                  likeds(FBType) 
                                                         
    d IfsString       s          32700a   varying(2)     
    d oPos            s             10u 0                
    
    d OutDS           ds                  static                   
    d OutSize                       10I 0                          
    d OutData                         a   len(8000000)             
    d OutString                       a   len(8000000) varying(4)  
    d                                     overlay(OutDS)                
    
    // Umwandlen in Win1252-Codepage                    
    ConvertAPI(1200                       //CCSID1      
              :0                          //ST1         
              :FileBytes                  //S1          
              :%len(FileData) * 2         //L1          
              :819                        //CCSID2      
              :0                          //ST2         
              :0                          //GCCASN      
              :OutSize                    //L2          
              :OutData                    //S2          
              :OutLen                     //L3          
              :OutDummy                   //L4          
              :OutFB                      //FB          
              );                                        
    
    %len(OutString) = OutLen;                                 
    for oPos = 1 to OutLen by %size(IfsString);               
        IfsString = %subst(OutString:oPos);                   
        exec sql values(:IfsString) into :IFS_File;           
        IFS_File.FILENAME_FO   = SQFAPP;   // Datei anhängen  
    endfor;
    Damit wird zwar eine IFS-Datei mit 819 erstellt, das ist aber von 1252 nicht weit entfernt.
    Auf V7 sollte das auch mit 1252 funktionieren.
    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

  8. #20
    Registriert seit
    Jan 2001
    Beiträge
    832
    Hallo an alle,

    manches mal verläuft man sich im Wald :-)

    Der beeinflussende Faktor ist die Definition dec CLOB Feldes.
    PHP-Code:
    dcl-s clob        sqltype(CLOB:10000ccsid(1252) ; 
    dcl-s clob        sqltype(CLOB:10000ccsid(*utf8) ; 
    dcl-s clob        sqltype(CLOB:10000ccsid(*utf16) ; 
    Damit legt das System mit dem
    PHP-Code:
     exec sql values(:clobinto aHtmlMailFile  
    genau die Datei im IFS an.

    Keine Definition bedeutet eben Job CCSID. Das ist eben 273

    Danke an alle und gut das es dieses Forum gibt.
    Gruß
    Michael

  9. #21
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Wird mit V6R1 leider nicht unterstützt.
    Per CDRCVRT kann ich in 1252 umwandeln und dann ins IFS ausgeben.
    Die IFS-Datei hat zwar das Attribut 273, Windows ist das aber egal.
    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

Similar Threads

  1. Clob als Unicode definieren
    By dschroeder in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 19-12-18, 14:06
  2. dynamisches SQL mit Clob möglich?
    By msost in forum NEWSboard Programmierung
    Antworten: 18
    Letzter Beitrag: 07-04-17, 15:23
  3. Antworten: 3
    Letzter Beitrag: 16-03-17, 14:46
  4. Clob to Blob
    By dschroeder in forum IBM i Hauptforum
    Antworten: 14
    Letzter Beitrag: 31-08-16, 16:32
  5. Inhalt CLOB Feld in IFS-Datei
    By alex61 in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 06-07-16, 12:51

Berechtigungen

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