IFS Hello world application in RPGLE

IFS Hello world application in RPGLE
IFS Hello world application in RPGLE, open(), write(), close(), SQLRPGLE , ifs , RPGLE, write data into the IFS file, Closes the file, open(), write(),  close(),  c apis, as400, ibmi, as400 and sql tricks, as400 tutorial, ibmi tutorial, working with ifs, integrated file system,UNIX-type APIs,C language prototype of read() ,extproc,Working with the IFS in RPG IV, prototyping of read() api,The path parameter,The oflag parameter,The mode parameter, The codepage parameter,Introduction to the IFS, ifs hello world appication in as400, ifs hello world application n ibmi, ifs hellow world prgram in rpgle, ifs hellow orld program in rpg as400, ifs hello world program in as400, ifs hello world program in ibmi, ifs hello world program in fully free rpg, ifs hello world program in fixed format rpg, ifs hello world program in /Free RPG format
IFS Hello world application in RPGLE

In this article, we are going to create an "IFS Hello World" application. So, we will use the various ifs C apis to accomplish this.

  1. First of all create and open a new stream file named "helloworld" in "write only " mode using the open() api
  2. Then, write "Hello world" using write() api
  3. and then close a file with close() api.

RPGLE program to create an IFS Hello World application

We will write the RPGLE program for IFS Hello World application in Fixed RPG, /Free RPG and Fully free RPG.

RPG Code in Fixed format for creating an IFS Hello World application.
     HDFTACTGRP(*NO)                                                                                
                                                                                                    
     D close           PR            10i 0 extproc('close')                     *                   
     D fileds                        10i 0 value                                *file descriptor    
                                                                                                    
     D write           PR            10i 0 extproc('write')                     * 32 bit, no. of byt
     D fileds                        10i 0 value                                *file descriptor    
     D buffer                          *   value                                * pointer to byte   
     D noofbytes                     10U 0 value                                * 32 bits           
                                                                                                    
     D open            PR            10I 0 extproc('open')                                          
     D ifspath                         *   value options(*string)               *ifs path           
     D oflag                         10I 0 value                                *string of 32 bits  
     D mode                          10U 0 value options(*nopass)               * 9 bits            
     D codepage                      10U 0 value options(*nopass)               *                   
                                                                                                    
      * <-----oflag---->                                                                           
     D O_readonly      C                   1                                                        
     D O_writeonly     C                   2                                                        
     D O_readwrite     C                   4                            
     D O_createfileifnotexist...                                        
     D                 C                   8                            
     D O_exclusivecreate...                                             
     D                 C                   16                           
     D O_truncateto0bytes...                                            
     D                 C                   64                           
     D O_appendtofile  C                   256                          
     D O_converttextbycodepage...                                       
     D                 C                   8388608                      
     D O_openintextmode...                                              
     D                 C                   16777216                     
      *                                                                 
      * <-----mode---->                                                 
      * owner,group,other (RWX)                                         
      *                                         owner authority         
     D M_readowner     C                   256                          
     D M_writeowner    C                   128                          
     D M_executeowner  C                   64                           
      *                                         group authority         
     D M_readgroup     C                   32                             
     D M_writegroup    C                   16                             
     D M_executegroup  C                   8                              
      *                                         other people              
     D M_readother     C                   4                              
     D M_writeother    C                   2                              
     D M_executeother  C                   1                              
      *                                                                   
     Difspath          s            512a                                  
     Doflag            s             10I 0                                
     Dmode             s             10U 0                                
     Dcodepage         s             10U 0                                
     Dfiledescriptor   s             10i 0                                
     Difsdata          s             11a   inz                            
     Dreturn_write     s             10i 0 inz                            
     Dreturn_close     s             10i 0 inz                            
     C                   EVAL      ifspath = '/home/easyclass/helloworld' 
     C                   EVAL      oflag =  O_writeonly +                 
     C                                      O_createfileifnotexist        
     C                   EVAL      mode =  M_executeowner                 
     C                   EVAL      filedescriptor = open(%trim(ifspath):          
     C                             oflag:                                         
     C                             mode)                                          
     C                   IF        filedescriptor < 0                             
     C                   RETURN                                                   
     C                   ENDIF                                                    
     C                   EVAL      ifsdata = 'HELLO WORLD'                        
     C                   EVAL      return_write = write(filedescriptor:           
     C                             %addr(ifsdata):%size(ifsdata))                 
     C                   IF        return_write < %size(ifsdata)                  
     C                   RETURN                                                   
     C                   ENDIF                                                    
     C                   EVAL      return_close = close(filedescriptor)           
     C                   IF        return_close = -1                              
     C                   RETURN                                                   
     C                   ENDIF                                                    
     C                   EVAL      *INLR = *ON                                    
     C                   RETURN                                                                                                                        
