Hallo!

Ich hab dir mal schnell ein kleines Beispiel erstellt. (Testsystem: V5R3)

Diverse Aktionen (überprüfen auf *NULL bei Pointern/abfangen von "." und ".." bei OpenDir & ähnliches hab ich absichtlich nicht mit kopiert).

Code:
 **************************************************************************
 * ReadDir_r - Entry/Result DataStructure                                 *
 **************************************************************************
D DirEnt          DS                  Based(Ptr_Result)                    
D   Res01                       16A                                        
D   FileNoGenId                 10U 0                                      
D   FileNo                      10U 0                                      
D   RecLen                      10U 0                                      
D   Res03                       10I 0                                      
D   Res04                        6A                                        
D   Res05                        2A                                        
D   NlsInfo                     12A                                        
D     CCSID                     10I 0 Overlay(NlsInfo:1)                   
D     CtryId                     2A   Overlay(NlsInfo:5)                   
D     LangId                     3A   Overlay(NlsInfo:7)                   
D     Res06                      3A   Overlay(NlsInfo:10)                  
D   FileNameLen                 10U 0                                      
D   FileName                   640A                                        

 **************************************************************************
 * ReadDir_r -  Prototyp                                                  *
 **************************************************************************
D ReadDir         PR            10I 0 ExtProc('readdir_r')                 
D   Directory                     *   Value Options(*String)               
D   Entry                         *                                        
D   Result                        *                                        
                                                                           

/Free                                               
  Ptr_Dir = OpenDir('/home/test');                   
  DoU (Ptr_Result = *NULL);                         
    RtnCode = ReadDir(Ptr_Dir:Ptr_Entry:Ptr_Result);
  EndDo;                                            
  RtnCode = CloseDir(Ptr_Dir);                      
                                                    
  *InLr = *On;                                      
/End-Free
Falls sich ein Fehler eingeschlichen hat, bitte ich um Rückmeldung.

Lg,
Sam

Nachtrag bezüglich Error Code 3408:

EFAULT 3408 The address used for an argument was not correct. In attempting to use an argument in a call, the system detected an address that is not valid.