Activation Groups and ILE Concepts

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 15

1.

Advantages of ILE:

 RPG IV is more readable


 Allows for greater application modularity with static binding which means there are
fewer external calls.
 Enhances programmer productivity by allowing greater code re use.
 Enhances mixed language support by allowing the binding ILE languages into a
single program. Builds a foundation for the future by moving closer to object oriented
design, modular programming and code reuse.

Activation Groups:

Activation group is the environment where the ILE jobs are executed. You can specify
the activation group in CRTPGM or CRTSRVPGM command.
There are three possible values for Activation Group parameter.
1.Name, 2.New and 3.Caller.
You cannot create the activation group by command CRTACTGRP.
For the program activation group is : Name, Default activation group(*NO)if to use ILE
goodies, or Yes for OPM model.
For service program, DFTACTGRP(*Caller), can be *NEW or by name.

Activation group is a substructure of job and the substructure contains the resources
required for successful execution of program.

How ILE activation groups are created and deleted

Currently, ILE activation groups can only be created implicitly. When you create an ILE
program, you specify the activation group in which the program will run on the
ACTGRP parameter. If, when the program is called, the activation group does not yet
exist, it will be created automatically by the system. (Remember, the default
activation group is created when the job is started.) It is important to keep in mind
that an activation group is part of a job; it cannot be accessed by other jobs.

ILE activation groups have many benefits over the default activation group:
Protection of shared resources from other programs and applications.
Resources such as shared open data paths for files, can be shared among all
programs in activation group, while being protected from other programs running in
the same job. Scoping (Restricting) of file overrides and commitment control scope.
Easy to cleanup a group of programs, You can clean up active programs and open files
with in an activation group using the RCLACTGRP command. Other active programs
running in the same job will not be affected.

SUBPROCEDURES & PROTOTYPES:

A subprocedure is a procedure specified after the main section. It can only be called
using a bound call.
Subprocedure do not use the RPG cycle while running. All subprocedures have a
corresponding PROTOTYPE in the D-spec which ensures proper procedure or program
call with correct parameters. Subprocedure without a main procedure is called a
NOMAIN module.
You can pass parameters to a subprocedure. Names defined in the subprocedure are
not visible outside the subprocedure.
msreddy Page 1
You can call subprocedure recursively.

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.)
CALLP is the best call to use because it best captures the ideas of encapsulation,
inheritance and binding. That is, CALLP is a more natural opcode for use with modern
programs. Like EXSR, a CALLP executes some functional code that is intended to be
executed more than once. But where the code in a subroutine is all global, the code in
a procedure is private which means that procedures are much like the opcodes that
we use. We expect them to work certain ways, knowing what to pass in, and what
should be expected in return with almost no regard for the code being executed under
the covers. Though CALLP should be the main CALL, I think there may still be cases for
using CALLB. It's shop-dependent & standards-dependent.

Difference between Procedure and Subroutine.

A procedure is encapsulated, where a subroutine is not.


That is, a procedure can see variables that it defines, but not variables that the main
program defines. This makes it a lot easier to determine what a procedure is actually
doing and where it's getting it's return value(s).
This makes a procedure "stand alone", and can be used in other programs with little
modification (modification required for any File I/O may be required)
It can be extremely difficult to copy a subroutine to another program, as you have to
determine all the variables the subroutine uses, and what these are supposed to be
set for, etc...

From a CL, you can call the Windows standard calculator program.
PGM
STRPCO PCTA(*YES)
STRPCCMD PCCMD('C:WINNTSYSTEM32CALC.EXE')
ENDPGM

You can call any PC .EXE object as long as you know the path! The STRPCO command
is part of Client Access, which most iSeries shops have. (I'm not sure if my tip will work
without Client Access.)

Commitment Control:
Commitment control is used to process file operations as a group.
Commitment control is to save set of transactions done on a file.

Can we use commitment control for non-join L.F?


Ans) No

QL40072 What is journaling and commitment control?


