![]() |
| 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********************
