Time 4 Learning AS400
AS/400 QUESTION BANK
1.Define
library?
ü
A Library is a collection of objects.
ü
Type *LIB that is used to group related object
and to find objects by name.
ü
A library is a directory to a group of objects.
ü
The number of objects contained in a library and
the number of libraries on the system are limited only by the amount of storage
available.
ü
All libraries are placed in the system library
QSYS.
ü
Libraries provide a method for organizing
objects.
ü
A library is an open-ended directory.
ü
A library can never become ‘FULL’ as if has no
finite size.
ü
Libraries themselves are objects.
ü
A library contain the object name, type, and the
address
ü Library
list
Ø
System library- 15 (QSYSLIB)
QSYS
QHLPSYS
QUSRSYS
Ø
Product library –2
Ø
Current library –1
Ø
User library
- 25 (QUSRLIB)
QGPL
QTEMP
MYLIB
When you logon the first
library to be load is QSYS. The system library is loaded at the first time.
2.Define
object?
ü Every
thing that can be stored or retrieved on the system is known as an
“OBJECT”.
ü Objects
exit to make users independent of the implementation used in the machine.
ü The
create object instruction establish the object’s name and its type.
ü All
objects are structured with a common object header, and a type dependent functional portion.
ü A
user is not concerned with the space his object occupies.
ü The
system allocate space automatically
ü
WRKOBJPDM is used to display all object in such
a library
ü
The
library the object name and its type is Unique.
3.Define
source physical file?
Source
physical file is also a file, which has one, or more files included in it. It
is just like a directory and it contains many members. The members are like a
various programs residing in the directory CRTSRCPF is used to create
source physical file.
4.Define physical file?
It
is a file, which physically occupies the portion of memory. A physical file
contains one record format and one or more members. It’s type PF. By using CRTPF
command to create PF. Maximum number of fields included in a PF is 8000.
Maximum no of key fields included is 120.
5.Define
logical file?
Logical
file does not occupies any memory space and logical file be derived from
physical file. One or more logical file can be derived from a single physical
file. A logical file can contain up to 32 record formats. It selects records
dynamically. It cannot exist with out a physical file. We can filter the data
with criteria by using select and omit command. CRTLF command
is used to create a LF. It accesses the data by creating access path.
A logical file does not contain any
data but provides the ‘VIEWS’ of the data to satisfy end-user’s needs.
There are two types
ü
Non join logical file
ü
Join logical file
6.Difference
between physical file and logical file?
Physical
file
|
Logical
file
|
1. Occupies
the portion of memory. It’s containing data.
|
Does not
occupy any memory space. Does not contain any data.
|
2. A physical
file contains one record format
|
A logical file can contain up to 32 record
formats.
|
3.Can be exist even with out LF
|
Can not exist with out PF
|
4. If you delete a LF, the PF
can not be deleted
|
If you delete a LF, the PF can
not be deleted
|
5.CRTPF command is used
to create such object
|
CRTLF command is used to
create such type object
|
6.The object type is PF
|
The object type is LF
|
7. What are
the four levels of entries in physical file?
(i). File
level entries (optional): File level entries give the system information of
the entire file. (UNIQUE, LIFO, FIFO, FCFO, REF)
UNIQUE: A record cannot be entered or copied into a file if its key value
is same as the key value of a record already existing in the file.
LIFO: Last in first out
FIFO: First in first out
FCFO: First change first
out.
REF: This keyword is used to specify the name of the file from which the
field descriptions are retrieved.
Ex: you can specify whether
the key is unique.
(ii). Record
format level entries: Record format level entries give the system
information about specific record format in the file. For a PF the
record format name is specified along with an optional text description.
(FORMAT, TEXT)
(i) FORMAT:
This record-level keyword specifies that the record format
being define is to share the field specifications of a previously defined
record format. The name of the record format being defined must be the name of
the previously defined record format.
The format of this keyword is:
FORMAT (LIB-NAME / FILE-NAME)
(ii) TEXT:
This record level keyword is used to supply a text description of the
record format and it is used for documentation purposes only.
The
format of this keyword is:
TEXT (‘description’)
(iii) Field
level entries: The field names and field lengths are specified along with
and optional text description for each field. (ALIAS, ALWNULL, CCSID, CHECK,
CHKMSGID, CMP, COLHDG, COMP, DATFMT, DATSEP, DFT, EDTCDE, EDTWRD, REFFLD,
REFSHIFT, TEXT, TIMEFMT, TIMESEP, VALUES, VARLEN)
(iv)
Key field level entries: The field names
used as key fields are specified. (DESCEND, SIGNED, ABSVAL, UNSIGNED, ZONE,
NOALTSEQ, DIGIT)
8. What are
the six levels of entries in logical file?
(i)
File level entries (optional): File level
entries give the system information of the entire file. You can specify whether
the key is same as physical file.
(ii)
Record format level entries: Record format
level entries give the system information about specific record format in the
file. For examples, for a logical file when a record format is described we can
specify the physical file it is based on.
(iii)
JOIN Level entries: Join level entries give the system information about PF used
in a JOIN LOGICAL FILE. (It is not applicable to NON JOIN LOGICAL FILES).
(iv)
Field level entries (optional): The
field level entries give the system information about individual fields in the
record format.
(v)
Key field level entries: The key field level
entries give the system information about the key fields of a file. The field
names used as key fields are specified.
(vi)
Select / Omit level entries: These entire
give the system information about which records are to be returned to the
program when processing the file. These specifications apply to logical file
only.
9. Explain
JDUPSEQ and JDFTVAL.
JDUPSEQ:
This join –level keyword
is used to specify the order in which records with duplicate join fields are
presented when the JLF is read.
The format for this keyword is:
JDUPSEQ (Sequencing
field-name [*DESCEND])
ü
This keyword has no effect on the ordering of
records with unique keys.
ü
If *DESCEND is not specified then the default is
sequencing in ascending order.
JDFTVAL:
ü
When this file-level keyword is used the system
provides default values for all for fields when a join to a secondary file does
not produce any records.
ü
If this keyword is not specified a record in the
primary file for which there is
no corresponding record in the secondary file is skipped.
10. What are
the different between non-join logical files and join logical files.
Non
join logical file
|
Join
logical file
|
We can able to
insert or delete or update records using non-logical file.
|
Insertion,
updating or deletion of records is not possible in join logical files.
|
DFU can be
used to display non-join logical file.
|
DFU is not
available
|
1-32 record
format is specified
|
Only one
record format can be specified
|
Commitment
control is used
|
Commitment
control cannot be used.
|
11. How many
record formats can have physical & logical file.
ü
The physical file only one record format can be
specified.
ü
The logical file 1-32 record format is specified
12. What is
the advantage open query file?
ü
Dynamic selection of records
ü
It will sort the records based on the field
values.
ü
We can retrieve records based on Virtual fields.
ü
Can create join logical files
13. Explain non-join logical file?
Non-join
logical files can either be a simple logical file, which contains only one
record format or a multiple record format logical file, which contains more
than one
Record format.
Logical files can be derived from 1
to 32 physical files and so a logical file can have a maximum of 32 record
formats.
v Single
record format logical file:
If
a logical file is derived from single physical file it is called simple logical
file.
v Multiple
record format logical file:
Multiple
record non-join logical files will select records from 2 or more physical files
by referring to only one logical file.
ü
Each record format is always associated with one
or more physical file.
ü
The same PF can be used in more than one record
format.
v Specify
the entries in single or multiple format logical files:
1.File-level entries (optional): (REFACCPTH, DYNSLT)
REFACCPTH: The access
path information for this logical file is to be copied from another PF or LF.
Format of the keyword is:
REFACCPTH (LIB name /
DATABASE name)
DYNSLT: This keyword is selection and omission tests in the file. This
keyword specifies dynamic select/omit.
2.Record – level entries:(PFILE)
PFILE: The physical files containing the data to be accessed through the
Record formats being defined.
Format of the keyword is:
PFILE (LIB name /
PF name)
3.Field-level entries (optional)
4. Key field –level entries (optional)
5.Select and Omit –field level entries (optional)
REFACCPTH—It is applicable for non-join logical file only and meaning is
referring the access path from the PF or LF in the file – level entries.
PFILE--- it is applicable only for non-join logical file in record level
entries.
14. Explain
join logical file?
A join-logical file is a logical
file that combines two or more PF. In the record format not all the fields need
to exist in all the PF.
ü
A PF cannot be changed through a JLF.
ü
DFU cannot be used to display a JLF.
ü
Only one record format can be specified in a
JLF.
ü
Commitment control cannot be used with a JLF.
ü
Key fields must be fields defined in the join
record format and must be fields from the PRIMARY FILE.
Specify
the entries in join logical file:
1.File-level entries (optional):
(JDFTVAL)
2.Record-level entries: (JFILE)
3.join-level entries :(JOIN, JFLD,
JDUPSEQ)
4.field –level entries (optional): (JREF, ALL, CONCAT, DYNSLT, RENAME,
SST, TRNTBL)
5.Key field –level entries
(optional)
6.Select and Omit field level
entries. (Optional)
Ø
JFILE----It is similar to indicate that this is
a join logical field and it must have more than 2 physical files.
Ø
JOIN: It is similar that this file level entries
to be represent the position of the
files .There must one primary file and
can have more than I secondary files..
Ø
JFLD: Which feels we are going to join.
Ø
JREF: represents the primary file reference
field
Ø
JDFTVAL: represents that it as a left outer
join.
SELECT OMIT
Columns . . . 1
71 Edit KSENTHILS/EXAMPLE
SEU==> SELOMIT
FMT PF.
*************** Beginning of data
*******************
0001.00 R RECSEL
0002.00 EMPNO 5P 0
0003.00 EMPNAME 20A
0004.00 K EMPNO
****************** End of data
************************
EMPNO EMPNAME
000001 10,001
SHYAM
000002 10,002
SANKA
000003 10,003
SHYAM
000004 10,004
SENTH
000005 10,005
SANKA
000006 10,006
SHYAM
000007 10,007
SANKA
000008 10,008
SENTH
000009 10,009
SHYAM
000010 10,010
SENTH
****** ******** End of report ********
Columns . . . 1
71 Edit KSENTHILS/EXAMPLE
SEU==> SELOMILF
FMT LF...
*************** Beginning of data
*********************
0001.00 R RECSEL PFILE (SELOMIT)
0002.00 K EMPNO
0003.00 S EMPNO CMP (GT 10003)
0004.00 O EMPNAME CMP (EQ 'SHYAM')
****************** End of data
**************************
Display Report
EMPNO EMPNAME
000001 10,002
SANKA
000002 10,004
SENTH
000003 10,005
SANKA
000004 10,006
SHYAM
000005 10,007
SANKA
000006 10,008
SENTH
000007 10,009
SHYAM
000008 10,010
SENTH
****** ******** End of report ********
Columns . . . 1
71 Edit KSENTHILS/EXAMPLE
SEU==> SELOMILF
FMT LF
*************** Beginning of data
************************
0001.00 R RECSEL PFILE (SELOMIT)
0002.00 K EMPNO
0003.00 O EMPNAME CMP (EQ 'SHYAM')
0004.00 S EMPNO CMP (GT 10001)
****************** End of data
************************
EMPNO EMPNAME
000001 10,002
SANKA
000002 10,004
SENTH
000003 10,005
SANKA
000004 10,007
SANKA
000005 10,008
SENTH
000006 10,010
SENTH
****** ******** End of report ********
Columns . . . 1
71 Edit KSENTHILS/EXAMPLE
SEU==> SELOMIT
FMT PF.
*************** Beginning of data
*******************
0001.00 R RECSEL
0002.00 EMPNO 5P 0
0003.00 EMPNAME 20A
0004.00 K EMPNO
****************** End of data
************************
EMPNO EMPNAME
000001
20 SHYAM
000002
30 RAM
000003
40 TOM
000004
50 RAMESH
000005 60
SHYAM
000006
70 SHYAM
000007
80 TOM
000008
90 TOM
000009
100 VASU
****** ******** End of report ********
Columns . . . 1
71 Edit KSENTHILS/EXAMPLE
SEU==> SELOMILF1
FMT LF
*************** Beginning of data
************************
0001.00 R RECSEL PFILE (SELOMIT1)
0002.00 K EMPNO
0003.00 S EMPNO CMP (GT 50)
0004.00 S EMPNAME VALUES ('SHYAM')
****************** End of data **************************
EMPNO
EMPNAME
000001
20 SHYAM
000002
60 SHYAM
000003
70 SHYAM
000004
80 TOM
000005
90 TOM
000006
100 VASU
****** ******** End of report ********
Columns . . . 1
71 Edit KSENTHILS/EXAMPLE
SEU==> SELOMILF1
FMT LF.
*************** Beginning of data
************************
0001.00 R RECSEL PFILE (SELOMIT1)
0002.00 K EMPNO
0003.00 S EMPNO CMP (GT 50)
0004.00 O EMPNO RANGE (20 40)
****************** End of data
***************************
EMPNO EMPNAME
000001
50 RAMESH
000002
60 SHYAM
000003
70 SHYAM
000004
80 TOM
000005
90 TOM
000006
100 VASU
****** ******** End of report ********
Columns . . . 1
71 Edit KSENTHILS/EXAMPLE
SEU==> SELOMILF1
FMT LF
*************** Beginning of data
****************
0001.00 R RECSEL PFILE (SELOMIT1)
0002.00 K EMPNO
0003.00 S EMPNO CMP (GT 50)
0004.00 S EMPNAME VALUES ('SHYAM')
0005.00 O EMPNO RANGE (70 90)
****************** End of data
********************
EMPNO EMPNAME
000001
20 SHYAM
000002
30 RAM
000003
40 TOM
000004
50 RAMESH
000005 60
SHYAM
000006
70 SHYAM
000007
80 TOM
000008
90 TOM
000009
100 VASU
****** ******** End of report ********
Columns . . . 1
71 Edit KSENTHILS/EXAMPLE
SEU==> SELOMILF1
FMT LF
*************** Beginning of data
*****************
0001.00 R RECSEL PFILE (SELOMIT1)
0002.00 K EMPNO
0003.00 S EMPNO CMP (GT 50)
0005.00 O EMPNO RANGE (70 90)
****************** End of data
************************
EMPNO EMPNAME
000001
20 SHYAM
000002
30 RAM
000003
40 TOM
000004
50 RAMESH
000005
60 SHYAM
000006
70 SHYAM
000007
80 TOM
000008
90 TOM
000009
100 VASU
****** ******** End of report ********
15. Explain
self join?
Joining
a file to it self is known as self-join.
(Or)
A physical file can be joined to
itself to read records that are formed by combining two or more records from
the PF itself.
Columns . . . 1 71 Edit KSENTHILS/EXAMPLE
SEU==> SEJOIN
FMT PF
*************** Beginning of data
********************
0001.00 R EMP
0002.00 EMPID 5P 0
0003.00 EMPNAME 20A
0004.00 MGRID 5P 0
0005.00 K EMPID
****************** End of data
***************************
EMPID EMPNAME MGRID
000001 10,001
SEBI JOSEPH C. 50,001
000002 10,002
PURUSHOTTAM 50,002
000003 10,003
SAMEER DIGHE 50,003
000004 10,004
SHARATA 50,004
000005 10,005
PAUL
50,005
000006 50,001
SHIVARAM 90,001
000007 50,002
GAURAV 90,002
000008 50,003
KING 90,003
000009 50,004
SAM
90,004
000010 50,005
ANIL
90,005
****** ******** End of report ********
Columns . . . 1
71 Edit KSENTHILS/EXAMPLE
SEU==> SELJOIN
FMT LF
*************** Beginning of data
**************************
0001.00 R EMP JFILE (SEJOIN SEJOIN)
0002.00 J JOIN (1 2)
0003.00 JFLD (MGRID EMPID)
0004.00 EMPID JREF (1)
0005.00 EMPNAME JREF (1)
0006.00 MANAGER RENAME (EMPNAME) JREF (2)
0007.00 COLHDG
('MANAGER')
****************** End of data
*****************************
EMPID
EMPNAME MANAGER
000001 10,001
SEBI JOSEPH C. SHIVARAM
000002 10,002
PURUSHOTTAM GAURAV
000003 10,003
SAMEER DIGHE KING
000004 10,004
SHARATA SAM
000005 10,005
PAUL
ANIL
****** ******** End of report ********
Columns . . . 1
71 Edit KSENTHILS/EXAMPLE
SEU==> SELJOIN1
FMT LF
*************** Beginning of
data************************
0001.00 R EMP JFILE (SEJOIN SEJOIN)
0002.00 J JOIN (1 2)
0003.00
JFLD (MGRID EMPID)
0004.00 EMPID JREF (1)
0005.00 EMPNAME RENAME (EMPNAME)
0006.00 JREF (1)
0007.00 MGRID JREF (2)
****************** End of data
*************************
EMPID EMPNAME MGRID
000001 10,001 SEBI JOSEPH C. 90,001
000002
10,002 PURUSHOTTAM 90,002
000003
10,003 SAMEER DIGHE 90,003
000004
10,004 SHARATA 90,004
000005
10,005 PAUL 90,005
****** ********
End of report ********
Columns . . . 1
71 Edit KSENTHILS/EXAMPLE
SEU==> SELJOIN1
FMT LF
*************** Beginning of
data************************
0001.00 R EMP JFILE (SEJOIN SEJOIN)
0002.00 J JOIN (1 2)
0003.00
JFLD (MGRID EMPID)
0004.00 EMPID JREF (1)
0005.00 MANAGER RENAME (EMPNAME)
0006.00
JREF (2) COLHDG ('MANAGER')
0007.00 MGRID JREF (2)
****************** End of data
****************************
EMPID MANAGER MGRID
000001 10,001
SHIVARAM 90,001
000002 10,002
GAURAV 90,002
000003 10,003
KING
90,003
000004 10,004
SAM
90,004
000005 10,005
ANIL 90,005
****** ******** End of report ********
16. Explain
normalization?
It
is the process of segregating and decomposing information held within a system
into logically grouped, related. Uniquely identifiable entities
17. How to create
user define command?
By
using the CRTCMD command process the command definition statements to create
the command definition object. The CRTCMD command may be run interactively or
in a batch job.
Steps for
creating CRTCMD commands
1.Enter the command definition
statements into the source file
Command type CMD
SKANDASAMO/CLP
CMD1
*************** Beginning of data
****************************
0001.00
CMD
****************** End of data
*******************************
2. Enter source program in any
language
SKANDASAMO/CLP
DLIB
TYPE :CLP
*************** Beginning of data
******************************
0001.00
PGM
0002.00
DSPLIBL
0003.00
ENDPGM
****************** End of data
*********************************
3. Create the command by using
CRTCMD take f4
Command . . . . . . . . . . . . > KS Name
Library . . . . . . . . . . . > SKANDASAMO Name, *CURLIB
Program to process command . . . > DLIB Name, *REXX
Library
. . . . . . . . . . . > SKANDASAMO
Name, *LIBL, *CURLIB
Source
file . . . . . . . . . . > CLP Name
Library
. . . . . . . . . . . > SKANDASAMO Name, *LIBL, *CURLIB
Source
member . . . . . . . . . > CMD1 Name, *CMD
Threadsafe
. . . . . . . . . . . *NO *YES, *NO, *COND
Multithreaded job action . . . . *SYSVAL
*SYSVAL, *RUN, *MSG, *NORUN
Text
'description' . . . . . . . *SRCMBRTXT
18. How do
copy a record in existing object to another object?
By using CPYF command if you want to
copy a data one position to another position. We Can give the records copying
position starting and ending of the records. We want particular records means.
We can give the command in sq position.
CPYF take F4
File name (source file) : PF01
Lib-name
:SKANDASAMO
New file name :PF02
Lib-name
:SKANDASAMO
:*FIRST
Replace :*ADD
:*NO
:*CHAR
Start
position :1000
End position :2000
Sql command :
FILED EMPNO
CONDITION *GT
VALUE 40
Record format mapping :*MAP(add field)
+DROP (delete field)
19. Explain
the command ADDPFCST?
ADDPFCST
is a command that is used to define the Constraint on your physical file. The
constraint has several types. These are REFCST, UNQCST and PRIKEY. By the by,
this command is helps to define Update rules and Delete rules.
20.How will
be establishing REFERENTIAL INTEGTITY in as/400 system?
v
By using ADDPFCST command establish in as/400
system.
v
Referential integrity concepts
Ø
Referential constraint
Ø
Parent and dependent files
Ø
Unique key and primary keys
Ø
Parent and foreign keys
Ø
Delete rule
Propagate delete from parent file to dependent file
Restrict delete on parent file
Ø
Update rule
Restrict inconsistent updates
Ø
Insert operations on dependent file are checked
v
Referential constraint
ü
A referential constraint is a relation between
two files, the parent file and the dependent file.
ü
This relationship establishes that every record
in the dependent file has to have a matching record in the parent file.
ü
The key value of any record in the dependent
file must match a key value in the parent file.
ü
We call parent key the key of the parent file
and foreign key the key in the dependent file.
ü
The parent key has to be unique and cannot
contain null values.
ü
The foreign key value has to match one (any only
one) value of the parent key. Otherwise the foreign key can contain a null
value.
ü
A record in the parent file may be related to
multiple records in the dependent files; each record in the dependent file has
to have just one” parent” or have a null foreign key.
ü
Primary key we means a unique and ascending key,
which is the primary, access path for a PF and cannot contain null values.
ü
Primary access path for a database file on the
AS/400 in the access path used to access the file by using OPNDBF command.
v
Delete rule
We can delete a record from parent file or dependent file first check for
delete rule.
ü
CASCADE: If we want to delete a record from the
parent file and its parent key is matching records in a dependent file, the
DBMS will delete all the matching records of the dependent file.
ü
SETNULL: If we delete a record from the parent
file and parent key is matching some records in a dependent file, the DBMS will
set to null the matching keys in the dependent file.
ü
SETDEFAULT: This is like previous case, but
matching occurrences in the foreign key are set to their default values. The
default value for the foreign key has to match a record in the parent file.
ü
RESTRICT: The DBMS will prevent any attempt to
delete records in the parent file if its key is matching some records in the
dependent file.
ü
NO ACTION: This has the same meaning as
restrict, but different timing. When we use *NOACTION and an invalid delete
operation is about to take place, DB2 /400 will delay any error message until
the end of the operation itself, allowing for instance the activation of a
before trigger attached to the PF.
Ø
If *restrict is in use, the exception message is
sent immediately.
Ø
Deleting records in a dependent file is always
permitted.
v
Update rule
ü
RESTRICT: We cannot change the value in a parent
key if the old values are matching some records in the dependent file.
Ø
The
remaining portion of the record can always be updated.
Ø
We cannot update a foreign key in a dependent
file if the new value for the key is not null and does not match any value of
the parent key.
ü
NO
ACTION: This is same as * restrict but with different timing considerations.
Refer above; where we describe no action delete operations.
v
Inserts
ü
There is no insert rule to be chosen, but
referential integrity prevents any insert in the dependent file if the new
record has no match in the parent file and its foreign key is not null.
21. How to
create a trigger in AS/400?
The trigger is an event to be
performing before or after any change to a database. When a trigger is added to
a physical file, three attributes need to be defined.
ü
The first is the event that will cause the
trigger to fire. A trigger event can be an insert, an update, or a delete a
record from the file.
ü
The second attribute to define is when to fire
the trigger-before or after the event.
ü
The third attribute to define is the
identification of the trigger program to by run.
We
can infer that up to six triggers can be defined for each PF.
ü
For each update, insert, and delete
ü
Two triggers can be defined
Ø
One that runs before the event
Ø
One that runs after the event
These trigger are added using the ADDPFTRG
ü
Can be removed with the remove PF trigger
command (RMVPFTRG)
The command ADDPFTRG takes F4
PF PF001
LIB SKANDASAMO
TRIGGER
TIME *AFTER *BEFORE *AFTER
TRIGGER EVEVT *UPDATE *UPDATE
*INSERT *DELETE
PROGRAM PGM001 NAME
LIB SKANDASAMO
REPLACE
TRIGGER *NO *NO *YES
ALLOW REPEATED *NO *NO *YES
22.What is
the data area?
A data area is an object used to
store data for access by any job running on the system. It is permanent
storage. A data area can be used whenever you need to store information of
limited size, independent of the existence of the programs or files.
v
Typical uses of data areas are:
Ø
To provide an area to pass information within
job.
Ø
To provide a field that is easily and frequently
changed to control references within a job such as supplying the next check
number.
Ø
To provide a constant field for use in several
jobs, such as tax rate
Ø
To provide limited access to a large process
that requires the data area.
Ø
A data area can be locked to a single user, thus
preventing other users from processing at the same time.
v
To create a general data area use the command
(CRTDTAARA)
v
To retrieve values from data area use
(RTVDTAARA)
v
To change this value, use (CHGDTAARA)
v
To
display the current value, use (DSPDTAARA)
v
To
delete a data area use (DLTDTAARA)
v
Type of data area created by the system
Ø
Local data area
Ø
Group data area
Ø
Program initialization parameter (PIP) data area
SKANDASAMO/RPGILE
DAREA
*************** Beginning of data
******************************
0001.00 DS S 10A
0002.00 DG S 10A INZ ('I HATE YOU')
0003.00 C *DTAARA
DEFINE DATA1 S
0004.00 C *LOCK IN S
0005.00 C EVAL S=G
0006.00 C OUT S
0007.00 C S DSPLY
0008.00 C SETON LR
******************
End of data ***********************************
OUTPUT
DSPLY I HATE YOU
AUTO NUMBER GENERATION
SKANDASAMS/TEST
TESTEX19
*************** Beginning of data
*******************************
0001.00 DA S 4S 0
0002.00 C *DTAARA DEFINE
DATA2 A
0003.00 C *LOCK IN A
0004.00 C EVAL A=A+1
0005.00 C OUT A
0006.00 C A DSPLY
0007.00 C SETON LR
0008.00 C
0009.00 C
0010.00 C
****************** End of data
***********************************
OUTPUT
DSPLY 5
DSPLY 6
23.Define
LDA, GDA, and PIP?
v
LOCAL DATA AREA (LDA)
ü
A local data area is created for each job in the
system automatically, when you submit a job.
ü
Only one
LDA can be created by submitting
a job.
ü
The system create a local data area, which is
initially filled with blanks, with a length of 1024 and type *CHAR.
ü
When you submit a job using SBMJOB command, the
value of the submitting job’s local data area is copied into the submitted
job’s local data area.
ü
You can refer to your job’s local data area by
specifying *LDA for the DTAARA keyword on the CHGDTAARA, RTVDTAARA, and
DSPDTAARA commands or *LDA for the sub string built-in function (%SST)
ü
The following is true of a local data area:
Ø
The local data area cannot be referred to from
any other job.
Ø
You cannot create, delete or allocate a local
data area.
Ø
We can to change the contents of LDA by the by
using CHGDTAARA command.
Ø
No library is associated with the local data
area.
ü
ACCESSING LDA:
Ø CHGVAR VAR (%SST (*LDA 3 5))
VALUE(123)
OR
Ø
CHGDTAARA DTAARA (*LDA (3
5)) VALUE(123)
Ø CHGVAR VAR (&ROLNO) VALUE (%SST (*LDA 3 5))
OR
Ø
RTVDTAARA DTAARA (*LDA (3 5)) RTNVAR (&ROLNO)
v
GROUP DATA AREA (GDA)
ü
The system creates a group data area when an
interactive job becomes a group job.
ü
Only one group data area can exist for a group.
ü
The group data area is deleted when the last job
in the group is ended, or when the job is no longer part of the group job.
ü
A group data area, which is initially filled
with blanks, has a length of 512 and type *CHAR.
ü
The following is true for a group data area
Ø
You cannot use the group data area as a
substitute for a character variable on the sub string built-in function.
Ø
A group data area cannot be referred by jobs
outside the group.
Ø
You cannot create, delete, or allocate a group
data area
Ø
No library is associated with a group data area.
ü
Example
CHGDTAARA
DTAARA (*GDA) VALUE (‘DECEMBER 1996’)
RTVDTAARA
DTAARA (*GDA) RTNVAR (&GRPARA)
v
PROGRAM INITIALIZATION PARAMETER (PIP)
DATA AREA
ü
A PIP data area is created for each pre-started
job when the job is started.
ü
The object sub-type of the PDA is different then
a regular data area.
ü
The PIP can only be referred to by the special
value name *PDA.
ü
The size of the PDA is 2000 bytes but the number
of parameter contained in it is not restricted.
24. What are
various steps accessing data area in CL?
ü
The first create a general data area use the
command (CRTDTAARA)
ü
To retrieve values from data area use
(RTVDTAARA)
ü
To change this value, use (CHGDTAARA)
ü
To display the current value, use (DSPDTAARA)
ü
To delete a data area use (DLTDTAARA)
25. Various
types of message available in CL?
Message is the interface between
operating system and the programs or user and program. We can classify the
message into two types namely
v
Immediate message
v
Predefined message
v Immediate
message
Which does the program
or system user create when they are sent and are not permanently stored in the
system?
ü
Control language
Ø
SNDUSRMSG
Ø
SNDPGMMSG
Ø
SNDMSG
Ø
SNDBRKMSG
ü
Display files
Ø
ERRMSG
Ø
SFLMSG
ü
INQUIRY and INFORMATIONAL message:
Using SNDUSRMSG command to send type of message
v Predefined
message
Which
are created before they are used. These messages are placed in a message file
(queue) when they are created, and retrieved from the file when they are used.
ü
Control language
Ø
SNDUSRMSG
Ø
SNDPGMMSG
Ø
RTVMSG
ü
Display files
Ø
ERRMSGID
Ø
SFLMSGID
Ø
MSGCON
Ø
MSGID
ü
COMPLETION and DIAGNOSTIC message
Ø
Using SNDPGMMSG command these of message can be
sent to any message queue.
Ø
DIAGNOSTIC message tell the calling program
about errors detected by the program. Completion message tell the result of
work done by the program.
ü
STATUS messages
Using SNDPGMMSG command status message can be sent to
it’s caller’s program message queue or to the external message queue for the
job. These message tell the receiving program the status of the work performed
by the sending program.
ü
ESCAPE message
Using SNDPGMMSG command escape message from a CL program
can be sent to it’s calling program. An escape message tells the calling
program ended abnormally and why.
ü
NOTTFY message
Notify message from a CL program can be sent to the
message queue of calling program or to the external message queue. A notify
message tells the calling program about a condition under which processing can
continue.
ü
Predefined message are stored in message file
Ø
To create a message file
CRTMSGF
MSGF (MFILE) SIZE () AUT()
TEXT ()
Ø
Create and maintain messages
ADDMSGD
CHGMSGD
OR WRKMSGD
DSPMSGD
RMVMSGD
Message file QCPFMSG in
library QSYS contain the system message
26.
What will MONMSG command in do?
The monitor message (MONMSG) command
monitors the message send to the program message queue for the conditions
specified in the command. If condition exists, the CL command specified on the
MONMSG command is run.
v
Types of monitor message
ü
Escape Message
ü
Status or Notify Message
v
Escape Message
Escape message are send to tell your
program of am error condition that forced the sender to end. By monitoring for
escape message, you can take corrective actions or clean up and end your
program.
v
Status or Notify Message
Status and notify message are send to tell your program of
an abnormal condition that is not serious enough for sender to end. By
monitoring for status or notify message, your program can detect this condition
and not allow the function to continue.
v
Two levels of MONMSG command
ü
Program level
ü
Specific command level
v
Program level
The MONMSG is specified immediately
following the last declare command in your CL program. You can use as many as
100 program-level MONMSG commands in a program.
v
Specific command level
Here the MONMSG command immediately
follows a CL command. You can use as many as 100 commands-level MONMSG commands
for a single command.
v
Monitor message command syntax
MONMSG MSGID () CMPDTA () EXEC ()
ü
MSGID-Required
Ex: MSGID (MCH1211)
ü
CMPDTA –(Optional)
Ex: MONMSG MSGID (MCH1211) CMPDTA (LIB)
ü
EXEC - -(Optional)
CL command
27
What are the disadvantages of using CL over RPG?
v
We can able to read only records but we cannot
able to write or update or delete records.
v
We can have only one file to be used in a CL
program
v
We cannot able to use printer files in CL
v
We cannot able to use subfile in a CL program
28
How you can read and write single command in CL?
By using SNDRCVF command.
Example
Type: CLP
SKANDASAMO/CLP
ADD
*************** Beginning of data
********************************
0000.01
/*ADDING TWO NUMBERS */
0001.00 PGM
0002.00 DCLF FILE(SKANDASAMO/CLPSCR) RCDFMT(SECLP)
0003.00 SNDRCVF RCDFMT(SECLP)
0004.00 CHGVAR VAR(&RES) VALUE(&NUM1 + &NUM2)
0005.00 SNDRCVF RCDFMT(SECLP)
0006.00 ENDPGM
****************** End of data
**********************************
OUTPUT
FIRST
NUMBER: 12
SECOND NUMBER: 12
----------
RESULT= 0000024
----------
29
How to retrieve a date in CL?
By using RTVSYSVAL command we can
get the system dates. For getting date QDATE.
The various format of date are
*DMY, *MDY, *YMD, *YYMD,
*JOL, *JOB
30
How to send the message to the screen SNDPGMMSG?
BY passing unique message ID message
data and message file.
SNDPGMMSG syntax
SNDPGM MSG MSGID (MSG0001) MSGF (MSGSUB)
31
What is the open query file?
It is a dynamic record selection.
The OPNQRYF command acts as a filter between the processing program and the
database records. The database file can be a PF or LF. It will create open data
pathway to access (retrieve) data file.
If you want to specify any SQL
operation within a CL we have to use OPNQRYF
v
Functions supplied by OPNQRYF are:
ü
Dynamic record selection.
ü
Dynamic keyed sequence access path
ü
Dynamic keyed sequence access path over a join
ü
Dynamic join
ü
Handling missing records in secondary join files
ü
Unique-key processing
ü
Mapped field definitions
ü
Group processing
ü
Final total-only processing
ü
Improving performance
ü
Open query identifier (ID)
32.
What is the different between OPNQRYF and SQLRPG?
OPNQRYF
|
SQLRPG
|
OPNQRYF
will come along with OS/400 system and no need to have any additional package
needed to execute it
|
We
need to have SQLRPG installed in as/400 system which involves additional cost
to the programmers
|
OPNQRYF
is faster as compared to SQLRPG
|
It is
slower
|
OPNQRYF
is nothing but a dynamic logical files will be created and the records
|
SQLRPG
is imbedding SQL statements directly within SQL statement
|
33.
What are the various steps in creating OPNQRYF?
Totally five steps involve in
creating OPNQRYF
v
OVRDBF
ü
FILE (file PF) TOFILE (LIB/ PF) SHARE (*Yes)
Ø
If a PF is having 100 records and if we want to
override the PF so that it continues only the specific number of records we are
using OVRDBF
v
OPNQRYF
ü
FILE (LIB / PF) QRYSLT (‘EMPNO *EQ ‘ *BCAT
&A)
Ø
If you want to perform any SQL operation we have
to declare in OPNQRYF command only.
Ø
In case of OPNQRYF we can perform expression
only based on characters but not on numeric.
ü
*BCAT
If you
want to perform any charter expression are using *BCAT expression which will
provide a blanks in between the 2 variables.
ü
%WLDCRD
Ø
It is similar to %LIKE in SQL
Ø
QRYSLT (‘EMPNAME *EQ %WLDCRD (“S* “)’)
It
will fetch all the records whose empname starts from S.
ü
*CT
Ø
It will fetch all the records, which conditions
the particular charter.
Ø
QRYSLT (‘EMPNAME *CT “S” ‘)
ü
% RANGE
Ø
It will fetch the records within the specific
range
Ø
QRYSLT (‘EMPNO *Eq % RANGE (100 110)’)
v
CALL PGM (LIB/NAME) PARM ()
v
DLTOVR
ü
As we see early the main file logically
overridden and after performing the necessary operation, we have to delete the
logical file so that the main file contains the actual records for this DLTOVR
will be used.
ü
DLTOVR FILE
(OPNPF)
v
CLOF
ü
We have to close the file, which has been opened
ü
CLOF OPNID
(OPNPF)
You
will copy overridden file records using CPYFRMQRYF
v
CPYFRMQRYF
ü
Since OVRDBF is logical we cannot able to list
the variables, which satisfy the query condition. To see the records being
selected we have to copy from the source file to a temporary file for this
CPYFRMQRYF will be used
ü
CPYFRMQRYF FROMOPNID
(OPNPF) TOFILE (LIB/NAME) MBR (*REPLACE) CRTFILE (*YES) FMTOPT (*NOCHK)
v
RUNQRY
ü
We have copied the contents satisfy the query
into a temporary file using CPYFRMQRYF. If we run the destination file we got
the actual records, which satisfy the query.
ü
RUNQRY QRYFILE
(LIN/NAME)
Example:
Database
PF
SKANDASAMO/CLP
OPENF
*************** Beginning of data
****************************
0000.01
C UNIQUE
0001.00
C R OPNQFILE
0002.00
C OEMPNO 5S 0
0003.00
C OEMPNAME 20A
0004.00
C OADDRESS 20A
0005.00
C ODOB 8S 0
0006.00
C K OEMPNO
****************** End of data
********************************
Data
file
Display
Report
OEMPNO
OEMPNAME
OADDRESS ODOB
000001
1,001 SENTHIL SALEM1 1,232,002
000002 1,002
KUMAR TRICHY 12,123,000
000003 1,003
SHYAM SALEM 12,345,000
000004 1,004
RAMESH SALEM 1,010,100
000005 1,005
BALU SALEM 222
000006 1,007
KUMAR JJ 32,938
******
******** End of report ********
CL program
SKANDASAMO/CLP
OPNQFILE5
*************** Beginning of data
*********************************
0001.00
PGM
0002.00 DCL VAR(&A) TYPE(*CHAR) LEN(5)
0003.00 DCLF FILE(SKANDASAMO/OPNQFILE3) RCDFMT(OPNF3)
0004.00 SNDRCVF RCDFMT(OPNF3)
0005.00 CHGVAR VAR(&A) VALUE(&OEMPNO)
0006.00 OVRDBF FILE(OPENF) SHARE(*YES)
0006.01 OPNQRYF FILE((SKANDASAMO/OPENF)) QRYSLT('OEMPNO *EQ' +
0006.02 *BCAT &A)
0006.03 CPYFRMQRYF FROMOPNID(OPENF)
TOFILE(SKANDASAMO/TEMP) +
0006.04 MBROPT(*REPLACE)
CRTFILE(*YES)
0009.00 DLTOVR FILE(OPENF)
0010.00 CLOF OPNID(OPENF)
0010.01 RUNQRY QRYFILE((SKANDASAMO/TEMP))
0011.00 ENDPGM
****************** End of
data*********************************
OUTPUT
EMPLOYEE NUMBER: 1001
OEMPNO
OEMPNAME OADDRESS ODOB
000001 1,001
SENTHIL SALEM1 1,232,002
****** ******** End of report ********
34.
How the records are accessed for using OPNQRYF?
By creating open data
pathway to access (retrieve) data file.
35.
What is the journal?
Any changes in PF will be recorded. A journal is an object
of type *JRN which detects and records that cause a PF to change.
The information recorded by the journal is stored in an
object *JRNRCV called journal receiver.
36.
What are the various steps creating journal?
v
The steps to start journaling
ü
Create a journal receiver -
CRTJRNRCV
ü
Create a journal -
CRTJRN
ü
Start journaling of a PF -
STRJRNPF
ü
Backup the PF -
SAVOBJ
v
The steps to end journaling
ü
End journaling a PF -ENDJRNPF
ü
Delete a journal -DLTJRN
ü
Delete the last journal receiver -DLTJRNRCV
ü
Save journal receivers -SAVOBJ
v
The commands used for house keeping purposes
ü
Change journal -CHGJRN
ü
Save object -SAVOBJ
ü
Delete a journal receiver -DLTJRNRCV
v
The commands used in case of a failure are
ü
Display journal entries -DSPJRN
ü
Apply journal changes -APYJRNCHG
ü
Remove journal changes -RMVJRNCHG
ü
Restore a saved object -RSTOBJ
37. How you can list all the LF of a PF?
By
using DSPDBR command it is to list all the files, which are related to a PF. It
displays all the LF that is referring the PF and also lists the child table if
it is having a relation through ADDPFCST.
38.
What is use of DSPFFD and DSPFD?
v
DSPFD (display file description)
ü
It is used to display the details about the file
when it is created.
v
DSPFFD (display file field description)
ü
It is used for listing details about individual
fields.
39.
What is the data queue?
ü
It is a temporary storage. We can able to store
and retrieve the data, but once data is retrieved the data is lost.
ü
First create the data queue by using CRTDTAARA
command
ü
Sending a message to a data queue (QSNDDTAQ,
QRCVDTAQ, And CLRDTAQ)
Data query is nothing
but a queue in which are program can send a data and other program or the same
program can receive the program. QSNDDTAQ is stored in QSYS.
40.
Explain QSNDDTAQ and QRCVDTAQ?
v
QSNDDTAQ
ü
By using this command sent data same / another
program.
ü QSNDDTAQ PARM (QUEUE NAME LIB &LEN
&DAT)
v
QRCVDTAQ
ü
By using this command receive data same /another
program
ü
QRCVDTAQ PARM (QUEUE NAME LIB &LEN &DAT &WAIT)
41. What are the mandatory
parameters for declaring a Data queue?
ü
QUEUE NAME
ü
LIB NAME
ü
LENGTH
ü
DATA
ü WAIT
42. What will RUNSQLSTM will
do?
ü
If we want to execute set of SQL statement then
we can write all the SQL statement to be including with the source.
ü
Type as SQL
ü
Only insert, update and delete and no select is
allowed.
ü
Then use STRSQLSTM to execute the program
ü
RUNSQLSTM
SRCFILE (LIB/TEST) SRCMBR (SQL01) COMMIT (*NONE)
43. What is a field reference
file?
This is PF,
which does not have any data and contains only the field descriptions and these
fields are referred in other PF by using REF and REFFLD
44. What is the difference
between OPM, EPM and RPGLE?
OPM
|
EPM
|
RPGLE
|
Original program model is the
old RPG/400 system, which will not allow a program type to call another
program type. Like CL, RPG, COBOL, PL/I, BASIC only supported.
|
Extended program model will
support C, PASCAL, FORTRAN and another programming concepts.
|
It supports mixed program
support in which you can combine any program with another type of program. it
supports modularity, copy book, better call performance.
|
Version is V1R2
|
Version is V2R3
|
45. Explain WRKOBJPDM and
DSPOBJD?
v
WRKOBJPDM
If we want to
list all the source PF or files of particular type the WRKOBJPDM with file type
as PF-SRC for source PF IOR *file for listing all the files extra can be given.
v
DSPOBJD
If we know
library name and object name and we want to know the source PF where it is
residing then DSPOBJD with option as *services instead of basic will give the
source PF name.
46. How to create RPG, RPGLE,
CL, CLLE, PF, LF, PRN, and display file?
RPG -by using CRTRPGPGM command
RPGLE -by using CRTBNDRPG Command (or) 14
RPGLE -by using CRTRPGMOD (or) 15 /CRTPGM
command
CL
-by using CRTCLPGM command
CLLE
-by using CRTBNDCL
CLLE -by using CRTCLMOD/CRTPGM command
PF
-by using CRTPF command
LF -by
using CRTLF command
PRN -
by using CRTPRTF command
DSPF -by using CRTDSPF command
47. It is possible to insert
record to JOIN LF?
NO, insertion,
updating or deleting of records is not possible in JOIN LF.
48. What are the advantages of
using AS/400 system?
AS/400 is designed
and build as a total system. This means that facilities such as relational
database and networking capability (and much more) are fully integrated into
the operating system and machine. The user communication with all these
functions through a single control language
v
Layered machine architecture
v
Object orientation
v
Single-level storage
v
Hierarchy of microprocessors
v
Security levels
ü
Layered machine architecture
This insulates
users from hardware characteristics. It enables them to move to new hardware technology
at any time, without disrupting their application programs. We can able to
change any layer without affecting the other layer. If any problem occurs in
OS, then we can work with application program independently and this is the
major advantage of AS/400 system.
ü
Object orientation
Every that can be stored or retrieved on the system is known as an
“objects”. Objects exist to make users independent of the internal structure of
the machine.
ü
Single- level storage
It provides contiguous memory between main storage and disk storage. It
provides authority to add any disk space so that use. Can access it without any
problem. There is no need for the user to think where to store the application
program.
ü
Hierarchy of microprocessors
Various types of microprocessors are used in AS/400. Each and every
microprocessor is allocated for specific purpose. If one chip is for input
operation and other for output then we can do both input and output operation
since both the microprocessor can perform independently.
ü
Security levels
It will list
the various security provided by the system.
Ø
No security
Ø
Password security
Ø
Resource security
Ø
OS security
Ø
Certifiable security
49. What are the various types
of Security in AS/400?
AS/400
is designed for business that requires levels of security ranging from nothing
at all to full government certifiable security. By setting a system value, we
can configure five increasing level of security.
v
No security
v
Password security
v
Resource security
v
OS security
v
Certifiable security
When as AS/400
is configured, three system values dealing with security need to be specified.
These values are QAUDJRL, QMAXSIGN & QSECURITY.
QSECURITY:
This system value determines the
level of security enforcement. S/38 and the original AS/400 only had three of
system security. At VIR3 of OS/400 the fourth level of security was added, and
the fifth level of security was added at V2R3. The valid values for QSECURITY
are 10,20,30,40,50.
QMAXSIGN:
This system value determines the
maximum number of signon attempts allowed. If the number of unsuccessful
attempts to signon to the system exceeds this number, the terminal or device
that attempted the signon is varied off.
QAUDJRL:
AS/400 supports an optional security
auditing function. If this function is specified, certain security events are
journal. The specific events that are logged in the security audit journal are
determined by the value specified in the QAUDJRL system value and the level of
system security specified.
Level 10: No
security
System is shipped with
minimum-security level and doesn’t require any password to sign on. If user
profile doesn’t exists with the same name as the
Userid the
system creates the user profile with that name.
Level
20:Password security
Minimum security is
active and password is required to sign on. The user profile must already exist
for the user before we can sign on the system
Level
30:Resource security
Password security is
active and user must specify given authority to resources. This level is
recommended because the system doesn’t give the user authority to access the
entire object on the system after the user sign on.
Level
40:Operating system security
Password security,
resource security and OS integrity are active. User must be especially given
authority to resources this level providing more security than level 30.
Ø
All attempts to access object using interfaces
that are not supported fail.
Ø
Programs that contains restricted instructions
will not compile
Ø
Users submitting jobs using the job description
containing the user profile name, must have *USE authority to user profile.
Level 50: C2
level security
All the level 40
security attributes are included at level 50,and in addition some of the
interfaces are modified to meet the C2 standards.
50. Explain user profile and
group profile?
ü
User profiles are used to identify users to the
systems and verify authorities on the system (DSPUSRPRF, CHGUSRPRF, EDTOBJAUT)
ü
User profiles tell the system who can sign on
and what functions the user can perform on the system on the system resources
after signing on.
ü
The security officer or security administrator
can create it.
ü
The user profile defines the following
capabilities for a particular user
Ø
User class
Ø
Object owned and authorized
Ø
Authorization of objects
Ø
Privileged instructions
Ø
Password
Ø
Current library
Ø
Initial program and menu
Ø
Delimited-capability user
Ø
Limit device session
Ø
Maximum storage allowed
Ø
Priority limit
Ø
Special environment
ü User
class
When identifying a user on the system you can specify the user class in
the user profile. AS/400 has five user classes that determine the level of
system’s access a user is permitted. The five user classes, starting the
highest level of access, are
ü
Security officer (*SECOFR)
ü
Security administrator (*SECADM)
ü
Programmer (*PGMR)
ü
System
operator (*SYSOPR)
ü
User (*USER)
ü Authorization
of objects
Object authority, or the right to user to use or control an object comes
in two categories.
Ø
Object rights
Ø Data
rights
ü Object
rights
Object
rights are concerned with the object itself.
Object rights
assign a user the following authority
Ø
Operational rights (*OPER)
Ø
Object management rights (*OBJMGT)
Ø
Object existence rights (*OBJEXT)
Operational right (*OPER)
The authority to use an object, looks at its description, and restores
it. A user must have operational rights to a program to execute it.
Object management rights (*OBJMGT)
The authority to grant and revoke and user rights move and rename object,
and members to database file.
Object
existence rights (*OBJEXT)
The authority to delete, free storage, save restore or transfer ownership
of an object.
ü Data
rights
Data rights apply to the data contained within the object.
Types of data rights
Ø
Read (*READ)
The authority to retrieve the
contents of an object entry.
Ø
Add (*ADD)
The authority to add entries to an object. For example adding records to
a database file requires ADD rights for the library.
Ø
Update (*UPD)
The authority to change the entries in an object requires UPD rights for
the file.
Ø
Delete (*DLT)
The authority to remove object in an object. For example deleting a
program from a library requires DLT rights for the library. Deleting records
for a database the requires DLT rights the database file.
51. What are the various ways
creating access path?
Access path means the records are to be retrieved
from a file. The records can be retrieved from a PF or a LF either ARRIVAL
SEQUENCE or by KEYED SEQUENCE. For LF you can also select records using select
or omit keywords
Arrival
sequence access path
ü
Sequentially, where each record is taken from
the next sequential physical position in the file.
ü
Directly by relative records number, where the
record number is identified by its position from the start of the file.
Keyed
sequence access path
It is based on the contents of
the key fields as defined in DDS. This type of access path is updated in the
contents of a key field is changed.
There are three
ways of bounding the access path
ü
Immediate
ü
Rebuild
ü
Delayed
v Immediate
Access path is
always maintained for every opening in a file.
v Rebuild
Access
path is maintained when the file is open and various updates are recorded and
the access path is rebuild every time when the access path is closed.
v Delayed
Access
path is maintained when the file is opened and updates recorded. When the file
is closed all the updates to the records are closed together but it is not
rebuild. When the recorded update percentage exceeds 25% then rebuild of
records take place.
52.How many record formats PF,
LF, DSPF and SFL?
PF-
1 , LF- 32, DSPF-1024 SFL-512
53.What is the command to
create menu?
CRTMNU –
Create Menu
54. What is the difference
between CALL and Transfer Control (TFRCTL)?
CALL
|
TFRCTL
|
1.Call will transfer the
control according with the CALL STACK
|
Transfer Control (TFRCTL) will
remove the CALL STACK and transfer the control to the calling program.
|
2. The CALL is used to
different types of programs.
Ex: RPGILE/400,CL/400,C/400,COBOL/400.
|
TFRCTL is only used in CL
programs.
|
55.
Explain ADDDUR, SUBDUR, EXTRCT and TEST?
ADDDUR:
It is a
powerful opcode, which is used to add any date related function to a particular
date, time or timestamp.
Example:
SKANDASAMO/DATE
ADDDUR
*************** Beginning of data
********************************
0000.01
d*date function using the adddur
0001.00 DTIMESTE S Z
0001.01 DTIME5 S Z
0002.00
DDATE1 S D
0002.01
DDATE2 S D
0002.02
DDATE3 S D
0002.03
DDATE4 S D
0003.00
DTIME1 S T
0003.01
DTIME2 S T
0003.02
DTIME3 S T
0003.03
DTIME4 S T
0004.00
C MOVEL *DATE DATE1
0005.00
C DATE1 ADDDUR 02:*Y DATE2
0006.00
C DATE1 ADDDUR 05:*M DATE3
0007.00
C DATE1 ADDDUR 01:*D DATE4
0007.01
C TIME TIME1
0007.02
C TIME TIMESTE
0008.00
C TIME1 ADDDUR 10:*H TIME2
0009.00
C* TIME1 ADDDUR 10:*ML TIME3
0010.00
C TIME1 ADDDUR 10:*S TIME4
0011.00
C TIMESTE ADDDUR
10:*MS TIME5
0012.00
C DATE2 DSPLY
0013.00
C DATE3 DSPLY
0014.00
C DATE4 DSPLY
0014.01
C TIME1 DSPLY
0014.02
C TIME2 DSPLY
0014.03
C TIME3 DSPLY
0014.04
C TIME4 DSPLY
0014.05
C TIME5
DSPLY
0015.00
C SETON LR
****************** End of data
*********************************
OUTPUT
DSPLY 2004-06-27
DSPLY 2002-11-27
DSPLY 2002-06-28
DSPLY 12.18.36
DSPLY 22.18.36
DSPLY 00.00.00
DSPLY 12.18.46
DSPLY 2002-06-27-12.18.36.953010
SUBDUR:
It
is used to find the difference between two date
(or) time (or) time stamp
Example
SKANDASAMO/DATE
SUBDUR
*************** Beginning of data ********************************
0000.01
d*date function using the SUBDUR
0001.00 DTIMESTE S Z
0001.01 DTIME5 S Z
0002.00 DDATE1 S D INZ (D'1977-06-20')
0002.01 DDATE2 S D
0002.02 DDATE3 S D
0002.03 DDATE4 S D
0003.00 DTIME2 S T INZ (T'12. 50.10’)
0003.01 DTIME1 S T
0003.02 DTIME3 S T
0003.03 DTIME4 S T
0005.00 C DATE1 SUBDUR 02:*D DATE2
0006.00 C DATE1 SUBDUR 05:*M DATE3
0007.00 C DATE1 SUBDUR 01:*Y DATE4
0007.01
C TIME TIME1
0008.00
C TIME2 SUBDUR 10:*H TIME1
0010.00
C TIME2 SUBDUR 10:*S TIME4
0012.00
C DATE2 DSPLY
0013.00
C DATE3 DSPLY
0014.00
C DATE4 DSPLY
0014.01
C TIME1 DSPLY
0014.02
C TIME2 DSPLY
0014.03
C TIME3 DSPLY
0014.04
C TIME4 DSPLY
0015.00
C SETON LR
****************** End of data
***********************************
OUT
PUT
DSPLY 1977-06-18
DSPLY 1977-01-20
DSPLY 1976-06-20
DSPLY 02.50.10
DSPLY 12.50.10
DSPLY 00.00.00
DSPLY 12.50.00
EXTRCT:
It is used to extract
year, month, day, hours, minutes, seconds, and microseconds of a time stamp or
date field.
Example:
SKANDASAMO/DATE
EXRCT
*************** Beginning of data
********************************
0000.01
d*FINT THE EXRCT DAY MONTH YEAR
0001.00
DTIMESTE S Z
0002.00
DDATE1 S D INZ (D'1977-06-20')
0002.01
DDATE3 S D
0002.02
DDATE2 S 5P 0
0002.04
DDATE4 S 5P 0
0002.05
DDATE5 S 5P 0
0002.06
DDATE6 S 5P 0
0002.07
DDATE7 S 5P 0
0002.08
DDATE8 S 5P 0
0003.00
DTIME0 S T INZ (T'12. 50.10’)
0003.01
DTIME1 S T
0003.02
DTIME2 S 5P 0
0003.03
DTIME4 S 5P 0
0003.04
DTIME5 S 5P 0
0003.05
DTIME6 S 5P 0
0003.06
DTIME3 S 26P 0
0004.00
C MOVEL *DATE DATE3
0004.01
C TIME TIME1
0004.02
C TIME TIMESTE
0005.00 C EXTRCT DATE1:*M DATE2
0006.00 C EXTRCT DATE3:*M DATE4
0007.00 C EXTRCT DATE1:*D
DATE5
0007.01 C EXTRCT DATE3:*D DATE6
0007.02 C EXTRCT DATE1:*Y DATE7
0007.03 C EXTRCT DATE3:*Y DATE8
0007.04
C EXTRCT TIME1:*H TIME2
0007.05
C EXTRCT TIME1:*H TIME4
0007.06
C EXTRCT TIME0:*H TIME5
0007.07
C EXTRCT TIME0:*S TIME6
0011.00
C EXTRCT TIMESTE:*MS TIME3
0012.00
C DATE2 DSPLY
0013.00
C DATE8 DSPLY
0013.01
C DATE4 DSPLY
0013.02
C DATE5 DSPLY
0013.03
C DATE6 DSPLY
0014.00
C DATE7 DSPLY
0014.01
C TIME2 DSPLY
0014.02
C TIME4 DSPLY
0014.03
C TIME5 DSPLY
0014.04
C TIME6 DSPLY
0014.05
C TIME3 DSPLY
0015.00
C SETON LR
OUTPUT
DSPLY 6
DSPLY
2002
DSPLY
6
DSPLY
20
DSPLY
27
DSPLY
1977
DSPLY
12
DSPLY
12
DSPLY
12
DSPLY
10
DSPLY 441000
TEST:
Test is the most powerful
opcode, which will check a date is a valid, or not .The low level indicator is
set on if the date is not valid or set off if the date is a valid one.
Test will be given with extended
factor like test (d), test (t), test (z) for date, time and time stamp and if
test without extended factor default to date (z).
Example
SKANDASAMO/DATE
TEST
*************** Beginning of data
*********************************
0000.01
C*TEST FOR VALID DATE THE DATE VALID SETOFF OR SETON (NOTVALID)
0001.00
C MOVEL '13/03/1999’ A 10
0002.00
C TEST (D) A 30
0003.00
C *IN30 DSPLY
0003.01
C IF *IN30=*ON
0003.02
C 'NOTVAILD' DSPLY
0003.03
C ELSE
0003.04
C 'VALID' DSPLY
0003.05
C ENDIF
0004.00
C SETON LR
****************** End of data
***********************************
OUTPUT
DSPLY
1
DSPLY
NOTVAILD
56.
Explain Multi Dimensional Array?
Ø
The multi dimension data structure array will be
implemented in occurs class.
Ø
The
similar elements of same data type and same attributes size repeating many
times this time using OCCUR opcode.
Ø
Which can only be used with a multiple
occurrence data structure, allow you to specify which occurrence of data
structure is used for subsequent operation within the programs.
57.Explain
about RTNCSRLOC?
Type Y (Yes) in
the Select parameters prompt to define parameters for the RTNCSRLOC keyword on
the Define Return Cursor Location display.
58.Explain
Assume and Overlay?
Assume
Type Y (Yes) to select the ASSUME keyword. It causes the AS/400 system to assume that
this record appears on the display when the file is opened. Use this keyword to receive data that a
previous program has left on the display.
Overlay
Type Y (Yes) to allow the overlaying of fields on this record
without erasing the entire display.
Note: If you type anything other
than Y or blank, your entry will be ignored.
You must specify the OVERLAY keyword to select the other keywords on
this display, with the exception of PUTOVR.
59.Explain
Compile time array, lookup, sorta, xfoot, and Run time array?
v Compile
time array
ü The
compile time array means the elements of the array will be loaded before the
execution of the programs.
ü The
value will be static.
ü We
must declare in keyword command DIM (), CTDTAT (), and PERRCD ().
ü We
are giving the value in after the SETON
LR.
Example
SKANDASAMO/ARRAY
COMILE
*************** Beginning of data
********************************
0000.01 c*compile time array
0001.00 darr1 s 4 dim(3) ctdata perrcd(1)
0002.00 di s 2p 0 inz(1)
0003.00 c
i do 3
0004.00 c
arr1(i) dsply
0005.00 c add
1 i
0006.00 c enddo
0007.00 c seton
0008.00
**
0009.00
1001
0010.00
20
0011.00
1000
****************** End of data
********************************
OUTPUT
DSPLY
1001
DSPLY 20
DSPLY
1000
v Run
time array
ü The
run time array means the value will be loaded during the runtime only.
ü The
value will be dynamic.
SKANDASAMO/ARRAY
RUNTIME
*************** Beginning of data
*****************************
0000.01
c*runtime array
0001.00
darr1 s 10 dim(12)
0002.00 di s 2p 0 inz(1)
0002.01 da s 3p 0
0002.02 dj s 2p 0 inz(1)
0003.00 c i do 12
0003.01
c dsply arr1(i)
0003.02
c* eval arr1(i)=a
0003.03
c add 1 i
0003.04
c enddo
0003.05
c j do 12
0004.00
c arr1(j) dsply
0005.01
c add 1 j
0006.00
c enddo
0007.00
c seton lr
****************** End of data
*********************************
lookup, sorta, xfoot :
SKANDASAMO/ARRAY
SORTARRAY
*************** Beginning of data
*********************************
0000.01
c*lookup,xfoot&sorta examples
0001.00 darr1 s 4
0 dim(3) ctdata perrcd(1)
0002.00 di s 2p 0 inz(1)
0002.01 dj s 2p 0 inz(1)
0002.02
dd s 4p 0
0003.00
c i do 3
0004.00
c arr1(i) dsply
0005.00
c add 1
i
0006.00 c enddo
0006.01 c sorta arr1
0006.02 c xfoot arr1 d
0006.03
c 1000 lookup
arr1
40
0006.04
c if *in40=*on
0006.05
c 'found' dsply
0006.06
c else
0006.07
c 'notfou' dsply
0006.08 c endif
0006.09 c
d dsply
0006.10 c
j do 3
0006.11 c
arr1(j) dsply
0006.12 c add 1 j
0006.13 c enddo
0007.00 c seton
0008.00
**
0009.00
1001
0010.00
2000
0011.00
1000
****************** End of data
***********************************
DSPLY
1001
DSPLY
2000
DSPLY
1000
DSPLY
found
DSPLY
4001
DSPLY
1000
DSPLY
1001
DSPLY
2000
v Pre
runtime array
ü
Pre runtime array is in between these 2
conditions where the value are static and the value will be retrieved from disk
and loaded into the array.
ü
As a result there is no need to retrieve the
value every time from the disk and usage of pre runtime array makes it fast.
ü
We must declare in keyword command DIM (),
FROMFILE (), and PERRCD ().
60.Define data structure and
types of data structure?
The different types fields and sub field stored with
in single area. This area in storage is called data structure.
Data structure means program allows you to define an
area in storage and the layout of the fields, called sub fields, with the area.
This area in storage is called a data structure.
Data
structure can be used for
ü
Group non-contiguous data into contiguous
internal storage locations
ü
Define the same internal area multiple times
using different data formats.
ü
Operate on a field and change its contents
ü
Divide a field into sub fields without using the
MOVE or MOVEL
ü
Define a data structure and its sub fields in
the same way a record is defined.
ü
Define multiple occurrences of a set of data
There are four different types of data structure
commonly used.
v
General data structure
v
Data area data structure
v
File information data structure
v
Program status data structure
Data structure
can be specified in D spec
Type
IPDS
Data
structure name
I –Globally initialized data structure
S--Program
status data structure
U--Data
area data structure
Blanks—General (or) File
status data structure
v Data
area data structure
A data area data structure, identified by a U in position 18 of
the data structure statement, indicates to the RPGLE program that if should
read in and lock the data area of the same name at program at program
initialization and should write out and unlock the same data area at end of the
program.
The data area and data area structure must have the same name unless you
rename the data within the program by using the *NAMVAR DEFINE statement.
v File
information data structure
A file information data structure provides you with
status information on file exception /error occurs. This data structure name
must be unique for each file. It consists of pre defined sub fields that
provide information on the file exception/error that occurred.
v Program
status data structure
This data structure is identified by
as S in position 18 of the data structure statement, provides program
exception/error information to the program. The *ROUTINE, *STATUS, *PARM
keywords mostly preferred to determine the PS DS.
Example
SKANDASAMO/DATASTR
DUMP
*************** Beginning of data
*************************
0001.00
HDEBUG(*YES)
0002.00
DPSSR SDS
0004.00
DSTATUS *status
0005.00
DROUTINE *routine
0005.01
DPARMS *parms
0005.02
DRES S 2S 0
0007.00 C Z-ADD 1 NUM1 2 0
0007.01 C Z-ADD 0 NUM2 2 0
0010.00 C EVAL RES=NUM1/NUM2
0011.00 C 'NOTCOM' DSPLY
0012.00
C A TAG
0013.00
C 'COMING' DSPLY
0014.00
C SETON LR
0015.00
C *PSSR BEGSR
0016.00
C STATUS DSPLY
0017.00
C ROUTINE DSPLY
0018.00
C PARMS DSPLY
0019.00
C DUMP
0020.00
C GOTO A
0021.00
C ENDSR
****************** End of data
******************************
Output
DSPLY 102
DSPLY
*DETC
DSPLY
0
DSPLY
COMING
61. What is Lock? How you
achieve in AS/400?
To give the access permission for database file. The
Locks are provided by AS/400 system itself.
Type
of lock
v
Share lock
The share lock
only reading operation (PF file).
v
Exclusive lock
The exclusive
lock to perform insert, update, and delete operations.
62. How you will release the lock?
By
using RCLRSC [Reclaim Resource] command we can release the resources only. UNLOCK or CHAIN (N) command also helps to
release the lock.
By using WRKOBJLCK command and take F4.
63. How you execute CL command
in RPGLE?
By
using QCMDEXC command we can execute CL command in RPGLE. Two parameters will
be called use in the CL command to be executed and second is the length of the
command.
64. Explain Commitment
Control?
The
AS/400 system has an integrated transaction recovery function called commitment
control. Commitment control is an extension of the journal function on the
system.
The
records used during a complex transaction are locked from other user and at the
end of the transaction; the program issues the commit operation, updating
the records.
If the system fails before the commit
operation is performed, all database changes are rolled back to the
previous commit operation and all the affected records are unlocked.
COMMIT-The
transactions are updated in the data file. Commit occurs on COMMIT command
ROLLBACK-
The transactions are NOT updated in the data file. Rollback occurs if there are
uncommitted transactions and on ROLLBACK command.
65. Explain about sub files in
AS/400?
ü
A subfile is a group of records READ from or
WRITTEN to a display device file in one single operation.
ü
It is a display file facility
ü
It is a group of records that can be stored in
the main memory.
ü
The program can store a group of records in the
subfile one by one in a sequence.
ü LODING
SUBFILES:
Ø
Load all (Size >Page)
Ø
Load on demand (Size >Page)
Ø
Load on demand (Size =Page)
ü Load
all (Size >Page)
Ø
All the records from the database file will be
loaded in to the subfile in one shot.
Ø
The subfile size should be greater than the page
size at least by one. (SFLSIZ =5, SFLPAG=4). The subfile size will dynamically
grow when the subfile size mentioned is less than the number of records in the
database file.
Ø
PAGEUP and PAGEDOWN are taken care of by the
system.
Ø
The total subfile size 9999 records.
ü Load
on demand (Size > Page)
Ø
The number of records as mentioned in SFLPAG
will be loaded initially.
Ø
Then the
remaining records can be loaded by pressing PAGEDOWN, which is taken
care of by the programmer.
Ø
Same time PAGEUP is taken care of by the
system.
Ø
The subfile size should be greater than the page
size at least by one. (SFLSIZ =5, SFLPAG=4). The subfile size will dynamically
grow when the subfile size mentioned is less than the number of records in the
database file.
Ø
All the records loaded will exist in the
subfile.
Ø
The total subfile size 9999 records.
ü
Load on demand (Size = Page)
Ø
The number of records that will be loaded into
the subfile must always be equal to the value mentioned in for SFLSIZ and
SFLPAG.
Ø
Every time the subfile should be cleared before
paging up or paging down.
Ø
PAGEUP and PAGEDOWN are taken care
of the programmer.
Ø
The number of records that can be in the subfile
at any instance will be equal to SFLSIZ and SFLPAG values.
Subfile points:
Record formats:
One
display -1024 records formats
One
display file –512 subfile
Record formats
are
1.subfile record format (SFL)
2.subfile control record format
(SFLCTL)
subfile record
format(SFL)
This record format will have the
multiple record definitions
-Defining fields.
-Defining database fields.
Subfile Control
record format (SFLCTL)
This record format will control the
subfile record format.
-Defining texts
-Defining control fields.
Subfile Size
(SFLSIZ)
This
keyword can be used to specify the maximum number of records that can be in the
subfile (buffer)
Default ->2
Maximum
->9999
Subfile
Page (SFLPAG)
This
keyword can be used to specify the maximum number of records that can be in one
subfile page. That is the maximum number of records that the system will
display in the screen at a time.
-Default
->1
-Maximum->
depends upon the display record size.
If
the subfile size is at least one greater than the subfile page then the subfile
size will grow dynamically up to 9999.
General
keywords
SFLDSP -> subfile display
SFLDSPCTL -> subfile display control
SFLCLR -> subfile clear
SFLEND -> subfile end
Define General Keywords
Subfile control record . . . . . .
. . . : SENWLT1
Type choices, press Enter. Keyword
Related subfile record . . . . .
. . SFLCTL SENWND1
Name
Subfile cursor relative record .
. . SFLCSRRRN Name
Subfile mode . . . . . . . . . .
. . SFLMODE Name
Y=Yes Indicators/+
Display subfile records . . . . . .
SFLDSP Y 25
Display control record . . . . .
. . SFLDSPCTL Y 26
Initialize subfile fields . . . . .
SFLINZ
Delete subfile area . . . . . . . . SFLDLT
Clear subfile records . . . . . . . SFLCLR 28
Indicate more records . . . . . . . SFLEND 30
SFLEND parameter . . . . . . . . *MORE
Y
SFLEND parameter . . . . . . . . *SCRBAR *MORE ...
Record not active . . . . . . . . . SFLRNA
More...
F3=Exit F12=Cancel
Subfile
Display (SFLDSP)
This
keyword is used to insert the system that the subfile records format has to be
displayed. The subfile record format without any record in it cannot be
displayed.
Subfile
Display control (SFLDSPCTL)
This
keyword is used to instruct the system that the subfile control record format
has to be displayed.
0009.00 C N30 SETON 2526
Subfile
Clear (SFLCLR)
This
keyword is used to clear the records in the subfile records format.
An
indicator can control this keyword.
0005.00 C
SETON 28
0006.00 C
WRITE SENWLT1
0007.00 C
SETOFF 28
Subfile
End (SFLEND)
ü
This keyword is used to get the display of ‘+’
sign or a text ‘more’ or ‘bottom’ in the bottom of the subfile.
ü
‘+ or
‘more’ indicates the existence of more records in the subfile which can
be displayed by pressing PAGEDOWN key .
ü
‘Bottom’ indicates the end of the
subfile.
ü
Instead
of Enter Key - Help Type a CF or CA key number to specify that the operator is
to use the Enter key as a Roll Up key.
The specified CF or CA key acts as the Enter key.
Mandatory
keywords for subfile
ü
SFL
ü
SFLCTL
ü
SFLSIZ
ü
SFLPAG
ü
SFLDSP
RRN (Relative
record number) (control record level keyword)
ü
RRN is the numeric value (1 to 9999) associated
with each subfile record for accessing
ü
Each record should have a unique RRN value
ü
This value has to be giving by the program.
ü
This has to be associated with the subfile
record format in the F spec continuation line.
ü
This has to be declared in the program as
numeric variable of maximum length 4 and decimal position 0.
F
spec format in continuation line with SFILE option
0002.00 FSENDESFILECF E WORKSTN
0003.00 F SFILE
(SFL01:RRN1 )
Where RRN1 -> RRN variable name
SFL01-> subfile record format name.
RPGLE Opcodes
EXFMT
If SFLDSP and SFLDSPCTL indicators are on, this opcode will send the two
subfile record formats to the display device and waits for the user’s response.
WRITE –(SFL)
Ø
This opcode is used to add a record to the
subfile record format
Ø
RRN value should be set with a non-existing
value before adding the record in the subfile record format.
WRITE
(SFLCTL)
This keyword is used for
clearing & display the subfile
SFLDROP (subfile drop)
This
control record level keyword is used to assign a CA (command attention) or CF
(command function) key. The program first displays the subfile in truncated
form; subfile records are truncated to fit on one display line. When the user
presses the specified key, the program displays the records in the folded form.
Or
Subfile Initially Truncated - Help Type a
command function (CF) or command attention (CA) key number to assign a CF or CA
key to specify if a subfile control record requiring more than one display line
should be truncated to one line, or should be folded to display on two
lines. When this keyword is specified,
the subfile is first displayed in truncated form. The operator presses the specified CF or CA
key to switch from truncated form to folded form, or from folded form to
truncated form.
SFLFOLD (subfile fold)
This
control record level keyword is used to assign a CA (command attention) or CF
(command function) key. The program first displays the subfile in folded form.
When the user presses the specified key, the program displays the records again
in the truncated form.
Or
Subfile Initially Folded - Help Type a command function (CF)
or command attention (CA) key number to assign a CF or CA key to specify if a
subfile control record requiring more than one display line should be truncated
to one line, or should be folded to display on two lines. When this keyword is
specified, the subfile is first displayed in folded form. The operator presses the specified CF or CA
key to switch from folded form to truncated form, or from truncated form to
folded form.
SFLINZ (subfile initialize)
This
control record level keyword is used to specify that the program is to
initialize all records in the subfile on the output operation (read &
updates) to the subfile control record format.
The
fields in each subfile record are initialized to
CHAR->BLANKS
NUME->ZEROS
FLOAT->NULLS
SFLNXTCHG (subfile next change)
This
record level keyword is used on the subfile control record format to force the
user to correct program-detected keying error in the subfile records that have
been read by the program. It does this by causing the record to be changed so
that a get-next-changed operation must read the record.
Or
Return
Record - Help Type Y (Yes) to instruct the system to return this subfile record
to your program on a subsequent Get-Next-Changed input operation to the
subfile. This record is returned whether
or not the operator changes it.
Note: You must type Y. If you do not, the entry will not be used.
`You can specify condition indicators for the SFLNXTCHG keyword.
SFLROLVAL (subfile roll value)
This
field-level keyword is used to specify that the user can key a value into this
field to tell the program how many records to PAGEUP or PAGEDOWN when the
appropriate paging key is pressed.
SFLRCDNBR (subfile record number)
This
field level keyword on the subfile control record format is used to specify
that the page of the subfile to be displayed is the page containing the record
whose relative record is in this field. If you do not specify this keyword, the
program displays the first page of the subfile by default
Example for load all
SKANDASAMO/SUBFILE
NEWEMP
*************** Beginning of data
*******************
0001.00
UNIQUE
0002.00 R EMPNEW
0003.00 EMPNOM 6P 0 TEXT('EMPLOYEE NUMBER')
0004.00 EMPNA 15A TEXT('EMPLOYEE NAME')
0005.00 SEX3 1A TEXT('EMPLOYEE SEX')
0006.00 AGE3 3P 0 TEXT('EMPLOYEE AGE')
0007.00 ADDRESS5 15A TEXT('ADDRESS')
0008.00 CITY5 10A TEXT('CITY')
0009.00 K EMPNOM
****************** End of data
*********************************
DATA
FILE
Display
Report
EMPNOM EMPNA
SEX3 AGE3
ADDRESS5 CITY5
000001
101 K.SENTHILKUMAR M
25 ATTUR SALEM
000002
102 R.SHYAMSUNDAR M
27 TRICHY TRICHY
000003 103
B.MOHAN M 27
TCODE SALEM
000004
104 K.KUMAR M 25
SALEM SALEM
000005
105 A.ARUL M 25
SALEM NAMAKKAL
000006
106 BALU M 25
SALEM SALEM
000007 107
SENTHIL M 35
SALEM TRICHY
000008
108 RAJ M 22
TCODWE SALEM
000009 109
HEMA M 33
SALEM CHENNAI
000010
110 VEL M 67
SALEM SALEM
000011
111 RAMESH M 56
ATTUR SALEM
000012
122 SUDHA M 28
SALEM ATTUR
000013
123 KANDASAMY M
34 SALEM ATTUR
******
******** End of report ********
SKANDASAMO/SUBFILE
SUB04
*************** Beginning of data
****************************
0002.00
FSENDESFILECF E WORKSTN
0015.00
C *IN03 DOWEQ *OFF
0016.00
C EXFMT MAIN1
0016.01
C IF *IN04=*ON AND EMPCUR='EMPNOM'
0016.02
C CALL 'SELOADALL3'
0016.03
C ENDIF
0017.00
C 03 LEAVE
0018.00
C ENDDO
0019.00
C SETON LR
****************** End of data
*******************************
SKANDASAMO/SUBFILE
SELOADALL3
*************** Beginning of data
*****************************
0001.00
FNEWEMP IF E
DISK
0002.00
FSENDESFILECF E WORKSTN
0003.00
F
SFILE(SENWND1:RRN1)
0004.00
C Z-ADD 1
RRN1 4 0
0005.00
C SETON 28
0006.00
C WRITE SENWLT1
0007.00
C SETOFF 28
0008.00
C READ
EMPNEW
30
0009.00
C N30 SETON 2526
0010.00
C DOW *IN30=*OFF
0011.00
C WRITE SENWND1
0012.00
C ADD
1 RRN1
0013.00
C READ EMPNEW 30
0014.00
C 30 LEAVE
0015.00
C ENDDO
0016.00
C DOW *IN03=*OFF
0016.01
C 03 LEAVE
0016.02
C* WRITE HEATER
0016.03
C* WRITE FOOTER1
0016.04
C EXFMT SENWLT1
0020.00
C ENDDO
0021.00
C SETON LR
****************** End of data
*****************************
window main1
take 8
Select Record
Keywords
Record . . . : MAIN1
Type choices, press Enter.
Y=Yes
General keywords . . . . . . . . Y
Indicator keywords . . . . . . . Y
Application help . . . . . . . .
Select General
Keywords
Record . . . : MAIN1
Type choices, press Enter. Keyword Y=Yes
If this record is not on display, write it
to the display before issuing read . . . .
. . . INZRCD
Keep record on display . . . . . . . . . . .
. . . KEEP
Assume record is on display . . . . . . . . . . . ASSUME
Y
Allow rolling of lines . . . . . . . . . . .
. . . ALWROL
Retain CLEAR HELP HOME and ROLL keys . . . .
. . . RETKEY
Retain command function (CFnn and CAnn) keys
. . . RETCMDKEY
Change input defaults . . . . . . . . . . . . . . CHGINPDFT
Select parameters . . . . . . . . . . . . . . .
Menu-Bar display . . . . . . . . . . . . . .
. . . MNUBARDSP
Select parameters . . . . . . . . . . . . . . .
Entry field attribute . . . . . . . . . . . . . . ENTFLDATR
Select parameters . . . . . . . . . . . . . . .
Return cursor location . . . . . . . . . . .
. . . RTNCSRLOC Y
Select parameters . . . . . . . . . . . . . . .
Define Return Cursor
Location
Record . . . : MAIN1
Keyword number Roll
1 of
1 Y +/-
F4 for list
Type parameters, press Enter.
Keyword
Return cursor location . . . . . . . . .
. RTNCSRLOC Y Y=Yes
Type indicator *RECNAME . . . . . . . . Y Y=Yes
Cursor record . . . . . . . . . . . . . RECSD Name
Cursor field . . . . . . . . . . . . .
. EMPCUR Name
Cursor position . . . . . . . . . . . . Name
CF03 03
CF04 04
TAKE 12 AND
F4
Work with Fields
Record . . . : MAIN1
Type information, press Enter.
Number of fields to roll . . . . . . . . . .
. . . . . . . . 6
Type options, change values, press Enter.
1=Select keywords 4=Delete field
Option
Order Field Type Use
Length Row/Col Ref Condition
Overlap
70 AGE C 21
15 014
80 RECSD A
H 10
90 EMPCUR
A H 10
100 ----------
C 76 21 003
110
F3->EXIT C 37
22 005
120 EMPNOM
S B 6,0
09 036 Y
More...
Add H Hidden
Add
M Message
Add P Program-to-system
TAKE 12
SENWLT1
Select Window
Keywords
Window record . . . . . . . . . . . . . : SENWLT1
Type choices, press Enter.
Y=Yes
General keywords . . . . . . . . Y
Select record keywords . . . . .
Y
General SFLCTL keywords . . . . . Y
Subfile display layout . . . . .
Y
Subfile messages . . . . . . . . Y
Select General Keywords
Window record . . . . . . . . . . . . . : SENWLT1
Type choices, press Enter.
Keyword Y=Yes Indicators/+
Window parameters . . . . . . . . . . . . WINDOW
Y
Select parameters . . . . . . . . . . . Y
Window borders . . . . . . . . . . . . .
. WDWBORDER
Select parameters . . . . . . . . . . .
Remove windows . . . . . . . . . . . . .
. RMVWDW
User Restore Display . . . . . . . . . .
. USRRSTDSP
Define Window
Parameters
Record . . . : SENWLT1
Keyword
. . : WINDOW
Referenced window . . . . . . . . . . . . Name
-OR-
Window definition
Default start positioning . . . . . . . Y=Yes
-OR-
Start line
Program-to-system field . . . . . . . Name
Actual line . . . . . . . . . . . . . 2 1-25
Start position
Program-to-system field . . . . . . . Name
Actual position . . . . . . . . . . . 2 1-128
Window lines . . . . . . . . . . . . .
. 20 1-25
Window position . . . . . . . . . . . . 40
1-128
Message line . . . . . . . . . . . . .
. Y Y=Yes
Restrict cursor to window . . . . . . . Y Y=Yes
Select Record
Keywords
Record . . . : SENWLT1
Type choices, press Enter.
Y=Yes
General keywords . . . . . . . . Y
Indicator keywords . . . . . . . Y
Application help . . . . . . . .
Help keywords . . . . . . . . . .
Output keywords . . . . . . . . .
CF12 12
CF03 03
Define General
Keywords
Subfile control record . . . . . . . . .
: SENWLT1
Type choices, press Enter. Keyword
Related subfile record . . . . . . . SFLCTL
SENWND1 Name
Subfile cursor relative record . . . SFLCSRRRN Name
Subfile mode . . . . . . . . . . . . SFLMODE Name
Y=Yes Indicators/+
Display subfile records . . . . . .
SFLDSP Y 25
Display control record . . . . . . . SFLDSPCTL
Y 26
Initialize subfile fields . . . . .
SFLINZ
Delete subfile area . . . . . . . . SFLDLT
Clear subfile records . . . . . . . SFLCLR
28
Indicate more records . . . . . . . SFLEND 30
SFLEND parameter . . . . . . . . *MORE
Y
SFLEND parameter . . . . . . . . *SCRBAR *MORE ...
Record not active . . . . . . . . . SFLRNA
More...
F3=Exit
F12=Cancel
Define Display
Layout
Subfile control
record . . . . . . . . . : SENWLT1
Type values,
press Enter.
Keyword Number
Records in subfile . . . . . . . . . . SFLSIZ
6
Program-to-system field . . . . . .
Records per display . . . . . . . . . SFLPAG
5
Spaces between records . . . . . . . . SFLLIN
OUTPUT
EMPLOYEE DETAILS
1.SELECT
OPT
EMPNUMBER NAME
000101 K.SENTHILKUMAR
000102 R.SHYAMSUNDAR
000103 B.MOHAN
000104 K.KUMAR
000105 A.ARUL
More...
EMPLOYEE DETAILS:
1.SELECT
OPT EMPNUMBER NAME
000106 BALU
000107 SENTHIL
000108 RAJ
000109 HEMA
000110 VEL
More...
EMPLOYEE DETAILS
1.SELECT
OPT
EMPNUMBER NAME
000111 RAMESH
000122 SUDHA
000123 KANDASAMY
66. ILE advantages over RPG?
ü Better
call performance
ü Modularity
ü Multiple-language
integration
ü Enhancements
to the ILE compilers
ü Reusable
components
ü Control
over application run-time environment
ü Code
optimization
ü Tool
availability
ü Foundation
for the future
67. What is a Module?
A module is a
non-executable program and it contains one or more procedures. If you have
modules without procedure then it means that it is having only one default
procedure and in case we can use CALLB. We are creating a RPGLE module by
CRTRPGMOD and a CL module by CRTCLMOD commands.
68.How to the create module?
A module is created as a separate object type
(*MODULE). Using the CRTRPGMOD command creates an RPGLE module. A module object
cannot be run directly. You must use the CRTPGM command to bind module object
into a program object. First option 15 or CRTRPGMOD command to create a module.
The CRTPGM command is used to cerate a program from one or more module.
SKANDASAMO/RPGILE
*************** Beginning of data
*******************************
0001.00
C CALLB 'ADD'
0002.00
C CALLB
'SUB'
0003.00
C CALLB 'MUL'
0004.00
C SETON LR
****************** End of data
**********************************
SKANDASAMO/RPGILE
ADD
*************** Beginning of data
*******************************
0002.00
C Z-ADD 4 A 4 0
0002.01
C Z-ADD 5 B 4 0
0004.00
C A ADD B C 4 0
0005.00
C C DSPLY
0006.00
C SETON LR
****************** End of data
*********************************
SKANDASAMO/RPGILE
SUB
*************** Beginning of data
*******************************
002.00
C Z-ADD 10 A 4 0
002.01
C Z-ADD 5 B 4 0
004.00
C A SUB B C 4 0
005.00
C C DSPLY
006.00
C SETON LR
****************** End of data
*********************************
SKANDASAMO/RPGILE
MUL
*************** Beginning of data
******************************
0002.00
C Z-ADD 10 A 4 0
0002.01
C Z-ADD 5 B 4 0
0004.00
C A MULT B C 4 0
0005.00
C C DSPLY
0006.00
C SETON LR
****************** End of data
*********************************
CRTPGM
Take F4
Program
. . . . . . . . . . . . > MAIN
Name
Library
. . . . . . . . . . . >
SKANDASAMO Name, *CURLIB
Module . . . . . . . . . . . . . >
MAIN Name, generic*, *PGM, *ALL
(PEP)
Library . . . . . . . . . . .
> SKANDASAMO Name, *LIBL, *CURLIB...
> ADD
> SKANDASAMO
>
SUB
> SKANDASAMO
+ for more values > MUL
> SKANDASAMO
Text 'description' . . . . . . . *ENTMODTXT
OUTPUT
DSPLY 9
DSPLY
5
DSPLY
50
69. What is
the difference in between CALL, CALLB, and CALLP?
CALL is a dynamic call where the
control will be transferred when the program is executed. (Control will be
transfer the another program (run time) so it is dynamic call).
Where as CALLB and CALLP are static
calls. A module is a non-executable program and it contains one or more
procedures. If you have modules without procedure then it means that it is
having only one default procedure and in case we can use CALLB.
A
module is having more than one procedure then we can give explicitly the
procedure name to be called in case of CALLP out of these three CALLP is
the most efficient one. (Using the CALLB, CALLP a program or module is bind in
the program so it is static).
70. What is
the difference between Bind by value and Bind by reference?
Bind by value
|
Bind
by Reference
|
Here the
entire modules to be bounded are physically copied into the main program
object.
|
In this case
we are binding the programs by using service programs, which contain a
reference to the module that has been called, and the modules are not
physically copied into the program object.
|
The program
will be executed even when you delete the entire module that has been called.
|
The program
will not executed when the bind modules are deleted.
|
Bind by value
is faster than bind by reference. (All the modules to be bind in the main
program, so it is fast)
|
It is not as
faster as bind by value. (All the modules can’t bind the main program it is
refer the pointer)
|
71. Define
pass by value and pass by reference?
v Pass
by reference:
Pass by reference we are passing the address of the
parameters and not the actual value and so the changes in the called procedure
will affect the value in the calling programs. In OPM programs we are using
only call by reference.
v Pass
by value:
Pass by value we are passing the value of the parameter,
changes made to the formal arguments in the called function have no effect on
the values of the actual arguments in the calling function it is used in c
program.
In RPGLE we have the option to pass the parameter by
value by giving the keyword VALUE.
72. What are
Program Entry Procedure (PEP) and User Entry Procedure (UEP)?
If we are binding many modules
together to form a program then we have to specify which module has to take
control first when it has been called and that module is called as PEP
for that program.
User entry procedure (UEP) is
the first statement that takes the control when a program has been called. For
example in C programs main () will be executed first when it has been called
and like wise in RPG the statement coded in C Spe will take the control first.
73. Define
Copybook in RPGLE?
It will copy a Subroutine (or)
any group of codes physically into the program, which is copying it.
SKANDASAMO/RPGILE
COP
*************** Beginning of data
******************************
0002.00
C DSPLY A 5 0
0002.01
C EXSR ADD
0004.00
C SETON LR
0005.00
C/COPY RPGILE, COPY
****************** End of data
********************************
SKANDASAMO/RPGILE
COPY
*************** Beginning of data
******************************
0000.01
0001.00
C ADD BEGSR
0002.00
C ADD 5 A
0003.00
C A DSPLY
0004.00
C ENDSR
****************** End of data
*******************************
OUTPUT
13
DSPLY 18
74.What will
FOR opcode will do?
SKANDASAMO/DOLOOP
FOR
*************** Beginning of data
*****************************
0001.00
di s 5p 0 inz(1)
0002.00
dn s 5p 0 inz(10)
0003.00
c for i=1 to n
0004.00
c i dsply
0005.00
c endfor
0006.00
c for i=n downto 1
0007.00
c i dsply
0008.00 c endfor
0008.01*for(I=5;I<40;i=i+10)
0009.00
c for i=5 by n to 40
0010.00
c i dsply
0011.00
c endfor
0012.00
c for i=5 to 40 by n
0013.00
c i
dsply
0014.00
c endfor
0015.00
c seton lr
****************** End of data
*****************************
OUTPUT
DSPLY
1 DSPLY 10
DSPLY
2 DSPLY 9
DSPLY
3 DSPLY 8
DSPLY
4 DSPLY 7
DSPLY
5 DSPLY 6
DSPLY
6 DSPLY 5
DSPLY
7 DSPLY 4
DSPLY
8 DSPLY 3
DSPLY
9 DSPLY 2
DSPLY
10 DSPLY 1
DSPLY
5 DSPLY 5
DSPLY
15 DSPLY 15
DSPLY
25 DSPLY 25
DSPLY
35 DSPLY 35
75. What are
the various stages for a job after it is submitted?
Job queue, Active job, and OUTQ
is the three stages after the job has been submitted.
76. What
is the equivalent command to setll *loval in CL?
POSDBF with file position as
*start will set the file to the beginning (or) using OVRDBF and specify the key
field value by RRN value (or) by giving *start.
77. How to
create a service program and what are the steps involved in this?
ü
The service program means most commonly used
modules are grouped (binding) together to form it is called service program.
ü
A service program is not bound to its caller
until activation time
While creating service program we
can create a binder program where we can refer the modules (or) procedures (or)
even data types to be used by the program. Which is using service program.
Advantages of service programs
v They
do not take up auxiliary storage space. There is only one copy for all users.
v There
is only a single copy of the read-only code in main storage for all users in
this service programs is the same as a program that you call dynamically.
v Each
user of the service program has an independent work area.
v You
can pass parameters to a service programs by using the traditional parameter
list (or) by importing and exporting variables.
v Service
programs can be maintained independently of the programs that use the
functions. In most cases, changing a service programs does not cause a program
using the function to be changed or re-created.
Disadvantages of service
programs
v
Service programs are less desirable for a
function you may or may not need. The reason is that it is slower to call a
main program that refer to a service program
78. What is
an activation group?
Activation group is the boundary
set for similar programs. Activation group is also a storage space in memory.
ü
CLP has a OVRDBF command and calls a RPGLE
program
ü
RPGLE program performs a read operation and the
pointer is now in the second program and now call the program 3
ü
RPGLE program that also do a read operation which
will read the second record
ü Since
the pointer is in the second position and then return to 2nd program in the above situation when
the control transfer from 3rd record
since the 2 rd record
is already read in program 3. But we need to need the 2nd record
according to the logic but this is not possible in any OPM programs. But in RPGLE there is a solution for this problem by
giving a common activation group for 1st and 2nd program
and have a separate activation group for the 3rd program while
creating the program itself and this will avoid all the problem we faced
before.
ü In some situation we want to share between 2
program then we can give the activation group in *job level in which the
changes in one program will be affected in another program.
v Types of activation group levels:
ü
*New: In this case every time you call
the program an new activation group will be created which this case will not be
used mostly.
ü
*caller: If we don’t know the type of the
program that is calling then we can specify *caller where the activation group
will be the same of the program that is calling.
ü Named
activation group: We can give our own named for different activation group.
79.What
are the statements that are affected by activation group?
ü OVRDBF
ü OPNDBF
ü OPNQRYF
ü STRCMTCTL
ü DLTOVR
80. What are
the statements, which is not used in CLLE that is used in CLP?
ü
RCLRSC which is replaced by RCLACTGRP
ü
TFRCTL
81. What is
the difference between FMTDTA and OPNQRYF?
FMTDTA
|
OPNQRY
|
It will sort
the records sequentially based on the position of the record
|
It will sort
the records based on the field values.
|
If any change in the attribute size of a PF
then we have to change the program specification also.
|
If there is
any change in the attribute size it will not affect the program specification
also.
|
FMTDTA is bit
faster in process than OPNQRYF.
|
OPNQRYF is
slower as compare to FMTDTA if we are processing millions of records.
|
82.What is
the new name for AS/400?
I
series 400 is the new name given to AS/400 by IBM now.
83.How to see source of copybooks include in a program
while compiling or debugging?
While compiling the program give *list instead of
*source which will expand all the copybooks.
84. Explain inner join or natural join and left outer
join?
v Inner
join
Inner join means the matching records in between the
joining file will be selected.
Columns . . . 1
71 Edit KSENTHILS/EXAMPLE
SEU==> JPF01
FMT PF
*************** Beginning of data
****************************
0001.00 R JP1REC
0002.00 EMPNO 5S 0
0003.00 EMPNAME 20A
0004.00 K EMPNO
****************** End of data
*****************************
Columns . . . 1
71 Edit KSENTHILS/EXAMPLE
SEU==> JPF02
FMT PF.
*************** Beginning of data
***************************
0001.00 R JP2REC
0002.00 EMPNO 5S 0
0003.00 EMPSAL 10P 2
0004.00 K EMPNO
****************** End of data
********************************
Display Report
EMPNO EMPNAME
000001 1,001
SHYAMBABU
000002 1,002
SENTHILKUMAR
000003 1,003
RAMESH
****** ******** End of report ********
EMPNO EMPSAL
000001
1,001 100.00
000002
1,002 20.00
000003
1,004 300.00
****** ********
End of report ********
Columns . . . 1
71 Edit KSENTHILS/EXAMPLE
SEU==> JOFILE
FMT LF.
*************** Beginning of data
************************
0001.00 R JREC1 JFILE (JPF01 JPF02)
0002.00 J JOIN (1 2)
0003.00 JFLD (EMPNO EMPNO)
0004.00 EMPNO JREF (JPF01)
0005.00 EMPNAME
0006.00 EMPSAL
0007.00 K EMPNO
****************** End of data*********************
EMPNO EMPNAME EMPSAL
000001 1,001
SHYAMBABU
100.00
000002 1,002
SENTHILKUMAR
20.00
****** ******** End of report ********
v Left
outer join
Left
outer join all the records from primary file and matching records from the
secondary file will be selected.
Columns . . . 1
71 Edit KSENTHILS/EXAMPLE
SEU==> JOOUT
FMT LF.
*************** Beginning of
data*********************
0001.00 JDFTVAL
0002.00 R JREC1 JFILE (JPF01 JPF02)
0003.00 J JOIN (1 2)
0004.00 JFLD (EMPNO EMPNO)
0005.00 EMPNO JREF (JPF01)
0006.00 EMPNAME
0007.00 EMPSAL
0008.00 K EMPNO
****************** End of data********************
EMPNO EMPNAME EMPSAL
000001 1,001
SHYAMBABU
100.00
000002 1,002
SENTHILKUMAR
20.00
000003 1,003
RAMESH
.00
****** ******** End of report ********
SEQUENCING DUPLICATE RECORDS
Columns . . . 1
71 Edit KSENTHILS/EXAMPLE
SEU==> SEQ1
FMT PF.
*************** Beginning of data
***********************
0001.00 R SEQREC1
0002.00 EMPNO 5P 0
0003.00 EMPNAME1 20A
0004.00 ADDRESS 20A
0005.00 K EMPNO
****************** End of data
**************************
Columns . . . 1 71 Edit KSENTHILS/EXAMPLE
SEU==> SEQ2
FMT PF
*************** Beginning of
data****************
0001.00 R SEQREC2
0002.00 EMPNO 5P 0
0003.00 EMPNAME 20A
0004.00 TEL 10P 0
****************** End of data
******************
EMPNO
EMPNAME1 ADDRESS
000001 10,001
BOB 23,OLD MADIWALA
000002 10,002
DANNY 50,LONG ISLAND
000003 10,003
PRINC 90,ATTUR
****** ******** End of report ********
EMPNO EMPNAME TEL
000001 10,001
BOB
825,777
000002 10,001
BOB
825,999
000003 10,001 BOB 825,888
000004 10,002
DANNY
4,222,600
****** ******** End of report ********
Columns . . . 1
71 Edit KSENTHILS/EXAMPLE
SEU==> JDFTSEQ
FMT LF
*************** Beginning of data
******************
0001.00 R RECSEQ JFILE (SEQ1 SEQ2)
0002.00 J JOIN (1 2)
0003.00
JFLD (EMPNAME1 EMPNAME)
0004.00
JDUPSEQ (TEL)
0005.00 EMPNO JREF (2)
0006.00 EMPNAME1
0007.00 ADDRESS
0008.00 TEL
****************** End of
data************************
EMPNO EMPNAME1 ADDRESS TEL
000001 10,001
BOB 23,OLD MADIWALA 825,777
000002 10,001
BOB 23,OLD
MADIWALA 825,888
000003 10,001
BOB 23,OLD
MADIWALA 825,999
000004 10,002
DANNY 50,LONG ISLAND 4,222,600
****** ******** End of report ********
JOIN DESCEND
Columns . . . 1
71 Edit KSENTHILS/EXAMPLE
SEU==> JDFTSEQ
FMT LF
*************** Beginning of data
***********************
0001.00 R RECSEQ JFILE (SEQ1 SEQ2)
0002.00 J JOIN (1 2)
0003.00
JFLD (EMPNAME1 EMPNAME)
0004.00
JDUPSEQ (TEL *DESCEND)
0005.00 EMPNO JREF (2)
0006.00 EMPNAME1
0007.00 ADDRESS
0008.00 TEL
****************** End of data
*************************
EMPNO
EMPNAME1 ADDRESS TEL
000001 10,001
BOB 23,OLD
MADIWALA 825,999
000002 10,001
BOB 23,OLD
MADIWALA 825,888
000003 10,001
BOB 23,OLD
MADIWALA 825,777
000004 10,002
DANNY 50,LONG ISLAND
4,222,600
****** ******** End of report ********
85. Explain Build in function in ILE?
v %SUBST (String name: String position: length)
v %ABS (Absolute value by omitting sign)
v %EDITC (string: ‘X’)
In a
application if we want to concatenate a string with a numeric then we can use
this %EDITC
Example:
SKANDASAMO/BULID
EDITC
*************** Beginning of data
*******************************
0001.00 da s 10a inz('shyam')
0002.00 db s 10p 0 inz(20)
0003.00 dc s 10a inz('sundar')
0004.00 dd s 10s 0 inz(12)
0005.00 de s 10a inz('rambabu')
0006.00 dout s 50a
0007.00 c eval out=a+%editc(b:'X')+c+%editc(d:'X')+e
0009.00
c out dsply
0010.00
c seton lr
0011.00
****************** End of data ***********************************
OUTPUT
DSPLY shyam
0000000020sundar
0000000012rambabu
v %REPLACE (Replacing string, actual string, starting
position, offset)
Here
we are replacing senthilkumar from
position 4 to 3 by kum. The output will
be senkumlkumar.
SKANDASAMO/BULID
REPLACE
*************** Beginning of data
****************************
0000.01
d*replace the string using keyword %replace
0001.00
dc s 16a inz('senthilkumar')
0002.00
db s 20a
0003.00
c eval b=%replace('kum':c:4:3)
0004.00
c b dsply
0005.00
c seton lr
****************** End of data
*****************************
OUTPUT
DSPLY senkumlkumar
v %TRIM (%TRIML, %TRIMR)
The use of the
TRIM functions is very limited, in that they support only the use of character
variables and data structures. Numeric fields, and zero-fill values are not
supported. They do, however, provide some useful function for string handling.
For example, in RPG IV, one line of code is all that's needed to left-adjust a
value within a field. For example:
.....CCRn01Factor1+++++++OpCode(ex)Factor2+++++++Result++++++++Len++DcHiLoEq
C ExFmtCustMaint
C Eval CustName=%TrimL(CustName)
Typically, the
%TRIM function is the only one of the three that get used. The other two,
however, do have their place.
%TRIM removes
trailing and leading blanks from a field, and returns the remaining value, in
place, within the expression. The returned value is treated similar to a
constant value with leading or trailing blanks.
%TRIML removes
leading blanks (trim-left) from a field, and returns the value in place, within
the expression.
%TRIMR removes
trailing blanks (trim-right) from a field, and returns the value in place,
within the expression.
v %FOUND,
%EOF, %EQUAL,%OPEN
OS/400 Version
4, Release 2 RPG IV supports the elimination of the Resulting Indicators. In
their place, several new built-in functions have been introduced. Most of these
new built-in function provide information about the result of File
operations similar to the Result indicators. But instead of coding Resulting
indicator 3, for example, to check for the end-of-file condition, you simply
check the value of the %EOF built-in function.
The built-in
functions that replace the Resulting Indicators include:
%FOUND, %EOF,
%EQUAL. In addition, there are %OPEN, %STATUS, and %ERROR. Mysteriously missing
is %LOCK to check for a record lock condition.
%FOUND returns an
*ON or *OFF condition if the previous File operation returns a record-found
condition. This is particularly useful on the CHAIN operation. Realize,
however, that when CHAIN sets on Resulting indicator 1, a not-found condition
is signaled. Whereas, without coding Resulting Indicator 1, the %FOUND built-in
function returns the found condition.
%EOF can be used to
check for end-of file, beginning of file, or subfile full conditions. A READ
and READE return %EOF=*ON if the end of file is reached. READP and READPE
return %EOF=*ON if the beginning of file is reached. The WRITE operation
returns %EOF=*ON if the WRITE operation to a subfile detail record returned a
subfile-full condition.
%EQUAL is used by
the SETLL operation to indicate that it detected a record in the file with a
key equal to that of the value specified in Factor 1. Since SETLL does not read
the record, does not lock the record, and does not copy the data into the input
buffer, SETLL is much faster and less of an impact on the performance of the
application than other operations, such as CHAIN. Use CHAIN when you need to
retrieve the record, use SETLL and %EQUAL when you need to only check for the
existence of a record.
%OPEN is used to
check to see if a file has already been opened. The built-in function returns
*ON if the file is opened, otherwise it returns *OFF.
v %ELEM
%ELEM
will display the array dimension
ELEM
*************** Beginning of data
******************************
0001.00
darr1 s 3s 0 dim(100)
0002.00
dc s 3s 0
0003.00
c eval c=%elem(arr1)
0004.00
c c dsply
0005.00
c seton lr
****************** End of data
**********************************
OUTPUT
DSPLY 100
v %SIZE
%SIZE
will display the size of the variable
SKANDASAMO/BULID
SIZE
*************** Beginning of data
*****************************
0000.01
D*BY USING THIS COMMAND FIND SIZE OF DATA VALUE
0001.00 darr1 s 10p 0 dim(10)
0002.00 dds1 s 10p 0 dim(20)
0003.00 dnum s 20p 0
0004.00 c z-add 2 a 20 0
0005.00 c movel 'senthil' b 10
0006.00 c eval num=%size(a)
0007.00 c
0008.00 c num dsply
0009.00 c eval num=%size(b)
0010.00 c num dsply
0011.00 c eval num=%size(arr1)
0012.00 c num dsply
0013.00 c eval num=%size(arr1:*all)
0014.00 c num
dsply
0015.00 c eval num=%size(ds1)
0016.00 c num dsply
0017.00 c eval num=%size(ds1:*all)
0018.00 c num dsply
0019.00
c seton lr
****************** End of data
**********************************
OUTPUT
DSPLY 6
DSPLY 11
DSPLY 10
DSPLY 6
DSPLY 60
DSPLY 6
DSPLY 120
v %EDITW
86.Explain keyword in ILE?
v Overlay
v Rename
v Prefix
v Options
v Const
87.How you can schedule a job to run periodically?
We have to create a job scheduler for running a job
periodically. Here we can make a job to run once or periodically at a given
date and time. We can create a job scheduler by using ADDJOBSCDE command.
We can list all the job scheduler running by using the
command WRKJOBSCDE command and we can delete a job scheduler by using
RMVJOBSCDE or we can reschedule the job by using CHGJOBSCDE.
88.How to debug a batch job?
Hold the batch job to be debugged by using WRKACTJOB
command and having option 3. Set the pointer in the batch program to be
debugged by using STRDBG and call the STRSRVJOB command and start the service
program, which will enter into the debug mode. After entering into debug mode
release the job that is hold before.
89.Define KLIST?
KLIST operation is a declarative operation that
gives a name to list of KFLD. This KLIST can be used as a search argument to
retrieve records from files that have a composite key.
90.Define PLIST?
The declarative PLIST operation defines symbolic
name for a parameter list to be specified in a CALL operation.
91.Define composite key?
It is a key for a file, which is composed of more
than one field.
92.Explain procedure used in RPGLE?
A procedure
is a non-executable program. If a module is having more than one procedure then
we can give explicitly the procedure name to be called in case of CALLP.
v Defining
the prototype:
Prototype
will specify the following things
ü Parameter type
ü Sequence of the parameter
ü Return variable and its type
ü It tells the name of the procedure and also the type
of the call.
It will avoid all the run time problems like
parameter mismatch by specifying the prototype.
v Prototype
interface
It is like *entry parameter where we will specify
the parameters that are received in this program.
v Import
and export
If you want to specify the procedures to be the
external programs then we can specify EXPORT in your procedure.
v Global
and local variables
If you declare a variable in main procedure then it
will be accessible in all sub procedure and this is global declaration and if
you specify the declaration in the sub procedures then it will not be accessed
in other procedures or in the main procedure.
v Return
If we specify return in the sub procedure then it
means that we are returning something to the calling program. We can return a
maximum of only one variable to the calling program.
v Recursion
A
procedure calling to it self is known as recursion.
v Pass
by value/pass by reference
In case of pass by reference we are passing the
address of the parameters and not the actual value and so the changes in the
called procedure will affect the value in the calling program. In OPM program
we are using only call by reference and in RPGLE we have the option to pass the
parameter by giving the keyword VALUE.
v CALLP/Expression
We can call the procedure by using CALLP command if
it is not having any return type and by an expression if it returns any value.
93.How you can import and export a data type between 2
programs?
If you are using an export statement when declaring
a variable then the data type can be imported in any modules that is bind
either by value or by reference. So in this case we can pass values in between
modules instead of using PLIST and *ENTRY.
94. Message subfile record format keywords?
v SFLMSGRCD (subfile message record)
This keyword is used to give the line number to get
the first message in the display.
v SFLMSGKEY (subfile message key)
This keyword is used to specify that the program
message queue is built one at a time.
v SFLPGMQ (subfile program queue)
It is a message queue created for every program
active in the call stack.
This keyword is used to specify the field that can
have the name of the program message queue.
95. How to create Message subfile?
v Create
message subfile
CRTMSGF
MKSFILE/LIB
WRKMSGF
FILE/ANME
OPTION 12
Add Message Description
(ADDMSGD)
Type choices, press Enter.
Message identifier . . . . . . . MKS0001 Name
Message file . . . . . . . . . . >
MKSFILE Name
Library
. . . . . . . . . . . >
SKANDASAMO Name, *LIBL, *CURLIB
First-level message text . . . . EMPLOYEE
NUMBER &1 CANNOT BE ZEROS
PAGE
DOWN
Message
data fields formats:
Data type
. . . . . . . . . . *CHAR *NONE, *QTDCHAR, *CHAR...
Length . . . . . . . . . . . . 10
Number, *VARY
WRKMSGF
MKS0001
0 EMPLOYEE NUMBER CANNOT BE
ZEROS
MKS0002
0 EMPLOYEE &1 NUMBER
AIREADY EXIST
MKS0003
0 EMPLOYEE NAME CANNOT BE
BLANKS
MKS0004
0 ADDRESS(1) CANNOT BE BLANKS
MKS0005
0 CITY CANNOT BE BLANKS
MKS0006
0 MARITAL STATUS WILL BE WITH
(M/S)
MKS0007
0 EMPLOYEE NUMBER &1 ADDED
SUCCESFULLY
MKS0008
0 EMPLOYEE NUMBER DOES NOT
EXISTS
MKS0009
0 EMPLOYEE UPDATED
SUCCESSFULLY
MKS0010
0 EMPLOYEE NUMBERDELETE
SUCCESFULLY
v Create
message subfile
10 MSGREC1 SFLMSG 06/27/02
20
MSGCTL1 SFLCTL MSGREC1 06/27/02
USING
8 SELETION
Select Subfile
Keywords
Subfile record . . . . . . . : MSGREC1
Type choices, press Enter
Y=Yes
General keywords . . . . . . . . Y
Indicator keywords . . . . . . . Y
Message record . . . . . . . . . Y
TEXT keyword
. . . . . . . . . .
Define Message
Record
Subfile record . . . . . . . : MSGREC1
Type choices, press Enter.
Keyword
Line number for first message . . . . SFLMSGRCD
24 1-27
Message ID field . . . . . . . . . . SFLMSGKEY
DUMMY Name
(if program message queue is built
one message at a time)
Program message queue field . . . . . SFLPGMQ
QUEUE Name
Generate a 276 byte field . . . . . Y=Yes
MESSAGE SUBFILE (SFTCTL)
Subfile
control record . . . . . . . . . :
MSGCTL1
Type choices, press Enter.
Y=Yes
General keywords . . . . . . . . Y
Subfile display layout . . . .
. Y
Subfile messages . . . . . . .
. Y
Select
record keywords . . . . . Y
TEXT keyword
. . . . . . . . . .
Define General Keywords
Subfile control record . . . . . . . . .
: MSGCTL1
Type choices, press Enter. Keyword
Related subfile record . . . . . . . SFLCTL
MSGREC1 Name
Subfile cursor relative record . . . SFLCSRRRN Name
Subfile mode . . . . . . . . . . . . SFLMODE Name
Program message queue field . . . .
SFLPGMQ QUEUE Name
Generate a 276 byte field . . . . Y=Yes
Y=Yes Indicators/+
Display subfile records . . . . . .
SFLDSP Y
Display control record . . . . . . . SFLDSPCTL
Y
Initialize subfile fields . . . . .
SFLINZ Y
Delete subfile area . . . . . . . . SFLDLT
Clear subfile records . . . . . . . SFLCLR
Indicate more records . . . . . . . SFLEND
SFLEND parameter . . . . . . . . *MORE
SFLEND parameter . . . . . . . . *SCRBAR *MORE ...
Record not active . . . . . . . . . SFLRNA
More...
F3=Exit
F12=Cancel
Select Record
Keywords
Record . . . : MSGCTL1
Type choices, press Enter.
Y=Yes
General keywords . . . . . . . . Y
Indicator keywords . . . . . . . Y
Overlay
keywords . . . . . . . . Y
Select Overlay Keywords
Record . . . : MSGCTL1
Type choices, press Enter.
Keyword Y=Yes Indicators/+
Roll
Overlay without erasing . . . . . .
OVERLAY Y
v Create
CL program for SNDPGMMSG
SKANDASAMO/EMPCUSTOR
MSG
*************** Beginning of data
*****************************
0001.00 PGM PARM(&MSGID &MSGFI &MSGDTA)
0002.00 DCL VAR(&MSGID) TYPE(*CHAR) LEN(7)
0003.00 DCL VAR(&MSGFI) TYPE(*CHAR) LEN(7)
0004.00 DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(10)
0005.00 SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFI)
MSGDTA(&MSGDTA)
0006.00 ENDPGM
****************** End of
data******************************
v Create
CL program for RMVMSG
SKANDASAMO/EMPCUSTOR
RMO
*************** Beginning of data
*****************************
0001.00 RMVMSG PGMQ(*PRV) CLEAR(*ALL)
****************** End of data
*******************************
v Design
the screen
v Generate
RPG program
0000.01 FMESSTAB IF A E K DISK
0001.00 FMKSSCR CF E WORKSTN
0001.01 C
MOVEL MSTATUS S 1
0002.02 C MOVEL '*' QUEUE
0003.00 C MOVEL 'MKSFILE' MSGFI
0004.00 C PL01 PLIST
0005.00 C
PARM MSGID 7
0006.00 C
PARM MSGFI 10
0007.00 C PARM MSGDTA 10
0008.00 C
DOW *IN03=*OFF
0008.01 C
MOVEL 0 ERROR 1 0
0008.02 C
MOVEL 0 ERROREMP 1 0
0012.00 C
WRITE MSGCTL1
0013.00 C
EXFMT MKSSEN
0013.01 C
CALL 'RMO'
0014.00 C IF EMPNUMB=*ZEROS
0014.01 C
MOVEL 1 ERROR
0014.02 C MOVEL 1 ERROREMP
0015.00 C
MOVEL 'MKS0001' MSGID
0016.00 C
MOVEL *ZEROS MSGDTA
0017.00 C
CALL 'MSG' PL01
0017.01 C ENDIF
96.What is
active subfile?
v
Subfile, which are in the main memory, are
called as active sub files.
v
A maximum of 12 sub file can be active at a
time.
97.
Navigation between two screens?
SKANDASAMS/TABLES
EX21
*************** Beginning of data
*****************************
0001.00
FEXDSPF CF E WORKSTN
0002.00
C Z-ADD 1 SCR1 2 0
0003.00
C *IN03 DOWEQ *OFF
0004.00
C SCR1 DOWEQ 1
0005.00
C EXFMT
DSPF1
0006.00
C 03 LEAVE
0007.00
C IF *IN08=*ON
0008.00
C Z-ADD 2 SCR1
0009.00
C LEAVE
0010.00
C ENDIF
0011.00
C ENDDO
0012.00
C SCR1 DOWEQ 2
0013.00
C EXFMT DSPF2
0014.00
C 03 LEAVE
0015.00
C IF *IN07=*ON
0016.00
C Z-ADD 1 SCR1
0017.00
C LEAVE
0018.00
C ENDIF
0019.00
C ENDDO
0020.00
C 03 LEAVE
0021.00
C ENDDO
0022.00
C SETON LR
****************** End of data
*******************************
98. What is
the different between READE and CHAIN opcodes?
READE
|
CHAIN
|
1.The matching
records for table
|
The first
matching records only
|
2. We are
using the looping concept
|
Looping is not
necessary
|
3.The indicator
setin the EQ
|
The indicator
setin the HI
|
4. We are most
using in SETGT or SETLL
|
It is not
necessary
|
99. Define
indicator & MOVEA?
It is a 1-bit flag where value
will be either 0 or 1 AS/400 provider 99 indicators for the business user.
Ø
1-24 ->assigned functions keys
Ø
25-99 ->our own purpose
100. Define
ITER / LEAVE/DO/Dow?
ITER-> Transfer the control
before do loop.
LEAVE-> Transfer the control
after do loop.
DOU àChecks after entering
the loop, it is performed at least once.
DOW à Checks before entering
into the loop.
101.CL
commands?
1.
WRKMBRPDM
2. CRTSRCPF
By using this command to
create source physical file. Default PF size is 92.
3.DSPFD
It is used to
display the details about the file when it is created.
4. DSPFFD
It is used for listing
details about Individual Fields.
5.STRDFU
It is used to add
Data into the records.
6.STRSDA
It is used to go
into screen Designing or Menu Designing.
7.CRTMSGF
For creating the
Message file
8.WRKMSGF
If you want to create or change or delete any message we can
use this command.
9.CRTDTAARA
For creating The Data Area
10.DSPDTAARA
For listing the
content of Data area.
11.CHGDATARA
For changing the
content of Data area.
12.DSPLIBL
For listing the contents of library
13.ADDLIBLE
For Adding a library
into the current library.
14.RMVLIBLE
For Removing a
library into the current library.
15.CHGCURLIB
For changing the
Current Library to a new library
16.EDTLIBL
It is used to the edit of the library file. (Change library
file it is temporary delete the library file)
For Adding or
removing library lists.
17.SNDBRKMSG
Used for sending message to all
user.
18.CRTPF
It is used to create a PF. Using this command we can set the
maximum number of records, whether delete or update operation is allowed or
not, maximum storage allocation, waiting time etc can be determined
19.CRTLF
To create the
logical files.
20.STRRLU
To go into the RLU we are using this command. Default length
of RLU is 132 if you give it and creating it very first time else it set the
page width value of last edited RLU. We can give the page width value from 1 to
378 in page width option.
21.DSPSBS
It is used to list the various subsystems running under
AS/400 environment. Various subsystems running are QINTER, QACTIVE, and QBATCH
etc.
22.CRTRPGPGM
It is used to create an RPG program. We can determine what
sort of source file is generated. For example when we need the entire source
compile as it is since source is default. If we give *NOSOURCE only syntax errors
is generated NOSECLVL will not allows secondary message where as other setting
is allowed it and so on
23.CRTCLPGM
To create CL program
24.EDTOBJAUT
It is used to give authority to a particular source PF. For
giving authority to other user we must give authority to library, user profile
and the source PF.
25.DSPOBJD
If we know library name and object name and we want to know
the source PF where it is residing then DSPOBJD with option as services instant
of basic will give the source PF name.
It describes various object descriptions like created Date,
Created by, Source Physical file, which it is being created, and so on.
26.STRSQL
To start into SQL.
27.WRKSPLF
To work with Spool
file
28.DLTSPLF
To delete the spool
file
29.CRTDUPOBJ
By using this command to create duplicate object. If you want
to compile a PF having 1000 of records and when we compile it all the data will
be lost else if you want to add or delete a attribute data for other fields
will have to copied. For that we a duplicate object.
30.CPYF
Records are being copied from PF
to temporary file and after compiling it we have to again copy back from
temporary file to the original file. If we Add a attribute we have to give *map
and if we want to delete a attribute we have to give *drop in the map entry
field.
31.DLTF
After copying into the original file we have to delete the
temporary file or if you want to delete any file we are using this command.
DLTF will only remove the object
32.RMVM
It is used to delete
the member as well as the object.
33.RUNQRY
To display all the
records in a PF.
34.CRTCMD
It is the powerful
command used to create user define commands. 35.CMPPFM
It is used to compare two programs or files. It can be coded
by taking option 54 in Subfile screen.
36.MRGSRC
It is used to merge a file with another file. We have to
mention three files one is the root file, which is just a root and does not
contain any code even. The second file is target file where we can have the
ready-made we can copy the target source.
37.RTVCLSRC
If you delete a CL Source then we can retain the source if
you are having the object by using this command.
38.SBMJOB
If you want to submit the job in certain interval i.e. on a
specified date and time we can use this command.
39.DSPJOB
It will display all
the jobs.
40.DSPUSRPRF
It will display all the entries regarding the particular user
profile. It displays information like what is the user. Profile name; date
previously, user class, printing and all.
41.CPYSRCF
If we want to copy
all the members in a source PF to another source PF.
42.WRKACTJOB
To display the
active jobs running in AS/400 systems.
43.DSPJOBLOG
By using this
command display the output console.
44.SNDMSG
This command is to
send the message to an user.
45.DSPMSG
This
command is display all the message.
46.CHGCURLIB
Change the current
library file.
47.ADDLIBLE
It is used to add
the library. It is fully administrator authority.
48.RMVLIBLE
This command is to
remove a library from the list.
49.CRTUSRPRF
It is used to display the rights given to a user. The system
administrator can change authority he can give the authority as a system
administrator.
50.DSPDBR (data base relation)
This is used to list all the files, which are related to a
PF. It displays all the LF that is referring the PF and also lists the child
table if it is having a relation through ADDPFCST.
51.DSPJOB
It will display all the jobs submitted within the specific
interval and display the entire user who worked on the system at that time
52.WRKMSGQ
It will list all the
messages of different user in the job queue.
53.CPYSRCF
If we want to copy all the members in a source PF to another
source PF we can use this command.
54.CPYTODKT
If we want to copy from source
PF to a diskette file
55.CPYTOTAP
If we want to copy source PF to a tape then we can use this
command.
56.STRDBG
If we want to debug a ILE program then we can use this
command .We have to create a ILE program by compiling with 15 which is
CRTRPGMOD command and take F10 give debugging values as *Source. This will
create a module. Then we have the create the program by giving program name and
module name as the same and if we are calling any other modules also in that
include that in the CRTPGM command
Ex: CRTPGM PGM (LIB/PNAME) MODULE (LIB/PNAME)
(LIB/SPNAME)
Now
the program as well as the module is created. Then we have to start the debug
by using the command.
STRDBG PGM (LIB/PNAME) UPDPROD (*YES)
It will shoe the source code of the
program and we have to press F6 set the break point and press F10 key and call
the program
CALL PNAME
F11->
display the variable
Shift
+ F11 -> go to module
102. Data
types in CL?
Char,
Logical, Numerical
TYPE
()
|
LEN ()
|
VALUE ()
|
*DEC
|
Default
(15 5)
Max (15 9)
|
Default (0)
|
*CHAR
|
Default (32)
|
Default (b)
|
*LGL
|
1
|
Default (‘0’)
|
103. String
operation in CL?
*CAT ->Concatenate without
editing.
*BCAT->Trailing
blanks in the first character string are truncated. One blanks is inserted,
then the two character strings are concatenated. Any leading blanks of the
second operand are not truncated
*TCAT->All
trailing blanks in the first character string are truncated, and then the two
character strings are concatenated. Any leading blanks of the second operand
are not truncated.
SKANDASAMO/CLP
STRING
*************** Beginning of data
********************************
0000.01
/*STRING *CAT *BCAT *TCAT FUNCTION */
0001.00 PGM PARM(&STR &STR1 &STR2
&STR3 &STR4)
0001.02 DCL VAR(&STR) TYPE(*CHAR) LEN(15)
0001.03 DCL VAR(&STR1) TYPE(*CHAR) LEN(15)
0001.04 DCL VAR(&STR2) TYPE(*CHAR) LEN(15)
0001.05 DCL VAR(&STR3) TYPE(*CHAR) LEN(15)
0001.06 DCL VAR(&STR4) TYPE(*CHAR) LEN(40)
0001.07 CHGVAR VAR(&STR2) VALUE(&STR *CAT
&STR1)
0001.08 CHGVAR VAR(&STR3) VALUE(&STR *BCAT
&STR1)
0001.09 CHGVAR VAR(&STR4) VALUE(&STR *TCAT &STR1)
0001.10 SNDMSG MSG(&STR3) TOUSR(SKANDASAMY)
0001.11 SNDMSG MSG(&STR4) TOUSR(SKANDASAMY)
0001.12 SNDMSG MSG(&STR2) TOUSR(SKANDASAMY)
0006.00
ENDPGM
****************** End of data
**********************************
run
call
program name (string) f4
Program . . . . . . . . . . . . > STRING Name
Library
. . . . . . . . . . . >
SKANDASAMO Name, *LIBL, *CURLIB
Parameters . . . . . . . . . . . > SENTHIL
> kumar
> ''
> ''
+ for more values
> ''
DSPMSG
104.
How to set the cursor position in particular field in
particular position?
Using
the curpos
105.
How will retrieve the data in data area?
In –retrieve a data area
Out-write a data area
106.Built in function in CL?
v
%SUBSTRING or %SST
The sub string built-in function produces a character
string that is a subset of an existing character string and can only be used
with a CL program.
%SUBSTRING (Character-variable-name Starting-position
length)
Or
%SST
(Character-variable-name Starting-position length)
v
%SWITCH
106.
Define indicator in CL?
We can set on or setoff
the indicator by the command.
CHGVAR (&IN30) VALUE (‘0’) ->setoff
CHGVAR (&IN30) VALUE (‘1’)->seton
107.
Message subfile in CL?
Subfile cannot be used
in CL but we can use message subfiles in CL.
108.
CL processing commands & program control
commands?
PROCESSING -> CHGVAR, SNDPGMMSG, OVRDBF, AND DLTF.
PROGRAM CONTROL ->CALL, RETURN, TFRCTL
109.
How to CL code has to change to use a call
procedure?
By using CALLPRC command. This is the bound call in CL that calls a
procedure within a module.
110.
Figurative constants in RPGLE?
*HIVAL, *LOVAL, *ZERO, *ZEROS, *BLANKS, SETLL, SETGT.
111.
Rename of fields and prefix?
112. How you will avoid multiple users updating the same records?
The
displaying the records in the screen we will be getting the timestamp along
with the actual data. Store this in output data structure and while updating
check weather the previous time stamp is the same timestamp before updating. If
the record is updated by another user than the time stamp will be changed and
if it does not matches then throw the error message ‘Record is already updated
by another user’ else update the records with current time stamp.
Program 1
Store the time stamp and this time stamp will come as a input to the
second program
Program2
Here wstmst1 contains the input time stamp and check this
matches with the database. If matches Update else send error message.
113.Define binder program?
The binder program means binding
the procedure it is called binder program.
114.question details?
ü DEFAULT
CL MSGID?
CPF0000
ü Dspf
windows type?
WINDOW
ü How
many key define in logical file?
All
the PF fields are create in key.
ü What
is the level check error?
The level check error means RPGLE program is
compiled and PF or LF are compile suppose the PF or LF compile after the
compiling the RPGLE program this type of error is called level check error.
ü If you want to copy a PF without making any
modification to it then FORMAT keyword is used.
ü Default access path maintenance is *IMMED
ü Maximum no of printer files included in a RPGLE
program is 8
ü Maximum no of files declared in RPGLE is 50 and CL
is l
ü Maximum no of key fields included is 120
ü Maximum no of fields included in a PF is 8000
ü Maximum no of arrays included is a RPG is 200
ü Maximum no of parameter passed in a RPG is 255 and
CL 40
ü Total no of system library is 15 and user library is
25
ü While logging on the first library to be included is
QSYS
ü QGPH and QTEMP are user library
ü Printer file default length is 132.
ü Default size of a member is CRTSRCPF command for
ordinary files is 92.
115. What's the difference between CHAIN
and SETLL? Is there a performance advantage?
There are two important
differences between CHAIN and SETLL.
- The CHAIN operation applies a record lock to files
that are open or update. The SETLL operation does not apply the lock.
- The CHAIN operation copies the record's data to the
input buffer for the program. The SETLL operation does not.
More Details
The CHAIN
operation performs a random GET operation to the database file. If the
operation is successful, the data in the record is copied to the input buffer.
If the CHAIN operation fails, a record-not-found condition is signaled,
typically via Resulting Indicator 1. If the database file has been opened for
UPDATE, the CHAIN operation places a record lock on the retrieved record. No
other application can access this record for update while this lock is applied.
Furthermore, if another program has issued a lock to the recording being
accessed, the CHAIN operation will wait for the database time-out period. If
the record is released during that period, the CHAIN operation continues. If
the other program does not release the record, the CHAIN operation fails with
an exception.
CHAIN with NO LOCK
The CHAIN
operation supports the NO LOCK operation extender (the old
"half-adjust" column). In RPG III you specify an N in the operation
extender column, in RPG IV, you specify CHAIN (n) for the operation code. Using
NO LOCK allows you to access a record without a record lock being applied,
regardless of the way in which the file is open. The record's data, however, is
still copied to the input buffer when NO LOCK is specified.
The SETLL
operation performs a quasi READ LESS THAN OR EQUAL operation. If the operation
is successful, a READ PRIOR is performed. The database record's data, however,
is not copied to the input buffer, nor is there a record lock applied
to the accessed record. Hence, SETLL is probably the operation code to use for
testing the existence of a record. However, if the record needs to be
retrieved, CHAIN more effective.
Performance
If your
requirement is to check for the existence of a record, traditionally the CHAIN
operation is used. However, since CHAIN copies the record's data to your
program's input buffer, there is additional overhead required for the CHAIN
operation. The SETLL can be used to effectively accomplish the same task as the
CHAIN test. Use SETLL with resulting indicator 3 (equal). If this indicator is
set on, a record exists whose key matches they value specified in Factor 1. If
your requirement is that the record eventually be updated, subsequent to the
existents test, you should consider using of CHAIN.
116. How do I debug a remote (i.e.
"batch") job from an interactive job?
The ability to
debug another job has been a long-standing requirement for AS/400, now iSeries
programmers. It isn't as difficult as it may seem. Whether you need to debug a
batch job, another interactive job, or an HTTP server job (browser/CGI
program), the following steps can get you started.
Starting Debug for a Remote Job
- Determine the job name of number for the job you need to debug.
ü
Use WRKACTJOB and note the Job name, number and
user profile ID.
ü
If debugging a CGI program, look in the job log
of the job for CPF message HTP2001.
- Run the Start Service Job (STRSRVJOB) command specifying the
job to be debugged
ü
E.g., STRSRVJOB JOB (012345/usrid/jobname)
- Run Start Debug (STRDBG) on the program to be debugged
ü
E.g., STRDBG PGM (libnam/pgmname) UPDPROD(*YES |
*NO)
- At this point the program in the remote job is under debug
control from your job
ü
You can now set break points (if you're
debugging an RPG IV program, the source will have already been displayed).
ü
Press F12 from within the debugger to return to
CMD entry after setting your break points.
- Evoke the program in the remote job. If you you're doing a web
browser session, hit the SUBMIT button.
- You interactive job will "break" at the debug break
points and you can debug application normally.
Ending Debug for a Remote Job
Ending the debug session should
be done in the following sequence.
- From your debugging session, run the End Debug
(ENDDBG) command
- Then run the (End Service Job) ENDSRVJOB command
Your session is no longer
controlling the remote job. The remote job continues normally.
Special Considerations when Debugging a Web
Browser/CGI Program
To debug a CGI program that is
evoked from a Web Browser session running from the standard IBM HTTP Web
Server, you need to do the following in addition to the above.
Before Starting Debug for a Web Browser/CGI
Session/Program
v
End the HTTP Server using the following CL
command:
ü
ENDTCPSVR *HTTP
ü
WARNING!!! -- You MUST include *HTTP as
the parameter for ENDTCPSVR otherwise all TCP/IP server jobs (including telnet,
ftp, smtp, etc.) will be ended. And this is a bad thing. IBM sucks for making
*ALL the default for ENDTCPSVR.
v
Restart the HTTP Server using the following CL
command:
ü
STRTCPSVR *HTTP HTTPSVR(DEFAULT '-minat 1 -maxat
1')
ü
This restarts the HTTP server with once instance
of each job type (one for CGI, one for Java, etc.)
ü
Using WRKACTJOB in the QHTTPSVR subsystem
location the jobs running.
ü
The job whose joblog contains the CPF message
HTP2001 is the one to be debugged.
After Finishing the Debug
Session
v
End the HTTP server using the following CL
command:
ü
ENDTCPSVR *HTTP
v
Restart the HTTP server using the following CL
command, unless your shop has another process for starting the HTTP server:
ü
STRTCPSVR *HTTP
Your system should be back to
normal.
117. What is the new E operation extender used
for?
The
new (E) operation extender is used to cause the %ERROR and %STATUS built-in
functions to be initialized after an operation is performed. That is, these
built-in functions and the E operation extender are used in place of Resulting
Indicator 2 on all operation codes that currently support Resulting Indicator 2
as an error condition.
For example, to check to see if
a record is locked, you would code the following:
.....CSRn01Factor1+++++++OpCode(ex)Factor2+++++++Result++++++++Len++DcHiLoEq
C CustNO Chain(E) CustMast
C if %ERROR = *ON
C Select
C When %STATUS = 1221
C exsr UpdateNoRead
C When %STATUS = 1218
C exsr RecdLocked
C endSL
C ELSE
C if %FOUND( CustMast )
C exsr whatever...
C endif
C endif
The concept is
to first check %ERROR for a generalized error condition, and then check %STATUS
for the specific error. Note that no resulting indicators are used in the
previous example. The normal not-found condition is checked using the
%FOUND built-in function rather than testing Resulting Indicator 1.
118. Why
doesn't the %CHAR built-in function work with numeric values?
Under the
initial release of OS/400 Version 4, Release 2, the %CHAR built-in function was
introduced. However, the function, as designed, only converted DATE values to
character values. This proved to be too restrictive a use for this function. In
the next release of OS/400 (V4R4) IBM will add function to %CHAR allowing it to
convert all forms of non-character data to character. In that release %CHAR
will function with numeric values.
D Amount 7P 2 Inz(123.45)
C Eval text = 'The amount is: ' + %Char(
amount )
The TEXT field
would contain the following after the EVAL operation is performed:
'The amount is: 123.45'
Unlike %EDITC,
the %CHAR built-in function trims off leading blanks. However, %EDITC provides
much more editing power than %CHAR. Use %CHAR for basic number to character
conversion.
119. What's new in V4R4 and RPG IV?
There are a few significant
enhancements in RPG IV in OS/400 Version 4, Release 4.
The %CHAR
built-in function has be fixed. It now functions like it was supposed to in the
first place. You can wrap a numeric value in %CHAR and a nicely edited
character form of the number is returned. The edited form includes the decimal,
trimmed off leading blanks, and a negative sign.
The FOR loop
provides a free-format version of the DO operation code. With the FOR
operation, you can begin a loop operation and continue iterating through the
loop until a variable equals a limit value. The syntax for the FOR operation is
enhanced with the TO, BY and DOWNTO keywords. The TO operation indicators the
upper limit for the looping, while the BY keyword identifies the increment
value for the loop counter. Alternatively, you can specify the DOWNTO keyword to
loop backwards from a large value to a small value.
The OPENOPT
keyword is added to the Header specification. This keyword can be used along
with its one and only keyword *INZOFL to cause overflow indicators to be set
off when their corresponding printer file is closed and then re-opened during
the program.
In subroutines, the LEAVESR
operation can now be used to exit a subroutine immediately. Effectively
this is a "glorified goto" operation that branches to the ENDSR
statement of a subroutine.
120. How does the CONST keyword work
with Procedure parameters?
If you are
certain that the called procedure will NOT modify a parameter, the CONST
keyword can provide several benefits.
- It automatically converts a field of a similar data
type, to the length and type required by the parameter.
What this means, is
say a parameter is a 15 position pack field, with 5 decimals. Normally, you'd
have to specify a Pdk(15,5) field for the parameter. However, if the parameter
is read-only, you can specify CONST on the Prototype and Procedure Interface
for the parameter. When you do this, the compiler automatically converts the
value (say it's a literal of 27) to the size and type required by the
parameter. This works really cool with DATE fields. A date for any format can be
passed as a parameter value when that parameter value is CONST.
- Performance is improved because the compiler can generate more
optimized code for the CONST parameter.
CONST can be used on calls to procedures or programs. We use it all the
time when calling QCMDEXC from within RPG IV. All three parameters of the
QCMDEXC program are CONST values. The example code below can be used as the
PROTOTYPE to call QCMDEXC from within RPG IV. To call it using this prototype,
specify something like: CALLP run('addlible myLib' 14) in your
calculation specs.
.....DName+++++++++++EUDS.......Length+TDc.Functions++++++++++++++
D Run PR ExtPgm('QCMDEXC')
D cmdstr 3000A Const Options(*VarSize)
D cmdlen 15P 5 Const
D cmdDbcs 3A Const Options(*NOPASS)
Note: if you're using
CodeStudio or IBM's Code/400 as your RPG IV editor under Windows, you could
simply highlight the above source code within your Internet Browser, and copy
it to the Windows clipboard. Then activate CodeStudio (or Code/400) and use the
Paste function to insert the code directly into the editor. Pretty cool, huh?
<g>
121. Can you clear up the confusion in the
different releases of RPG IV and OS/400
and ILE?
RPG IV is the
next generation of the RPG language. RPG III is the original version of AS/400
RPG/400. The name "AS/400 RPG/400" is that given to the IBM compiler
package for distribution on the AS/400. This compiler package compiles various
versions of RPG, including RPGII and at least two releases of RPGIII.
As of OS/400
Version 3 release 1, IBM changed the name of this compiler package to
"AS/400 ILE RPG/400". The reason for this name change was to identify
that fact that the compile now includes a version of RPG that targets the
Integrated Language Environment (ILE), that is RPG IV.
ILE was first
shipped in OS/400 Version 2, Release 3. However, only the C language compiler
produced code that targeted this environment. First, a word about ILE.
ILE is the new,
"native" runtime environment for Programs, on the AS/400. Under
OS/400 Version 2 Release 3, IBM introduced a new program model. This basically
means that new features and interfaces became available. However, IBM did not
just port some runtime environment to the OS/400 operating system, it actually
re-wrote code, and wrote new code that, essentially, changed the way OS/400
works. This new code provides support for a mixed set of high-level languages.
Previously, RPG
and CL had their own little runtime environment, COBOL had it's own, C had it's
own, and so on. Under ILE, all programming languages run in ILE. The same
"environment" is used for COBOL, C, RPG and CL.
However, to
take advantage of ILE, new compilers needed to be created. As for RPG, rather
than convert the existing RPGII and RPGIII compilers, IBM, who was designing a
new version of RPG anyway, decided to target ILE with the new compiler. This
would simultaneously provide a new version of RPG and an ILE targeted compiler.
Names Are Important
A good friend
of mine once said, "names are important" in the programming world. If
a field is called "Rhinoceros", does it represent its use or purpose?
Okay, so perhaps in traditional RPG "Iguana" is a better choice for
this example. (Shorter name.)
During the
development of RPG IV, two distinct issues arose. First, the internal name for
RPG IV, was "ILE RPG". This was not a code name, but rather the name
IBM used to refer to the new compiler. After all, it was targeting ILE, why not
refer to it as "ILE RPG"? Second, the re-architecture of RPG came
into question.
Unfortunately,
the internal name "ILE RPG" began to be leaked out to the public.
Several magazine writers and IBMers not involved in the development of RPG IV
continued to use the term "ILE RPG" when referring to RPG IV. I
suppose these people still refer to the AS/400 as SilverLake or perhaps
even Olympic.
Then when IBM
announced the compiler package or product name as "AS/400 ILE
RPG/400" it only added to the confusion. IBM dropped the ball when
promoting the RPG IV name. They are, after all, set up to market their products
with their product names. The name of one programming language included in a
product that contains nearly seven full compilers isn't high priority.
RPG IV is the
version of RPG that targets ILE. OS/400 V3R1 compatible RPG IV can also target
what is now called "the original program model" or simply OPM. OPM is
just a name that has been given to the original runtime environment of RPG and
CL under OS/400. This is the environment in which RPGIII and CL run. Under ILE,
however, the original native environment is emulated, that is, ILE isn't an
environment at all, it is native OS/400, whereas, OPM is now an
environment under ILE. Some very clever programming and design went into this,
don't you think? Not very many other operating systems, if any, provide this
kind of continuity.
RPG IV -- Release what?
RPG IV was
first shipped with OS/400 Version 3, Release 1. This is now referred to as RPG
IV release 1. But don't worry about remembering releases of RPG IV.
Under OS/400 Version 3, Release 6, IBM enhanced RPG
with procedures, many more built-in functions, and several new data types. This
is referred to as RPG IV release 2.
Then, OS/400
Version 3, Release 2 was announced. It brought the original release of RPG IV
(on the CISC boxes) up to the same level as RPG IV under V3R6. Are you confused
yet? Me too!
Under OS/400
Version 3, Release 7, IBM added a couple of enhancements, most notably they
increased the length of a field name to a number so large not even magazine
authors that don't write real-world code could complain about it anymore. They
also added one or two new data types, rounding out RPG IV so that it supports
all AS/400 data types, except variable length fields. This version of RPG IV is
known as RPG IV Release 3.
The following
table identifies the current releases of RPG IV. Note that RPG IV releases do
not necessarily coincide with releases of the operating system.
RPG IV
Release |
OS/400
Version/Release
|
CISC or RISC
|
|
1
|
V3 R1
|
CISC
|
|
2
|
V3 R6
|
RISC
|
|
2
|
V3 R2
|
CISC
|
|
3
|
V3 R7
|
RISC
|
|
4
|
V4 R2
|
RISC
|
|
4
|
V3 R5
(speculation)
See note 1 |
CISC
|
|
5
|
V4 R3
|
RISC
|
|
5
|
V4 R4
(February 1999)
|
RISC
|
|
6
|
V4 R5 (Summer
2000)
|
RISC
|
NOTE 1: It is speculated that IBM may ship a final "clean
up" release of OS/400 for CISC that would included a large level of
compatibility with OS/400 V4 R5.
The release
levels of RPG IV are only important if you want to keep track of that kind of
thing. One disappointing issue is that unless you stay on the most current
release of OS/400, you don't get all the cool new features in RPG IV. Even if
you stay current, you can't target prior releases if you use any of the new
features. In fact, even if you use a new feature that doesn't depend on an
operating system enhancement, it can't be used for back releases. This is
because of the way the TGTRLS (target release) feature has been implemented.
Basically, if you're on V4 R2 and you do a TGTRLS(V3R2M0) the compiler calls
the actual compiler for V3 R2. It doesn't have a built-in syntax checker that
says "This feature requires an OS/400 upgrade so don't allow it, or this
one is okay so accept it." It iscalling the same "binary"
compiler code that is on any old V3 R2 system. Which means, for example, that
if you want to take advantage of the new compiler directives, but you often
have to target a prior release, you can't use those directives. For example,
/IF DEFINED does nothing for the executable code that's generated, but is not
supported when TGTRLS(V3R2M0) is specified. ;( Bummer!)
So now we know
about RPG IV release levels and how the term "ILE RPG" got into our
vocabulary. So let's clear up another term, the name of the RPG language. The
big one is the term "RPG/400". There is not programming language called
"RPG/400". The language most often called "RPG/400" is
RPGIII. However, back in the System/38 days, the System/38 RPG language was
called RPGIII. When the AS/400 was announced, programmers wanted to give
themselves an advantage on their résumé. So they began calling AS/400 RPGIII,
"RPG/400". Then to make matter worse, when RPG IV was announced,
programmers thought that the number "IV" in "RPG IV" was
less than the "400" in "RPG/400". So they decided to call
RPG IV, "ILE RPG". Well let's set the record straight. The table
below lists the RPG language names, their incorrect name, and the proper name.
Commonly used Wrong Name
|
Formal Name
|
Proper (correct) Name
|
RPG/36
|
System/36-compatible RPGII
|
RPGII
|
RPG/38
|
System/38-compatible
RPGIII
|
RPGIII
|
RPG/400
|
RPGIII
|
RPGIII
|
ILE RPG
|
RPG IV
|
RPG IV
|
122. How do I declare an array with a dynamic
number of elements?
In RPG IV, the
new (V3 R7) ALLOC, REALLOC and DEALLOC operation codes can be used to allocate
memory. This means that at run time, you can go out to the system and ask it to
assign storage to the program that was not allocated to the program when it was
evoked.
These operation codes can be
used to allocate memory up to 16MB. The allocation can be assigned to a pointer
variable. In RPG IV, pointers have the data-type of asterisk (*). All that is
needed is to allocate memory to a pointer that is used with the BASED keyword
of the desired dynamic array. The example that follows illustrates this
technique:
.....DName+++++++++++EUDS.......Length+TDc.Functions++++++++++++++++++
D DynoArr S 7P 0 Dim(10000) based( pDynoArr)
D nSize S 10i 0
.....CSRn01..............OpCode(ex)Extended-factor2++++++++++++++++++
C Eval nsize = %size(DinoArr) * 64
.....CSRn01Factor1+++++++OpCode(ex)Factor2+++++++Result++++++++Len++DcHiLoEq
C Alloc nSize pDynoArr
** We now have enough storage allocated for 64 elements.
C Eval nsize = %size(DinoArr) * 70
C ReAlloc nSize pDynoArr
** We have changed the allocation to enough storage for 70 elements
C* ... code to use the array goes here...
C Dealloc(N) pDynoArr
** We have just returned the storage to the system.
To increase or
decrease the number of elements in the dynamic array, use the REALLOC operation
code. Simply change the number of bytes that need to be allocated, and call
REALLOC with the new size in Factor 2 and the original pointer variable in the
Result field. REALLOC allocates new storage of the size specified, and copies
the original data to that new location. Then it frees ("deallocates")
the original storage.
IMPORTANT:
Always remember to DEALLOC anything you ALLOC. That is always free up memory
that you have allocated otherwise memory leaks will be created.
If you are not
on V3 R7, you can still use dynamic memory by calling one of the system APIs or
linking into the QC2LE binding directory and calling the C runtime MALLOC and
DEALLOC functions.
123. RPG IV - Built-in Functions
The original release of RPG IV included a set of
built-in functions. These built-in functions were:
%ADDR, %PADDR, %SIZE, %ELEM, %SUBST, %TRIM, %TRIML,
%TRIMR
In addition, under OS/400 V3R2 and V3R7 the %PARMS
built-in function was introduced. Since then, several built-in functions have
been added to RPG IV. The following table provides the OS/400 Version and
Release that the specific built-in functions were introduced and/or enhanced.
NOTE: IBM Seems to skip-ship the RPG IV compiler. So
RPG IV in V4R1, V4R3 and V4R5 have no new functionality. The next scheduled
upgrade is OS/400 V5R1 in Spring 2001.
Version
Release |
Built-in Function
|
Parameters
|
Return
Value Description
|
V3R7
|
%ABS
|
numeric expression
|
Absolute value of expression
|
%ADDR
|
variable name
|
Address of variable
|
|
V5R1
|
%ALLOC
|
memory size
|
Pointer to the allocated storage.
|
V4R2
V4R4 |
%CHAR
|
graphic, date, time, timestamp, or numeric expression
|
Value in character data type
|
V5R1
|
%CHECK
|
compare-value : data-to-search { : start-position }
|
First position in the searched-data that contains a character not in
the list of the characters in the compare value.
|
V5R1
|
%CHECKR
|
compare-value : data-to-search { : start-position }
|
Last position in the searched-data that contains a character not in
the list of the characters in the compare value. (Search begins with the
right-most character and proceeds to the left.
|
V5R1
|
%DATE
|
{ value { : date-format-code }
|
A date data-type value after converting the "value" to the
specified date format. If no value is specified, the current system date is
returned.
|
V5R1
|
%DAYS
|
days
|
A duration value that can be used in an expression to add a number of
days to a date value.
|
V3R7
|
%DEC
|
numeric expression {:digits : decpos}
|
Value in packed numeric format. If digits and decpos are specified the
result value is formatted to fit in a variable of the number of digits
specified.
|
V3R7
|
%DECH
|
numeric expression : digits : decpos
|
Half-adjusted value in packed numeric format. The length and decimal
positions
|
V3R7
|
%DECPOS
|
numeric expression
|
Number of decimal digits.
|
V5R1
|
%DIFF
|
start-date : end-date : duration-code
|
Calculates the difference between two date fields. The type of
difference returned is specified by the duration-code.
|
V4R4
|
%DIV
|
Numerator : Denominator
|
Performs integer division and returns the quotient (result) of that
division operation.
|
V3R7
|
%EDITC
|
non-float numeric expression : edit code {:*CURSYM | *ASTFILL |
currency symbol}
|
String representing edited value.
|
V3R7
|
%EDITFLT
|
numeric expression
|
Character external display representation of float.
|
V3R7
|
%EDITW
|
non-float numeric expression : edit word
|
String representing edited value
|
%ELEM
|
array, table, or multiple occurrence data structure name
|
Number of elements or occurrences
|
|
V4R2
|
%EOF
|
{file name}
|
'1' if the most recent file input operation or write to a subfile (for
a particular file, if specified) | ended in an end-of-file or |
beginning-of-file condition '0' otherwise.
|
V4R2
|
%EQUAL
|
{file name}
|
'1' if the most recent SETLL (for a particular file, if specified) or
LOOKUP operation found an exact match '0' otherwise.
|
V4R2
|
%ERROR
|
'1' if the most recent operation code with extender 'E' specified
resulted in an error '0' otherwise.
|
|
V3R7
|
%FLOAT
|
numeric expression
|
Value in float format.
|
V4R2
|
%FOUND
|
{file name}
|
'1' if the most recent relevant operation (for a particular file, if
specified) found a record (CHAIN, DELETE, SETGT, SETLL), an element (LOOKUP),
or a match (CHECK, CHECKR, SCAN) '0' otherwise.
|
V4R4
|
%GRAPHIC
|
Any character value
|
Converts character data to double-byte character set value.
|
V5R1
|
%HOURS
|
hours
|
A duration value that can be used in an expression to add a number of
hours to a time value.
|
V3R7
|
%INT
|
numeric expression
|
Value in integer format
|
V3R7
|
%INTH
|
numeric expression
|
Half-adjusted value in integer format
|
V3R7
|
%LEN
|
any expression
|
|
V5R1
|
%LOOKUPxx
|
search-data : array { : start-index { : elements to search }}
|
An array index of the element in the array where the search-data is
located.
|
V5R1
|
%TLOOKUPxx
|
search-data : searched-table { : alternate-table }
|
*ON if the search is successful, otherwise *OFF. (NOTE: The indexes of
the searched-table and alternate-table are set to the index of the
search-data if *ON is returned.)
|
V5R1
|
%MINUTES
|
minutes
|
A duration value that can be used in an expression to add a number of minutes
to a time value.
|
V5R1
|
%MONTHS
|
months
|
A duration value that can be used in an expression to add a number of
months to a date value.
|
V5R1
|
%MSECONDS
|
milliseconds
|
A duration value that can be used in an expression to add a number of
milliseconds to a time value.
|
V3R7
|
%NULLIND
|
null-capable field name
|
Value in indicator format representing the null indicator setting for
the null-capable field.
|
V5R1
|
%OCCUR
|
data-structure
|
The current occurrence of the data structure, or sets the current
occurrence of the data structure
|
V4R2
|
%OPEN
|
file name
|
'1' if the specified file is open '0' if the specified file is closed.
Consider this built-in to be an 'Is this file open?" operation.
|
%PADDR
|
procedure name
|
Address of procedure
|
|
V3R2
V3R6 |
%PARMS
|
Number of parameters passed to procedure
|
|
V5R1
|
%REALLOC
|
pointer : new-size
|
Pointer to the allocated storage.
|
V4R4
|
%REM
|
Numerator : Denominator
|
Performs integer division and returns the remainder from the division
operation.
|
V4R2
|
%REPLACE
|
replacement string: source string {:start position {:source length to
replace}}
|
String produced by inserting replacement string into source string,
starting at start position and replacing the specified number of characters.
|
V3R7
|
%SCAN
|
search argument : string to be searched {:start position}
|
First position of search argument in string or zero, if not found.
|
V5R1
|
%SECONDS
|
seconds
|
A duration value that can be used in an expression to add a number of
seconds to a time value.
|
V5R1
|
%SHTDN
|
*ON if the job is being shut down (e.g., when the PWRDWNSYS command is
issued) otherwise *OFF is returned.
|
|
%SIZE
|
variable, data structure, array, or literal {: *ALL}
|
Number of bytes used by variable or literal. *ALL returns the number
of bytes used by all the elements of the array, or all the occurrences of the
data structure.
|
|
V5R1
|
%SQRT
|
expression or value
|
The square root of the expression or value.
|
V4R2
|
%STATUS
|
{file name}
|
0 if no program or file error occurred since the most recent operation
code with extender 'E' specified most recent value set for any program or
file status, if an error occurred if a file is specified, the value returned
is the most recent status for that file.
|
V3R7
|
%STR
|
pointer{:maximum length}
|
Characters addressed by pointer argument up to but not including the
first x'00'.
|
V5R1
|
%SUBDT
|
date : duration-code
|
The extracted component of the date value. (The functional equivalent
of the EXTRCT operation code.)
|
%SUBST
|
string:start{:length}
|
Substring value. If length is not specified, the substring begins with
start and continues through the end of the string.
|
|
V5R1
|
%THIS
|
Used for Java integration. Returns an Object reference.
|
|
V5R1
|
%TIME
|
{ value { : time-format-code }
|
A time data-type value after converting the "value" to the
specified time format. If no value is specified, the current system time is
returned.
|
V5R1
|
%TIMESTAMP
|
{value { : *ISO | *ISO0 }
|
A timestamp data-type value with or without separators.
|
%TRIM
|
string
|
String with left and right blanks trimmed (removed)
|
|
%TRIML
|
string
|
String with left blanks trimmed
|
|
%TRIMR
|
string
|
String with right blanks trimmed
|
|
V4R4
|
%UCS2
|
Any character value
|
Returns a varying length value.
|
V4R2
|
%UNS
|
numeric expression
|
Value in unsigned format
|
V4R2
|
%UNSH
|
numeric expression
|
Half-adjusted value in unsigned format
|
V5R1
|
%XLATE
|
from-table : to-table : string-to-convert { : starting-position
}
|
The converted string is returned.
|
V4R4
|
%XFOOT
|
Array name
|
Cross foots (totals) all the elements in an array.
|
No comments