AL40072 Journaling is a function which records the changes in a file in a journal.
These record images are used to recover the changes in the file when
system ends abnormally. Commitment control is a function that allows

msreddy Page 2
you to define and process a no of changes to database files as a single
unit (transaction).

QS30073 What is the purpose of STRCMTCTL command?


AS30073 Starts commitment control for files that are being journal led.

QS40074 What are all the system objects required for journaling?
AS40074 Journal receiver, journal and PFs to be journal led.
QL40199 How do you use commitment control in RPG program ?
AL40199 Using COMIT operation.
Makes all changes to the files that have been specified in output
operation since the previous COMIT or the beginning of operations under
commitment control(if there has been no previous COMIT or ROLBK
operation).

Steps involved in implementing commitment control.

Step1
First create the journal receiver:

CRTJRNRCV JRNRCV(MYJRNRCLIB/MYJRNRCV)

Step2
Next, create the journal specifying the journal receiver created above:
CRTJRN JRN(MYLIB/MYJRN) JRNRCV(MYJRNRCLIB/MYJRNRCV)

Step3
And, finally, start journaling on the physical file:

STRJRNPF FILE(*LIBL/CCTESTPF) JRN(MYLIB/MYJRN)


PGM

Precautions to be taken while doing the above steps

CRTJRNRCV
1. Be sure to:
o Place the journal receiver in a library that is saved regularly.
o Choose a journal receiver name that can be used to create a naming
convention for future journal receivers, such as RCV0001. You can use
the *GEN option to continue the naming convention when you change
journal receivers. This type of naming convention is also useful if you
choose to let the system manage the changing of your journal receivers
CRTJRN
1. Be sure to:
o Specify the name of the journal receiver that you created in the first step.
o Use the Manage receiver (MNGRCV) parameter to have the system
change the journal receiver and attach a new one when the attached
receiver becomes too large. If you choose this option, you do not need to
use the CRTJRN command to detach receivers and create and attach new
receivers manually.
o Specify DLTRCV(*NO) only if you have overriding reasons to do so (for
example, if you need to save these journal receivers for recovery

msreddy Page 3
reasons). If you specify DLTRCV(*YES), these receivers might be deleted
before you have a chance to save them.
You can use two values on the RCVSIZOPT parameter of the CRTJRN command
(*RMVINTENT and *MINFIXLEN) to optimize your storage availability and system
performance. See the AS/400 Programming: Performance Tools Guide for more
information.

STRJRNPF
1. Start journaling the source table using the Start Journal Physical File (STRJRNPF)
command, as in the following example:
2. STRJRNPF FILE(library/file)
3. JRN(JRNLIB/DJRN1)
4. OMTJRNE(*OPNCLO)
5. IMAGES(*BOTH)
6.
Specify the name of the journal that you created in step 2. The Capture program
requires a value of *BOTH for the IMAGES parameter.
The data integrity can be maintained using commitment control

Step4 (Last step) - (Starting commitment control)

STRCMTCTL LCKLVL(*CHG)

CALL PGM(*LIBL/CCTEST2)
COMMIT
CALL PGM(*LIBL/CCTEST2)
ROLLBACK
ENDCMTCTL
RETURN
ENDPGM

Points of concern while implementing commitment control in Bastion


1. If any ILE or RPG program is performing any file operation such as Update, add
or delete, then Fspec has to be continued for the particular file to incorporate
KCOMIT.
2. Study has to be done if to COMIT the changes individually after every file
operation or collectively after processing all records.
3. Study has to be done if to call the program STRCMTCTL as an IPL or invoke the
program that implements commitment control before a particular maintenance
program is called.
4. A decision has to be made if to journal the files in all environments or to journal
only the files in development box. If we journal the files only in development
box, then the changed programs may not produce consistent results during
testing.
5. If a decision has been made to journal all the files then space might be a
constraint
6. Till the completion of bastion code consolidation, JHL environment and BASTION
objects must be attached to different journals.

