Habe jetzt folgendes Testprogramm mal aufgebaut:

Code:
     H DEBUG DECEDIT('0,') DATEDIT(*DMY.) DFTACTGRP(*NO)                 
 
     D QtqCode_T       DS                  Qualified                     
     D  CCSID                        10I 0 Inz(0)                        
     D  CvtAlt                       10I 0 Inz(0)                        
     D  SubAlt                       10I 0 Inz(0)                        
     D  ShiftState                   10I 0 Inz(1)                        
     D  InLenOpt                     10I 0 Inz(0)                        
     D  MixDataErrorOpt...                                               
     D                               10I 0 Inz(0)                        
     D  Reserved                      8A   Inz(*ALLX'00')                
     D fromCCSID       DS                  LikeDS(QtqCode_T)             
     D toCCSID         DS                  LikeDS(QtqCode_T)             
     D iconv_t         DS                  Qualified INZ                 
     D  rtn_value                    10I 0                               
     D  cd                           10I 0 Dim(12)                       
     D                                                                   
     D QtqIConvOpen    PR                  ExtProc('QtqIconvOpen')       
     D                                     LikeDS(iconv_T)               
     D  toCCSID                            LikeDS(QtqCode_T)      
     D  fromCCSID                          LikeDS(QtqCode_T)      
 
 
     D hConv           DS                  LikeDS(iconv_T)        
     D                                     Inz(*LIKEDS)           
     D**                                                          
     D iconv           PR            10U 0 ExtProc('iconv')       
     D  hConv                              LikeDS(iconv_t) VALUE  
     D  pInBuff                        *   VALUE                  
     D  nInLen                         *   VALUE                  
     D  pOutBuff                       *   VALUE                  
     D  nOutLen                        *   VALUE                  
 
     D MyData          S             10A   Inz('ABCDEFG')         
     D pData           S               *   Inz                    
     D ppData          S               *   Inz(%addr(pData))      
     D nInLen          S             10I 0                        
     D nOutLen         S             10I 0                        
 
     D iconv_close     PR            10I 0 ExtProc('iconv_close')        
     D  hConv                              LikeDS(iconv_t) VALUE         
 
 
      /free                                                              
         fromCCSID.CCSID = 273;                                          
         toCCSID.CCSID = 1208;                                           
         hConv = *ALLX'00';                                              
         hConv = QtqIconvOpen(toCCSID:fromCCSID);                        
      /end-free                                                          
 
 
 
     C                   eval      nInLen = %len(%TrimR(mydata))         
     C                   eval      nOutLen = %size(mydata)               
     C                   eval      pData = %addr(myData)                 
     C                   callp     iconv(hConv : ppData : %addr(nInLen): 
     C                               ppData:%addr(nOutLen))              
 
     C                   callp     iconv_close(hConv)                    
     C                   MOVE      '1'           *INLR
Als Ergebnis steht in der hconv ein Return-Wert von -1.
Ich denke mal dass das ein Fehler ist?
Aber was für einer?
Folgendes erhalte ich in der DS-Anzeige von hConv:

Code:
> EVAL hConv                    
  HCONV.RTN_VALUE = -1          
  HCONV.CD(1) = 1077952576      
  HCONV.CD(2) = 1077952576      
  HCONV.CD(3) = 1077952576      
  HCONV.CD(4) = 0               
  HCONV.CD(5) = 208             
  HCONV.CD(6) = 8               
  HCONV.CD(7) = -2              
  HCONV.CD(8) = -2147483648     
  HCONV.CD(9) = 0               
  HCONV.CD(10) = -978493160     
  HCONV.CD(11) = 671093600      
  HCONV.CD(12) = 0
Wenn ich das richtig verstanden habe und iconv sauber gelaufen ist, dann müsste der nInLen anschließend auf 0 stehen richtig?
Habe ich noch etwas übersehen/falsch implementiert?