RPG (3 et 4, free), CL, SQL, etc...
			
		
		
			
				
																			
								manae 							 
									
		Messages :  58  		Enregistré le :  mar. 21 juin 2011,  07:08:24 		
		
						
						
		 
		
						
						
													
							
						
									
						Message 
					 
								par manae   »  jeu. 15 sept. 2016,  10:15:24 
			
			
			
			
			Sans message d'erreur, impossible d’écrire dans un fichier texte.
Le fichier est bien créé mais reste vide.
Voici le code que j'utilise.
 
Code : Tout sélectionner 
      **free
       ctl-opt option(*srcstmt) dftactgrp(*no);
       dcl-pr OpenFile pointer extproc('_C_IFS_fopen');
         *n pointer value; // file name
         *n pointer value; // file mode
       END-PR;
       dcl-pr WriteFile pointer extproc('_C_IFS_fputs');
         *n pointer value; // string to write
         *n pointer value; // open mode
       END-PR;
       dcl-pr CloseFile extproc('_C_IFS_fclose') ;
         *n pointer value ;  // Misc pointer
       end-pr ;
       dcl-s PathFile char(50) ;
       dcl-s OpenMode char(100);
       dcl-s FilePtr pointer inz;
       dcl-s SndData char(25);
       dcl-s i packed(3);
       PathFile = '/test_write.txt' + x'00';
       OpenMode = 'w,o_ccsid=1252' + x'00';
       FilePtr = OpenFile(%addr(PathFile):%addr(OpenMode));
       if (FilePtr = *null) ;
         dsply ('Unable to open file (1)');
         return;
       endif;
       CloseFile(%addr(PathFile));
       OpenMode = 'a,o_ccsid=1252' + x'00'; 
       FilePtr = OpenFile(%addr(PathFile):%addr(OpenMode));
       if (FilePtr = *null);
        dsply ('Unable to open file (2)');
        return;
       endif;
       for i = 1 to 10;
        SndData = 'Write No. '+ %char(i)+x'0D'+x'0A';
        WriteFile(%addr(SndData):FilePtr);
       endfor;
       CloseFile(%addr(PathFile));
       *inlr=*on;
      **end-free
Cordialement
 
			
			
			
									
									
						 
		 
				
		
		 
	 
	 
				
		
		
			
				
																			
								cmasse 							 
						Site Admin 			
		Messages :  813  		Enregistré le :  mer. 14 févr. 2007,  18:00:03 		
		
											Localisation :  Nantes 
																	
							
				Contact : 
				
			 
				
		 
		
						
						
													
							
						
									
						Message 
					 
								par cmasse   »  jeu. 15 sept. 2016,  16:21:01 
			
			
			
			
			
			
			
			
									
									Christian Massé (Volubis.fr)
						 
		 
				
		
		 
	 
	 
				
		
		
			
				
																			
								cmasse 							 
						Site Admin 			
		Messages :  813  		Enregistré le :  mer. 14 févr. 2007,  18:00:03 		
		
											Localisation :  Nantes 
																	
							
				Contact : 
				
			 
				
		 
		
						
						
													
							
						
									
						Message 
					 
								par cmasse   »  jeu. 15 sept. 2016,  16:27:39 
			
			
			
			
			Pour infos, OPTIONS(*STRING) évite d'ajouter X'00' et de passer %ADDR()
Code : Tout sélectionner 
**free
ctl-opt option(*srcstmt) dftactgrp(*no);
dcl-pr OpenFile pointer extproc('_C_IFS_fopen');
  *n pointer value options(*string); // file name
  *n pointer value options(*string); // file mode
END-PR;
dcl-pr WriteFile pointer extproc('_C_IFS_fputs');
  *n pointer value options(*string); // string to write
  *n pointer value; // open mode
END-PR;
dcl-pr CloseFile extproc('_C_IFS_fclose') ;
  *n pointer value ;  // Misc pointer
end-pr ;
dcl-s PathFile char(50) ;
dcl-s OpenMode char(100);
dcl-s FilePtr pointer inz;
dcl-s SndData char(25);
dcl-s i packed(3);
PathFile = '/formation/test_write.txt';
OpenMode = 'w, o_ccsid=1252';
FilePtr = OpenFile(PathFile:OpenMode);
if (FilePtr = *null) ;
  dsply ('Unable to open file (1)');
  return;
endif;
CloseFile(FilePtr);
OpenMode = 'w';
FilePtr = OpenFile(PathFile:OpenMode);
if (FilePtr = *null);
  dsply ('Unable to open file (2)');
  return;
endif;
for i = 1 to 10;
  SndData = 'Write No. '+ %char(i)+x'0D'+x'0A';
  WriteFile(SndData:FilePtr);
endfor;
CloseFile(FilePtr);
*inlr=*on;                 
 
			
			
			
									
									Christian Massé (Volubis.fr)
						 
		 
				
		
		 
	 
	 
				
		
		
			
				
																			
								manae 							 
									
		Messages :  58  		Enregistré le :  mar. 21 juin 2011,  07:08:24 		
		
						
						
		 
		
						
						 
													
							
						
									
						Message 
					 
								par manae   »  jeu. 15 sept. 2016,  17:05:08 
			
			
			
			
			Merci pour votre réponse. 
 
Cordialement
			
			
			
									
									
						 
		 
				
		
		 
	 
	 
				
		
		
			
				
																			
								manae 							 
									
		Messages :  58  		Enregistré le :  mar. 21 juin 2011,  07:08:24 		
		
						
						
		 
		
						
						 
													
							
						
									
						Message 
					 
								par manae   »  mer. 21 sept. 2016,  14:27:22 
			
			
			
			
			Bonjour, 
 
 j'ai fait les modifs que vous préconisez. 
 Aprés un essai je constate un effet bizarre sur le nom des fichiers dans l'ifs 
 
Opt   Lien objet              Type     Attribut     Texte 
 __   test_write.txt          STMF 
 __   test_write.txt     >   STMF 
 
Si dans le code je mets  PathFile = '/marc/test_write.txt'+x'00';  j'ai la première ligne 
Si je mets PathFile = '/marc/test_write.txt'; j'obtiens la 2éme ligne avec un > 
 
Je pense que le x'00' reste utile pour la fin du nom de fichier.  
Qu'en pensez-vous ? 
 
Cordialement 
[/code]
			
			
			
									
									
						 
		 
				
		
		 
	 
	 
				
		
		
			
				
																			
								cmasse 							 
						Site Admin 			
		Messages :  813  		Enregistré le :  mer. 14 févr. 2007,  18:00:03 		
		
											Localisation :  Nantes 
																	
							
				Contact : 
				
			 
				
		 
		
						
						
													
							
						
									
						Message 
					 
								par cmasse   »  lun. 26 sept. 2016,  07:29:04 
			
			
			
			
			
doit ajouter un X'00 ou zéro héxa (obligatoire pour les chaines en C) automatiquement.
donc je dirais, non pas de concaténation de x'00'
ensuite WRKLNK ajoute un > à chaque fois que le nom de fichier ne s'affiche pas entièrement, F22 permet de voir le nom en entier....
 
			
			
			
									
									Christian Massé (Volubis.fr)