Brief notes on commitment control


Commitment control lets you define and process a number of changes to database
files in a single unit (transaction). Commitment control can ensure that complex
application transactions are logically synchronized, even if the job or system ends.

msreddy Page 4
Two-phase commitment control ensures that committable resources, such as
database files on multiple systems, remain synchronized.

Transactions
A transaction is a group of changes that appear as a single change, such as the
transfer of funds from a savings account to a checking account. Transactions can be
classified as follows:
• Inquiries in which no file changes occur.
• Simple transactions in which one file is changed each time you press the Enter
key.
• Complex transactions in which two or more files are changed each time you
press the Enter key.
• Complex transactions in which one or more files are changed each time you
press the Enter key. These changes represent only part of a logical group of
transactions.
Revisions made to files during transaction processing are journalled when using
commitment control.
If the system or job ends abnormally, journaling alone can ensure that, at most, only
the very last record change is lost. However, if the system or job ends abnormally
during a complex transaction, the files reflect an incomplete logical transaction. For
example, the job may have updated a record in file A, but before it updated a
corresponding record in file B, the job ended abnormally. In this case, the logical
transaction consisted of two updates, but only one update completed before the job
ended abnormally.
Benefits of using commitment control
Recovering a complex application requires detailed application knowledge. Programs
cannot be restarted. For example, record changes may have to be made with an
application program or data file utility to reverse the files to just before the last
complex transaction began. This task becomes more complex if multiple users were
accessing the files at the same time.
Commitment control helps solve these problems. Commitment control locks records
from other users during a complex transaction. This ensures that other users do not
use the records until the transaction is complete. At the end of the transaction, the
program issues the commit operation, freeing the records. However, should the
system end abnormally before performing the commit operation, all record changes
for that job since the last time a commit operation occurred are rolled back. Any
affected records that are still locked are then unlocked. In other words, database
changes roll back to a clean transaction boundary.

Difference between *Module and Service Program?

Service Programs:

A service program is a collection of runnable procedures and available data items


easily and directly accessible by other ILE programs or service programs. In many
respects, a service program is similar to a subroutine library or procedure library.

Hi guys,
there is one module which included in one service program has been updated. so do I
need to update/re-compile all those programs which use the service program?
1. What about if the service program is standing alone?
2. What about if the service program is included in one binding directory?

msreddy Page 5
You won't need to rebind if the procedures that are imported have the same
parameters and the procedures are in the same order. The signature should then be
the same.

The signature can be thought of like a ‘format-level identifier’ of a file. When a file’s
format-level ID changes, you have to recompile programs that use the file or be
prepared for a “format level check” error. The format of the file has changed in a way
that makes it incompatible with previous versions.

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.

339. How do u compile RPGLE program


Either thru 15 or crtrpgmod

340. Is module executable


No You need to create an RPG prog to run the module

341. What is procedure?


A procedure is the set of self-contained high level language statements that can
perform a particular task and then returns to a caller

342. What is service program?


A Service Program is a collection of runnable procedures and available data items
easily accessible by other ILE programs. In many respects it is similar to a subroutine
library and procedure library.
A service program differs from a program in two ways:
It does not contain a program entry procedure. This means that you cannot call a
service program using the CALL operation. A service program is bound into a program
or other service programs using binding by reference

Binding Directory:

A binding directory contains the names of modules and service programs that you
may need when creating an ILE program or service program. Modules or service
programs listed in a binding directory are used only if they provide an export that can
satisfy any currently unresolved import requests. A binding directory is a system
object that is identified to the system by the symbol *BNDDIR.

When a program or service program is created, instead of specifying the module(s)


and/or service program(s) that contain the necessary procedures, you can indicate a
binding directory.

CPF9999 will also catch other messages that are not prefixed with CPF. MCH messages might occur and
CPF9999 will catch those whereas CPF0000 will not.

The 0 character is treated as a wild card for the purposes of error monitoring, so CPF0000 says to
monitor for any error.

