The following figure shows the syntaxes of SysIni:
Syntax - Mode 1: Setting single key value. SysIni([inifile], app, key, val) Syntax - Mode 2: Querying single key value. SysIni([inifile], app, key) Syntax - Mode 3: Deleting a single key. SysIni([inifile], app, key, 'DELETE:') Syntax - Mode 4: Deleting an application and all associated keys. SysIni([inifile], app, ['DELETE:']) Syntax - Mode 5: Querying names of all keys associated with a certain application. SysIni([inifile], app, 'ALL:', 'stem') Syntax - Mode 6: Querying names of all applications. SysIni([inifile], 'ALL:', 'stem') where inifile Name of the INI file that you work with. This parameter should be a file specification, or one of the following: USER User INI file (usually C:\OS2\OS2.INI). This is the default. SYSTEM System INI file (usually C:\OS2\OS2SYS.INI). BOTH For querying invocations, both the user and system INI files are searched. For setting invocations, the user INI file is written to. app Application name or some other meaningful value with which you would like to store keywords. key Name of a keyword that is used to hold data. val Value to associate with the keyword of the specified application. stem Name of the stem variable to store the resultant information in. STEM.0 will be set equal to the number of elements.
The following sample code shows how you can use the SysIni function. The code saves the value entered by the user, displays it, and deletes it.
/*** Save the user-entered vlaue under the ***/ /*** key 'NAME' of the 'MYAPP' application, ***/ /*** display it, then delete it. ***/ pull name . call SysIni , 'MYAPP', 'NAME', value /* Save the value */ say SysIni(, 'MYAPP', 'NAME') /* Query the value */ call SysIni , 'MYAPP' /* Delete all MYAPP information */ exit
The following sample code displays the application name, keyname, and value of each line of the OS2.INI file:
/*** Display all OS2.INI file information to the screen ****/ call rxfuncadd sysloadfuncs, rexxutil, sysloadfuncs call sysloadfuncs call SysIni 'USER', 'All:', 'Apps.' if Result \= 'ERROR:' then do i=1 to Apps.0 call SysIni 'USER', Apps.i, 'All:', 'Keys' if Result \= 'ERROR:' then do j=1 to Keys.0 val = SysIni('USER', Apps.i, Keys.j) say left(Apps.i, 20) left(Keys.j, 20), 'Len=x'''Left(d2x(length(val)),4) left(val, 20) end end
The following sample code fragments retrieves a complete list of object ID information:
/* */ call RxFuncAdd 'SysLoadFuncs', 'rexxutil', 'SysLoadFuncs' call SysLoadFuncs /* List of object IDs */ App='PM_Workplace : Location' call RxFuncAdd 'SysLoadFuncs', 'rexxutil', 'SysLoadFuncs' call SysLoadFuncs call SysINI 'USER', App, 'All:', 'Keys' if result \= 'Error:' then do call SysCls Say '';Say '';Say 'Listing of object ID information';Say ''; parse value SysTextScreenSize() with row col j=row-10 do i=1 to Keys.0 if trunc(i/j)==i/j then do Say '';Say 'Press any key to display the next screen...' key=SysGetKey() call SysCls Say '';Say '';Say 'Listing of object ID information';Say ''; end Say Keys.i end end else Say 'Error querying for' App return