RPG Code in /Free and /End-Free format for creating an IFS Hello World application.
     HDFTACTGRP(*NO)                                                                                 
                                                                                                     
     D close           PR            10i 0 extproc('close')                     *                    
     D fileds                        10i 0 value                                *file descriptor     
                                                                                                     
     D write           PR            10i 0 extproc('write')                     * 32 bit, no. of byt 
     D fileds                        10i 0 value                                *file descriptor     
     D buffer                          *   value                                * pointer to byte    
     D noofbytes                     10U 0 value                                * 32 bits            
                                                                                                     
     D open            PR            10I 0 extproc('open')                                           
     D ifspath                         *   value options(*string)               *ifs path            
     D oflag                         10I 0 value                                *string of 32 bits   
     D mode                          10U 0 value options(*nopass)               * 9 bits             
     D codepage                      10U 0 value options(*nopass)               *                    
                                                                                                     
      * <-----oflag---->                                                                             
     D O_readonly      C                   1                                                         
     D O_writeonly     C                   2                                                         
     D O_readwrite     C                   4                        
     D O_createfileifnotexist...                                    
     D                 C                   8                        
     D O_exclusivecreate...                                         
     D                 C                   16                       
     D O_truncateto0bytes...                                        
     D                 C                   64                       
     D O_appendtofile  C                   256                      
     D O_converttextbycodepage...                                   
     D                 C                   8388608                  
     D O_openintextmode...                                          
     D                 C                   16777216                 
      *                                                             
      * <-----mode---->                                             
      * owner,group,other (RWX)                                     
      *                                         owner authority     
     D M_readowner     C                   256                      
     D M_writeowner    C                   128                      
     D M_executeowner  C                   64                       
      *                                         group authority     
     D M_readgroup     C                   32                  
     D M_writegroup    C                   16                  
     D M_executegroup  C                   8                   
      *                                         other people   
     D M_readother     C                   4                   
     D M_writeother    C                   2                   
     D M_executeother  C                   1                   
      *                                                        
     Difspath          s            512a                       
     Doflag            s             10I 0                     
     Dmode             s             10U 0                     
     Dcodepage         s             10U 0                     
     Dfiledescriptor   s             10i 0                     
     Difsdata          s             11a   inz                 
     Dreturn_write     s             10i 0 inz                 
     Dreturn_close     s             10i 0 inz                 
      /free                                                    
       ifspath = '/home/easyclass/helloworld';                 
       oflag = O_writeonly +                                   
               O_createfileifnotexist;                         
       mode =                                                               
              M_readowner +                                                 
              M_writeowner +                                                
              M_executeowner;                                               
                                                                            
       filedescriptor = open(%trim(ifspath):                                
                             oflag:                                         
                             mode);                                         
       if filedescriptor < 0;                                               
         return;                                                            
       endif;                                                               
                                                                            
       ifsdata = 'HELLO WORLD';                                             
       return_write = write(filedescriptor:%addr(ifsdata):%size(ifsdata));  
       if return_write < %size(ifsdata);                                    
         return;                                                            
       endif;                                                               
                                                                            
       return_close = close(filedescriptor);                                
       if return_close = -1;                                                
         return;     
       endif;        
                     
       *inlr = *on;  
       return;       
      /end-free                                              
RPG Code in Fully Free format for creating an IFS Hello World application.
**FREE                                       
CTL-OPT DFTACTGRP(*NO);                      
DCL-PR write int(10) EXTPROC('write');       
  fileds  int(10) VALUE;                     
  buffer  pointer VALUE;                     
  noofbytes uns(10) VALUE;                   