msreddy Page 6
First, you can monitor for a specific message, e.g.:
MONMSG MSGID(CPF9801)

Or you can monitor for a list of specific messages, e.g.:


MONMSG MSGID(CPF9801 CPF9802 CPF9810)

Next, you can monitor for a whole group of related messages, using a
"generic" designation such as:
MONMSG MSGID(CPF9800)
-- this will trap any message that begins with CPF98xx.

Next, you can monitor for a truly generic message, such as:
MONMSG MSGID(CPF0000)
-- this will trap any message that begins with CPFxxxx.
-- typically this is used in a "global message monitor" statement at the start of the program, e.g.:
MONMSG MSGID(CPF0000 MCH0000) EXEC(GOTO ERROR)

For these message IDs to be considered a "generic pattern" it must end in "00" or "0000".

How can i find a job whether it is a batch or interactive?

The Retrieve Job Attributes (RTVJOBA) command is used in a CL program and TYPE attribute will tell Batch or
Interactive. ‘0’ indicates that the job is running as a batch job, and ‘1’ indicates an interactive job.

Trigger Programs:

Batch processing and debug:

Exit programs:

Working knowledge of referential integrity, when to use and how to code?

Must have experience with iSeries Security and how to use to ensure system security?

INFDS, *PSDS??

PSDS - A program status data structure (PSDS) can be defined to make program exception/error
information available to an RPG IV program. The PSDS must be defined in the main source
section; therefore, there is only one PSDS per module. A data structure is defined as a PSDS by an S in
position 23 of the data structure statement. A PSDS contains predefined subfields that provide you with
information about the program exception/error that occurred.

INFDS – A file information data structure (INFDS) can be defined for each file to make file exception/error
and file feedback information available to the program. The file information data structure, which must be
unique for each file, must be defined in the main source section. The same INFDS is used by all procedures
using the files.

23. how to handle file exception and program exception.


File exception by INFDS (INFSR)
Program exception PSSR

24. what is *PSSR.


To handle program exception errors
25. What is *INFSR

msreddy Page 7
To handle File exception errors.

4. Debug a program in BATCH.

1. Hold the JobQ (Eg: QBATCH)


2. Submit the job.
3. Hold the job – Take option 3 against the job in “Work with submitted jobs”.
4. Release the JobQ
5. Take option 5 against the job to be debugged and make a note of the “Job Name”, “User”, and
“Job Number”.
6. Execute the command STRSRVJOB – Start Service Job. Input the Job Name, User, Job
Number.
7. STRDBG – Start Debug.
8. Release the job that is on hold – Take option 6 against the job on hold to release.
9. Once the job is released, a screen is displayed which tells u to add the break points. Take F10
and execute the command ADDBKP.
10. Then it is the normal way of debug using STRDBG.

Data Queue (DataQ)

Create the data queue by using the Create Data Queue (CRTDTAQ) command.

Clear Data Queue (QCLRDTAQ) clears all entries from a data queue.

Receive Data Queue (QRCVDTAQ) receives data from the specified data queue.

Retrieve Data Queue Description (QMHQRDQD) retrieves information about a data queue.

Retrieve Data Queue Message (QMHRDQM) retrieves an entry from a data queue without
removing the entry.

Send to a Data Queue (QSNDDTAQ) sends data to the specified data queue.

The purpose of SFLNXTCHG =

Which is a subfile record format keyword. If you perform read on the subfile, the internal indicator
MDT (modified data tag) is automatically set off by the system. If you again perform read on the
same records, records won't be read. Because internal indicator MDT would be off. Hence you
should be explicitly set on the MDT by SFLNXTCHG keyword.

FTP = STRTCPFTP (TCP File Transfer Program)


In CL program use STRTCPFTP with parameters Like

1. STRTCPFTP RMTSYS(System name)


2. STRTCPFTP RMTSYS(*INTNETADR) INTNETADR('128.16.100.10')
TPOUT(TSTLIB/TSTFTPOUT) TBLFTPIN(TSTLIB/TSTFTPIN)

