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.
- First of all create and open a new stream file named "helloworld" in "write only " mode using the open() api
- Then, write "Hello world" using write() api
- 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
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********************