END-PR;                                      
                                             
DCL-PR open int(10) EXTPROC('open');         
  ifspath pointer VALUE options(*string);    
  oflag   int(10) VALUE;                     
  mode uns(10) VALUE options(*nopass);       
  codepage uns(10) VALUE options(*nopass);   
END-PR;                                      
DCL-PR close int(10) EXTPROC('close');       
  fileds int(10) VALUE;                      
END-PR;                                      
// * <-----oflag---->                        
DCL-C O_readonly 1;                          
DCL-C O_writeonly 2;                                             
DCL-C O_readwrite 4;                                             
DCL-C O_createfileifnotexist 8;                                  
DCL-C O_exclusivecreate 16;                                      
DCL-C O_truncateto0bytes 64;                                     
DCL-C O_appendtofile  256;                                       
DCL-C O_converttextbycodepage 8388608;                           
DCL-C O_openintextmode 16777216;                                 
//    * <-----mode---->                                          
//    * owner,group,other (RWX)                                  
//    *                                         owner authority  
DCL-C M_readowner 256;                                           
DCL-C M_writeowner 128;                                          
DCL-C M_executeowner 64;                                         
//    *                                         group authority  
DCL-C M_readgroup 32;                                            
DCL-C M_writegroup 16;                                           
DCL-C M_executegroup 8;                                          
//    *                                         other people     
DCL-C M_readother 4;                                             
DCL-C M_writeother 2;                             
DCL-C M_executeother 1;                           
DCL-S ifspath CHAR(512);                          
DCL-S oflag int(10);                              
DCL-S mode  uns(10);                              
DCL-S codepage uns(10);                           
DCL-S filedescriptor int(10);                     
DCL-S ifsdata char(500) inz;                      
DCL-S return_write int(10) inz;                   
DCL-S return_close int(10) inz;                   
                                                  
       ifspath = '/home/easyclass/helloworld';    
       oflag = O_writeonly +                      
               O_createfileifnotexist;            
       mode =                                     
              M_readowner +                       
              M_writeowner +                      
              M_executeowner;                     
                                                  
       filedescriptor = open(%trim(ifspath):      
                             oflag:                                        
                             mode);                                        
       if filedescriptor < 0;                                              
         return;                                                           
       endif;                                                              
                                                                           
       ifsdata = 'HELLO WORLD';                                            
       return_write = write(filedescriptor:%addr(ifsdata):%size(ifsdata)); 
       if return_write < %size(ifsdata);                                   
         return;                                                           
       endif;                                                              
                                                                           
       return_close = close(filedescriptor);                               
       if return_close = -1;                                               
         return;                                                           
       endif;                                                              
                                                                           
       *inlr = *on;                                                        
       return;
    

Compile-Run-Output of the above program

  • Compile the above RPGLE program by either using command CRTSQLRPGI or option 14 on source member of type SQLRPGLE.
  • Call the program using the call command CALL <program Name> from the IBM i command line.
  • For output- Check the IFS file being created at the specified path using the command WRKLNK
  •                             Work with Object Links                            
                                                                                  
    Directory  . . . . :   /home/EASYCLASS                                        
                                                                                  
    Type options, press Enter.                                                    
      2=Edit   3=Copy   4=Remove   5=Display   7=Rename   8=Display attributes    
      11=Change current directory ...                                             
                                                                                  
    Opt   Object link            Type             Attribute    Text               
          .                      DIR                                              
          ..                     DIR                                              
          append                 STMF                                             
          core                   STMF                                             
          csv1.csv               STMF                                             
          employeeTable.html     STMF                                             
          helloworld             STMF                                             
          lseek                  STMF                                             
          openfile1              STMF                                             
                                                                           More...
    Parameters or command                                                         
    ===>                                                                          
    

    Take option 5 on ifs stream file "Hello World".

     Browse : /home/EASYCLASS/helloworld                                                    
     Record :       1   of       1 by  18                      Column :    1     59 by 131  
     Control :                                                                              
                                                                                            
    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+...
     ************Beginning of data**************                                            
    HELLO WORLD                                                                             
     ************End of Data********************                                            
    

    Post a Comment

    © AS400 and SQL Tricks. All rights reserved. Developed by Jago Desain