msreddy Page 8
PSDS
A program status data structure (PSDS) can be defined to make program exception/error information
available to an RPG IV program. The PSDS must be defined in the main source section; therefore,
there is only one PSDS per module.

A data structure is defined as a PSDS by an S in position 23 of the data structure statement. A PSDS
contains predefined subfields that provide you with information about the program exception/error that
occurred. The location of the subfields in the PSDS is defined by special keywords or by predefined
From and To positions. In order to access the subfields, you assign a name to each subfield. The
keywords must be specified, left-adjusted in positions 26 through 39.

Information from the PSDS is also provided in a formatted dump. However, a formatted dump might
not contain information for fields in the PSDS if the PSDS is not coded, or the length of the PSDS does
not include those fields. For example, if the PSDS is only 275 bytes long, the time and date or
program running will appear as N/A. in the dump, since this information starts at byte 276.
Link to what IBM says

o Program Status Data Structure


o D SDS
o D PROC_NAME *PROC Procedure name
o D PGM_STATUS *STATUS Status code
o D PRV_STATUS 16 20S 0 Previous status
o D LINE_NUM 21 28 Src list line nu
o D ROUTINE *ROUTINE Routine name
o D PARMS *PARMS Num passed parms
o D EXCP_TYPE 40 42 Exception type
o D EXCP_NUM 43 46 Exception number
o D PGM_LIB 81 90 Program library
o D EXCP_DATA 91 170 Exception data
o D EXCP_ID 171 174 Exception Id
o D DATE 191 198 Date (DATE fmt)
o D YEAR 199 200S 0 Year (YEAR fmt)
o D LAST_FILE 201 208 Last file used
o D FILE_INFO 209 243 File error info
o D JOB_NAME 244 253 Job name
o D USER 254 263 User name
o D JOB_NUM 264 269S 0 Job number
o D JOB_DATE 270 275S 0 Date (UDATE fmt)
o D RUN_DATE 276 281S 0 Run date (UDATE)
o D RUN_TIME 282 287S 0 Run time (UDATE)
o D CRT_DATE 288 293 Create date
o D CRT_TIME 294 299 Create time
o D CPL_LEVEL 300 303 Compiler level
o D SRC_FILE 304 313 Source file
o D SRC_LIB 314 323 Source file lib
o D SRC_MBR 324 333 Source file mbr
o D PROC_PGM 334 343 Pgm Proc is in
o D PROC_MOD 344 353 Mod Proc is in
o D CURR_USER 358 367 Mod Proc is in

o Status codes *STATUS


o Normal Codes
o

msreddy Page 9
o Code Condition
o 00000 No exception/error occurred
o 00001 Called program returned with the LR indicator on.
o
o Exception/Error Codes
o
o Code Condition
o 00100 Value out of range for string operation
o 00101 Negative square root
o 00102 Divide by zero
o 00103 An intermediate result is not large enough to
o contain the result.
o 00104 Float underflow. An intermediate value is too
o small to be contained in the intermediate
o result field
o 00112 Invalid Date, Time or Timestamp value.
o 00113 Date overflow or underflow. (For example, when
o the result of a Date calculation
o results in a number greater than HIVAL or less
o than LOVAL.)
o 00114 Date mapping errors, where a Date is mapped from a
4
o character year to a 2 character year and the date
range
o is not 1940-2039.
o 00120 Table or array out of sequence.
o 00121 Array index not valid
o 00122 OCCUR outside of range
o 00123 Reset attempted during initialization step of
program
o 00202 Called program or procedure failed; halt indicator
o (H1 through H9) not on
o 00211 Error calling program or procedure
o 00222 Pointer or parameter error
o 00231 Called program or procedure returned with halt
o indicator on
o 00232 Halt indicator on in this program
o 00233 Halt indicator on when RETURN operation run
o 00299 RPG IV formatted dump failed
o 00333 Error on DSPLY operation
o 00401 Data area specified on IN/OUT not found
o 00402 PDA not valid for non-prestart job
o 00411 Data area type or length does not match
o 00412 Data area not locked for output
o 00413 Error on IN/OUT operation
o 00414 User not authorized to use data area
o 00415 User not authorized to change data area
o 00421 Error on UNLOCK operation
o 00425 Length requested for storage allocation is out of
range
o 00426 Error encountered during storage management
operation
o 00431 Data area previously locked by another program
o 00432 Data area locked by program in the same process
o 00450 Character field not entirely enclosed by shift-out
o and shift-in characters
o 00501 Failure to retrieve sort sequence.
o 00502 Failure to convert sort sequence.
o 00802 Commitment control not active.
o 00803 Rollback operation failed.

msreddy Page 10
o 00804 Error occurred on COMMIT operation
o 00805 Error occurred on ROLBK operation
o 00907 Decimal data error (digit or sign not valid)
o 00970 The level number of the compiler used to generate
o the program does not agree with the level number
o of the RPG IV run-time subroutines
o 09998 Internal failure in ILE RPG/400 compiler or in
o run-time subroutines
o 09999 Program exception in system routine.

INFDS

o File Information Data Structure

A file information data structure (INFDS) can be defined for each file to make file
exception/error and file feedback information available to the program. The file
information data structure, which must be unique for each file, must be defined in the
main source section. The same INFDS is used by all procedures using the files.
Link to what IBM says

The INFDS contains the following feedback information:

 File Feedback (length is 80)


 Open Feedback (length is 160)
 Input/Output Feedback (length is 126)
 Device Specific Feedback (length is variable)
 Get Attributes Feedback (length is variable)

* Standard RPG feedback area 1-80


DINFDS ds
D File *FILE * File name
D OpenInd 9 9 * File open?
D EOFInd 10 10 * File at
eof?
D FileStatus *STATUS * Status
code
D OpCode *OPCODE * Last
opcode
D Routinr *ROUTINE * RPG
Routine
D ListNum 30 37 * Listing
line

msreddy Page 11
D SpclStat 38 42S 0 * SPECIAL
status
D RecordFmt *RECORD * Record
name
D MsgID 46 52 * Error
MSGID

D* the next 4 fields are available after POST


D Screen_P *SIZE * Screen
size
D NLSIn_P *INP * NLS Input?
D NLSOut_P *OUT * NLS
Output?
D NLSMode_P *MODE * NLS Mode?

* Open feedback area 81-240


* NOTE that getting data beyond column 80 is expensive
* in terms of program opens...
D ODP_TYPE 81 82 * ODP Type
D FILE_NAME 83 92 * File name
D LIBRARY 93 102 * Library name
D SPOOL_FILE 103 112 * Spool file name
D SPOOL_LIB 113 122 * Spool file lib
D SPOOL_NUM 123 124I 0 * Spool file num
D RCD_LEN 125 126I 0 * Max record len
D KEY_LEN 127 128I 0 * Max key len
D MEMBER 129 138 * Member name
D TYPE 147 148I 0 * File type
D ROWS 152 153I 0 * Num PRT/DSP
rows
D COLUMNS 154 155I 0 * Num PRT/DSP
cols
D NUM_RCDS 156 159I 0 * Num of records
D ACC_TYPE 160 161 * Access type
D DUP_KEY 162 162 * Duplicate key?
D SRC_FILE 163 163 * Source file?
D VOL_OFF 184 185I 0 * Vol label offs
D BLK_RCDS 186 187I 0 * Max rcds in bl
D OVERFLOW 188 189I 0 * Overflow line
D BLK_INCR 190 191I 0 * Blk increment
D FLAGS1 196 196 * Misc flags
D REQUESTER 197 206 * Requester name
D OPEN_COUNT 207 208I 0 * Open count
D BASED_MBRS 211 212I 0 * Num based mbrs
D FLAGS2 213 213 * Misc flags
D OPEN_ID 214 215 * Open identifie
D RCDFMT_LEN 216 217I 0 * Max rcd fmt le
D CCSID 218 219I 0 * Database CCSID
D FLAGS3 220 220 * Misc flags
D NUM_DEVS 227 228I 0 * Num devs defin

D* I/O feedback area 241-366


D * 241-242 not
used
D WRITE_CNT 243 246I 0 * Write count
D READ_CNT 247 250I 0 * Read count
D WRTRD_CNT 251 254I 0 * Write/read
count
D OTHER_CNT 255 258I 0 * Other I/O count

msreddy Page 12
D OPERATION 260 260 * Cuurent
operatio
D IO_RCD_FMT 261 270 * Rcd format name
D DEV_CLASS 271 272 * Device class
D IO_PGM_DEV 273 282 * Pgm device name
D IO_RCD_LEN 283 286I 0 * Rcd len of I/O

D* POST area 241-nnn


D* Display
D PGM_DEV_P 241 250 * Program device
D DEV_DSC_P 251 260 * Dev description
D USER_ID_P 261 270 * User ID
D DEV_CLASS_P 271 271 * Device class
D DEV_TYPE_P 272 277 * Device type
D REQ_DEV_P 278 278 * Requester?
D ACQ_STAT_P 279 279 * Acquire status
D INV_STAT_P 280 280 * Invite status
D DATA_AVAIL_P 281 281 * Data available
D NUM_ROWS_P 282 283I 0 * Number of rows
D NUM_COLS_P 284 285I 0 * Number of cols
D BLINK_P 286 286 * Allow blink?
D LINE_STAT_P 287 287 * Online/offline?
D DSP_LOC_P 288 288 * Display
location
D DSP_TYPE_P 289 289 * Display type
D KBD_TYPE_P 290 290 * Keyboard type
D CTL_INFO_P 342 342 * Controller info
D COLOR_DSP_P 343 343 * Color capable?
D GRID_DSP_P 344 344 * Grid line dsp?
* The following fields apply to ISDN.
D ISDN_LEN_P 385 386I 0 * Rmt number len
D ISDN_TYPE_P 387 388 * Rmt number type
D ISDN_PLAN_P 389 390 * Rmt number plan
D ISDN_NUM_P 391 430 * Rmt number
D ISDN_SLEN_P 435 436I 0 * Rmt sub-address
D ISDN_STYPE_P 437 438 * Rmt sub-address
D ISDN_SNUM_P 439 478 * Rmt sub-address
D ISDN_CON_P 480 480 * Connection
D ISDN_RLEN_P 481 482I 0 * Rmt address len
D ISDN_RNUM_P 483 514 * Rmt address
D ISDN_ELEN_P 519 520 * Extension len
D ISDN_ETYPE_P 521 521 * Extension type
D ISDN_ENUM_P 522 561 * Extension num
D ISDN_XTYPE_P 566 566 * X.25 call type
D* ICF
D PGM_DEV_P 241 250 * Program device
D DEV_DSC_P 251 260 * Dev description
D USER_ID_P 261 270 * User ID
D DEV_CLASS_P 271 271 * Device class
D DEV_TYPE_P 272 272 * Device type
D REQ_DEV_P 278 278 * Requester?
D ACQ_STAT_P 279 279 * Acquire status
D INV_STAT_P 280 280 * Invite status
D DATA_AVAIL_P 281 281 * Data available
D SES_STAT_P 291 291 * Session status
D SYNC_LVL_P 292 292 * Synch level
D CONV_TYPE_P 293 293 * Conversation
typ
D RMT_LOC_P 294 301 * Remote location
D LCL_LU_P 302 309 * Local LU name

msreddy Page 13
D LCL_NETID_P 310 317 * Local net ID
D RMT_LU_P 318 325 * Remote LU
D RMT_NETID_P 326 333 * Remote net ID
D APPC_MODE_P 334 341 * APPC Mode
D LU6_STATE_P 345 345 * LU6 conv state
D LU6_COR_P 346 353 * LU6 conv
* correlator
* The following fields apply to ISDN.
D ISDN_LEN 385 386I 0 * Rmt number len
D ISDN_TYPE 387 388 * Rmt number type
D ISDN_PLAN 389 390 * Rmt number plan
D ISDN_NUM 391 430 * Rmt number
D ISDN_SLEN 435 436I 0 * sub-addr len
D ISDN_STYPE 437 438 * sub-addr type
D ISDN_SNUM 439 478 * Rmt sub-address
D ISDN_CON 480 480 * Connection
D ISDN_RLEN 481 482I 0 * Rmt address len
D ISDN_RNUM 483 514 * Rmt address
D ISDN_ELEN 519 520 * Extension len
D ISDN_ETYPE 521 521 * Extension type
D ISDN_ENUM 522 561 * Extension num
D ISDN_XTYPE 566 566 * X.25 call type

* The following information available only when program


started
* result of a received program start req. (P_ stands for
protected)
D TRAN_PGM 567 630 * Trans pgm name
D P_LUWIDLN 631 631 * LUWID fld len
D P_LUNAMELN 632 632 * LU-NAME len
D P_LUNAME 633 649 * LU-NAME
D P_LUWIDIN 650 655 * LUWID instance
D P_LUWIDSEQ 656 657I 0 * LUWID seq num

* Below info is available only when a protected conversation


* is started on a remote system. (U_ stands for unprotected)
D U_LUWIDLN 658 658 * LUWID fld len
D U_LUNAMELN 659 659 * LU-NAME len
D U_LUNAME 660 676 * LU-NAME
D U_LUWIDIN 677 682 * LUWID instance
D U_LUWIDSEQ 683 684I 0 * LUWID seq num

D* Device independent area 367-nnn


D* NOTE that this area is shared with the POST feedback area
above!
D* Printer
D CUR_LINE 367 368I 0 * Current line
num
D CUR_PAGE 369 372I 0 * Current page
cnt
D PRT_MAJOR 401 402 * Major ret code
D PRT_MINOR 403 404 * Minor ret code

D* Disk
D FDBK_SIZE 367 370I 0 * Size of DB fdbk
D JOIN_BITS 371 374I 0 * JFILE bits
D LOCK_RCDS 377 378I 0 * Nbr locked rcds
D POS_BITS 385 385 * File pos bits
D DLT_BITS 384 384 * Rcd deleted
bits

msreddy Page 14
D NUM_KEYS 387 388I 0 * Num keys (bin)
D KEY_LEN 393 394I 0 * Key length
D MBR_NUM 395 396I 0 * Member number
D DB_RRN 397 400I 0 * Relative-rcd-
num
D KEY 401 2400 * Key value (max
D* * size 2000)

D* ICF
D ICF_AID 369 369 * AID byte
D ICF_LEN 372 375I 0 * Actual data len
D ICF_MAJOR 401 402 * Major ret code
D ICF_MINOR 403 404 * Minor ret code
D SNA_SENSE 405 412 * SNA sense rc
D SAFE_IND 413 413 * Safe indicator
D RQSWRT 415 415 * Request write
D RMT_FMT 416 425 * Remote rcd fmt
D ICF_MODE 430 437 * Mode name

D* Display
D DSP_FLAG1 367 368 * Display flags
D DSP_AID 369 369 * AID byte
D CURSOR 370 371 * Cursor location
D DATA_LEN 372 375I 0 * Actual data len
D SF_RRN 376 377I 0 * Subfile rrn
D MIN_RRN 378 379I 0 * Subfile min rrn
D NUM_RCDS 380 381I 0 * Subfile num
rcds
D ACT_CURS 382 383 * Active window
D* * cursor
location
D DSP_MAJOR 401 402 * Major ret code
D DSP_MINOR 403 404 * Minor ret code

msreddy Page 15

You might also like