Cics Faq
Cics Faq
Version 1.1
Document: CA38
Issued: 21st March, 1996
Revision Date: 15th December, 1998
Previous Revision Date: 21st March, 1996
Next Review: None
Bill Matthews
IBM Systems Support Center
Roanoke
Dallas
TX, 76262
Revision Date: 15th December, 1998
Document Id: CA38 Page ii
Title: CICS for OS/2 - FAQ
Take Note!
Before using this User's Guide and the product it supports, be sure to read the general information under
"Notices".
This edition applies to Version 1.1 of CICS for OS/2 - Frequently Asked Questions and to all subsequent releases
and modifications until otherwise indicated in new editions.
A form for reader's comments is provided at the back of this publication. If the form has been removed, address
your comments to:
When you send information to IBM, you grant IBM a non-exclusive right to use or distribute the information in any
way it believes appropriate without incurring any obligation to you. You may continue to use the information that
you supply.
Contents
1.0 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
4.0 Btrieve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.1 Maximum Btrieve filesize. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Question . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Answer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.2 Use of Btrieve 6.X in batch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Question . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Answer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
7.0 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
7.1 What is an Abend AZI6 from SRVTIME???? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Question . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Answer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
8.0 Gateway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
8.1 CICS OS/2 Gateway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Question . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Revision Date: 15th December, 1998
Document Id: CA38 Page iv
Title: CICS for OS/2 - FAQ
Answer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Answer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
11.5 Security Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
11.6 Additional background on Security - recommended reading . . . . . . . . . . . . . . . . . . . . . . . . . . 42
CICS OS/2 TERMINAL CONTROL TABLE (SYSTEM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
NON-CICS OS/2 DEFINITIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
APPC REMOTELY ATTACHABLE TRANSACTION PROGRAM (TP) PROFILE . . . . . . . . . . . . . 44
HOST CICS DEFINITION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
12.0 Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
12.1 CICS OS/2 and C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Question . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
13.0 PEM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
13.1 PEM (Password Expiration Management) and CICS/OS2 V3.0 . . . . . . . . . . . . . . . . . . . . . . . . 46
Question . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Answer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Notices.
The following paragraph does not apply in any country where such provisions are inconsistent with local law.
References in this publication to IBM products, programs, or services do not imply that IBM intends to make these
available in all countries in which IBM operates.
Any reference to an IBM licensed program or other IBM product in this publication is not intended to state or
imply that only IBM's program or other product may be used. Any functionally equivalent program that does not
infringe any of the intellectual property rights may be used instead of the IBM product. Evaluation and verification
of operation in conjunction with other products, except those expressly designated by IBM, is the user's responsi-
bility.
IBM may have patents or pending patent applications covering subject matter in this document. The furnishing of
this document does not give you any license to these patents. You can send license inquiries, in writing, to the
IBM Director of Licensing, IBM Corporation, 500 Columbus Avenue, Thornwood, New York 10594, USA.
The information contained in this document has not be submitted to any formal IBM test and is distributed AS IS.
The use of the information or the implementation of any of these techniques is a customer responsibility and
depends on the customer's ability to evaluate and integrate them into the customer's operational environment. While
each item has been reviewed by IBM for accuracy in a specific situation, there is no guarantee that the same or
similar results will be obtained elsewhere. Customers attempting to adapt these techniques to their own environ-
ments do so at their own risk.
The following terms are trademarks of the International Business Machines Corporation in the United States and/or
other countries:
CICS
OS/2
MVS
CICS/ESA
System 390
IBM
Revision Date: 15th December, 1998
Document Id: CA38 Page vii
Title: CICS for OS/2 - FAQ
Summary of Changes
Date Changes
21st March 1996 Initial release as HTML files
16th December 1998 Updated and issue in Adobe Acrobat PDF format
Revision Date: 15th December, 1998
Document Id: CA38 Page viii
Title: CICS for OS/2 - FAQ
Bibliography
¹ Computer Audit Guidance Notes IBM software: MVS, CICS and SMF, Chartered Inst. of Public Finance and
Accountancy, 1991, ISBN: 0-85299-342-0
¹ CICS A Programmers Reference, P. Donofrio, McGraw-Hill, J Ranade IBM Series, 1991, ISBN: 0-07-017607-8,
Misc: 254 pages
¹ CICS Command Level Programming, A. Jatich, John Wiley and Sons, NY, ISBN: 0-471-52861-7, Misc: 2nd Ed,
1991, 602 pages, ISBN: 0-471-88533-9, Misc: 1st Ed, 1985, 360 pages
¹ DOS/VSE CICS Systems Programming, Gary A. Stotts, QED Information Sciences Inc, Wellesley, MA, 1991,
ISBN: 0-89435-379-9, Misc: 315 pages
¹ CICS Using COBOL, A.M. Suhy, Wadsworth Inc, Belmont, CA, 1991, ISBN: 0-534-12618-9, Misc: 403 pages
¹ CICS Debugging, Dump Reading and Problem Determination, P. Donofrio, McGraw-Hill, J Ranade IBM Series,
1989, ISBN: 0-07-017606-X, Misc: 176 pages
¹ A CICS Handbook, Y. Kageyama, McGraw-Hill, NY, 1989, ISBN: 0-07-033637-7, Misc: 616 pages
¹ CICS for Microcomputers, J Le Bert, McGraw-Hill, NY, 1989, ISBN: 0-07-036968-2, Misc: 362 pages
¹ CICS/VS Command Level Programming Techniques, M.H. Merchant, Prentice Hall, Englewood Cliffs, NY, 1989,
ISBN: 0-13-133869-2, Misc: 286 pages
¹ CICS - A Practical Guide to System Fine Tuning, S. Piggott, McGraw-Hill, J Ranade IBM Series, 1989, ISBN:
0-07-050054-1, Misc: 202 pages
¹ Distributed Processing in the CICS Environment: A Guide to MRO and ISC, A.J. Wipfler, McGraw-Hill, J
Ranade IBM Series, 1989, ISBN: 0-07-071136-4, Misc: 466 pages
¹ CICS Performance Monitors: Xephon User Survey, Xephon, Xephon, 1989, Misc: 117 pages
¹ CICS Performance Management, E. Emanuel, MacMillan, NY, 1988, ISBN: 0-02-949221-1, Misc: 352 pages
¹ CICS/VS Command Level Handbook, A. Kaufman, Wiley, NY, 1988, ISBN: 0-0471-81207-2
¹ CICS Programmers Guide, K. Kostohyrz, Weber Systems Inc, Chesterland, OH, 1988, ISBN: 0-938862-88-X,
Misc: 286 pages
¹ CICS, S. Piggott, MacMillan, NY, 1988, ISBN: 0-02-947901-0, Misc: 352 pages
¹ CICS: Application development and programming, A. J. Wipfler, McGraw-Hill, 1988, ISBN: 0-07-071139-9,
Misc: 414 pages
¹ CICS Performance, Xephon Consultancy Report, Xephon, 1988, Misc: 175 pages
¹ The CICS Companion: A reference guide to COBOL command level programming, T. Gildersleeve, Prentice
Hall Inc, Englewood Cliffs, NJ, 1987, ISBN: 0-13-134461-7 Misc: 238 pages
¹ How to use CICS to create on-line Applications, Methods and Solutions, B. Musteata, QED Info sciences US,
1987, ISBN: 0-89435-182-6, Misc: 525 pages
¹ Advanced CICS Design Techniques, Concepts and Guidelines, J.E. Summerville, Van Nostrand Reinhold, 1987,
ISBN: 0-442-28213-3, Misc: 259 pages
¹ Systems Design under CICS Command and VSAM, A. Varsegi, TAB Books, Blue Ridge Summit, PA, 1987, ISBN:
0-8306-2843-6, Misc: 272 pages
¹ CICS virtual storage: Online system design and implementation techniques, David Lee, Prentice Hall, ISBN:
0-13-133935-4, Misc: 397 pages, available in Italian, (CDD On-line Systems INC 1986, 0-9611810-7-9)
¹ CICS Command Level with ANS COBOL Examples, P. Lim, Van Nostrand Reinhold Co, NY, 1986 (2nd ed),
ISBN: 0-442-25814-3, Misc: 582 pages, ISBN: 0-442-25845-3 (paperback) Misc: 582 pages
¹ CICS Primer, L. Ryan, Science Research Associates Inc (SRA), 1986, ISBN: 0-574-21940-? Misc: 326 pages,
MacMillan Publishing Co, 1986, ISBN: 0-02-404941-7 Misc: 326 pages
Revision Date: 15th December, 1998
Document Id: CA38 Page x
Title: CICS for OS/2 - FAQ
¹ Customer Information Control System (CICS) Made Easy, J.J. Le Bert, McGraw-Hill, 1986, ISBN:
0-07-036972-0, Misc: 278 pages
¹ Specifying the CICS Applications Programmers Interface, I. Hayes, Oxford Computing Lab, 1985, ISBN:
0-902928-28-7, Misc: 82 pages
¹ On-Line Systems Design and Implementation Using COBOL and Command Level CICS, C. J. Kacmar, Reston
Publishing Co, 1984, ISBN: 0-8359-5231-2 Misc: 404 pages
¹ CICS Mastering Command Level Coding Using COBOL, W. Bruno and L. Bosland, Prentice Hall Inc. 1984
(re-issued in 1988?), ISBN: 0-131-34073-5, Misc: 1986 200 pages, 0-13-134040-9 1984 edition
¹ CICS in Practice, Xephon, Xephon, 1984
¹ CICS/VS Command Level Programming with COBOL Examples, D. Lee, CCD Online Systems Inc, 1983, ISBN:
0-9611810-1-X
¹ CICS/VS Command Level Reference Guide for COBOL Programmers, L. Viands, QED Information Sciences Inc,
1983, ISBN: 089435-101-X , Misc: 100 pages
¹ CICS: Designing for Performance, E. Emanuel, McGraw-Hill, ISBN: 0-07-019420-3
¹ Understanding CICS Internals, R. Lefkon, McGraw-Hill, ISBN: 0-07037040-0
¹ CICS Virtual Storage Command Level Cobol, P.A. Lim, Reinhold, ISBN: 0-442-25845-3
¹ Camelot and Avalon: A Distributed Transaction Facility, Jeff Eppinger, Lily Mummert, Alfred Spector (editors),
Morgan Kaufmann, 1991, ISBN: 1-55860-185-6, Misc: 505 pages
¹ The Benchmark Handbook for Database and Transaction Processing Systems, Jim Gray (editor), Morgan
Kaufmann, 1991 (Later edition 1993), ISBN: 1-55860-159-7, Misc: 334 pages (1991), ISBN: 1-55860-292-5,
Misc: 392 pages (1993)
¹ Transaction Processing - Concepts and Techniques, Jim Gray and Andreas Reuter, Morgan Kaufmann, 1993,
ISBN: 1-55860-190-2, Misc: 1070 pages
¹ Performance Analysis of Transaction Processing Systems, Wilbur Highleyman, Prentice Hall, 1989, ISBN:
0-13-657008-9, Misc: 424 pages
¹ Micro Focus Workbench - Developing Mainframe COBOL Applications on the PC, Alida Jatich and Phil Nowak,
John Wiley and Sons, Inc, Misc: 423 pages
¹ IMS programming techniques, Dan Kapp and Joe Leben, Van Nostrand Rheinhold, 2nd edition, ISBN:
0-442-24655-1, Misc: 338 pages
¹ IMS/VS DB/DC online programming using MFS and DL/I, David Lee, CDD Online Systems Data Processing
Series, Misc: 300 pages
¹ IMS/VS DL/I programming with COBOL examples, David Lee, CDD Online Systems Data Processing Series,
ISBN: 0-7611810-4-4
¹ Atomic Transactions, Nancy Lynch, Michael Merritt, William Weihl, Alan Fekete, Morgan Kaufmann, 1994,
ISBN: 1-55860-104-X, Misc: 500 pages
¹ IMS/VS Expert's Guide, Lockwood Lyon, Van Nostrand Reinhold, 1990, ISBN: 0-442-23977-7, Misc: 254 pages
¹ Z Guide for Beginners, Mike McMorran and Steve Powell, Blackwell Scientific Publications, 1993, ISBN:
0-632-03117-4, Misc: 247 pages
¹ Micro Focus CICS option, Developing CICS applications on the PC, Clayton L. McNally Junior, QED Pub-
lishing, 1993, ISBN: 0-89435-460-4, Misc: 292 pages
¹ Nested Transactions: An Approach to Reliable Distributed Computing, J. Eliot B. Moss, The MIT Press, 1985,
ISBN: 0-262-13200-1, Misc: 160 pages
¹ Object Transaction Specification, OMG Document TC-94-8-4, 1994
¹ Software Development with Z, J.B. Wordsworth, Addison-Wesley, 1992, ISBN: 0-201-62757-4, Misc: 334 pages
¹ Distributed Transaction Processing Reference Model, X/Open Guide, X/Open, 1991, ISBN: 1-872630-16-2, Misc:
30 pages
¹ Distributed Transaction Processing: The XA Specification, X/Open Guide, X/Open, 1991, ISBN: 1-872630-24-3,
Misc: 80 pages
Revision Date: 15th December, 1998
Document Id: CA38 Page 1 of 47
Title: CICS for OS/2 - FAQ
1.0 Introduction
The supplied document provides details extracted from various FAQ (Frequently Asked Questions) databases that
exist within the CICS for OS/2 technical support community.
Revision Date: 15th December, 1998
Document Id: CA38 Page 2 of 47
Title: CICS for OS/2 - FAQ
2.1 Milestones
PUCICS Announced April 28, 1968
CICS (OS) Program Product Available June 30, 1969
CICS/DOS (Entry & Standard) Announce June 1970
Virtual Storage for S/370 Announce August 1972
CICS/VS (DOS/VS and OS/VS) Announce February 1973
DFH = Destined for Hursley August 1974
CICS/DOS/VS & CICS/OS/VS V1.1.1 Ships May 1975
CICS/DOS/VS 1.2 Announce & Ship February 1976
CICS/OS/VS 1.2 Announce & Ship (VS1) May 1976
CICS/OS/VS 1.2 Announce & Ship (VS2) August 1976
CICS/VS 1.4 Announce March 31, 1978
CICS/VS 1.5 Announce October 2, 1979
CICS/OS/VS 1.5 Ships November 1980
CICS/OS/VS 1.6 Announce July 1982
CICS/DOS/VS 1.6 Announc December 1982
CICS/OS/VS 1.6.1 Announce March 1983
CICS/OS/VS 1.7 Announce July 1985
CICS/CMS Announce October 1985
CICS/DOS/VS 1.7 Announc October 1986
CICS/MVS V2.1 Announce February 17, 1987
CICS/VM V1 & V2 Announce October 20 1987
CICS OS/2 V1 Announce October 25, 1988
CICS/MVS V2.1.1 Announce & Ship (28th) June 20, 1989
CICS/ESA V3.1 Announce June 20, 1989
CICS OS/2 V1.1 August 15, 1989
CICS OS/2 V1.2 Announce November 14, 1989
CICS OS/2 V1.2 Available March 3, 1990
CICS/ESA V3.2 Announce September 4, 1990
CICS/VSE V2.1 Announce September 4, 1990
CICS/MVS V2.1.2 Announce February 1991
CICS/ESA V3.2.1 March 22, 1991
CICS/400 Announce February 18, 1992
CICS/ESA V3.3 Announce March 3, 1992
CICS/ESA V3.3 Available (Provided Bi-directional DPL support) March 27, 1992
CICS/VSE V2.2 Announce June 23, 1992
CICS OS/2 V2 Statement of Direction September 15, 1992
CICS/6000 Announce September 22, 1992
CICS for OS/2 V2 Beta start February 5, 1993
CICS/VSE V2.2 Ship March 12, 1992
CICS for OS/2 V2 Announce March 30, 1993
IBM MQSeries Announcements March 30, 1993
CICS on Windows VT V2 Announce June 8, 1993
CICS for OS/2 V2 Available October 8, 1993
CICS/ESA V4.1 Announce February 1, 1994
CICS Clients Announcements January 26, 1995
CICS/6000 V1R2 January 26, 1995
CICS for OS/2 V2.1 January 26, 1995
Transaction Server for OS/2 Warp V4.0 March 12, 1996
Revision Date: 15th December, 1998
Document Id: CA38 Page 3 of 47
Title: CICS for OS/2 - FAQ
.
Revision Date: 15th December, 1998
Document Id: CA38 Page 4 of 47
Title: CICS for OS/2 - FAQ
Reads a data record out of a DL/I Database and sends it to CICS for OS/2. This is repeated for each available data
record in the DL/I database. The data records themselves are of varying length (between 50 and 200 bytes) and the
number of data records to be sent is also variable.
Receives a data record from CICS for MVS/ESA, converts the data from EBCDIC to ASCII and writes the data to
TS Queues. This is repeated for each data record sent from the host transaction. Once all of the data has been
received from the host CICS, it is read from the TS Queues and written to an ASCII file. The intermediate step
involving the TS Queues is only done for data recovery/syncpointing purposes...
The application logic works fine, but it runs rather slowly, and I want to improve the performance. From some
tests I have done, I find that the data transfer rate works out to approximately 750 bytes/sec. Since some of the
data to be transferred has a volume of approximately 30 MB, at the current rate, this transaction would be running
for about 12 hours. Just for comparison, a normal 3270 file transfer for that quantity of data takes approximately
half an hour!
I am not sure why the performance is so poor...whether it is due mainly to the DL/I, the many SEND and
RECEIVE operations (1 per data record, and where the larger transfers can have up to approximately 250,000
records), or the large number of WRITEQ TS (again, 1 per data record sent).
My CICS for OS/2 TCS definition includes: Session Buffer Size = 32767
For the LU 6.2 session's mode definition I am currently using a Max RU Size = 256. Would it help significantly to
increase this value? What value could be recommended? Or would it help significantly if I changed the applica-
tion logic to send a larger number of data records at time instead of sending each one individually, thereby reducing
the number of SEND and RECEIVE commands to be carried out?
Answer
It looks as though delays can occur in several areas.
Revision Date: 15th December, 1998
Document Id: CA38 Page 5 of 47
Title: CICS for OS/2 - FAQ
loop
: retrieve record from DL/I
(1) : send record to CICS for OS/2
(2) : write record to TS
(3) : receive reply from CICS for OS/2
loop
1. represents the time taken to send the request through the network. Only one RU should be required given
record lengths of 50 to 200 bytes
2. represents the time to write the record to auxiliary TS; the time depends on the recoverability of the queue; the
time also depends on whether or not CICS for OS/2 forces each write.
3. represents the time taken to send the reply through the network.
Why do you need to receive one reply from CICS for OS/2 for each record that is sent? If you eliminate the
requirement then you have
loop
: retrieve record from DL/I
: send record to CICS for OS/2
loop
CICS for MVS/ESA may defer passing the record (plus LLID prefix) to VTAM; data is held in an intermediate
buffer and is sent either when the buffer is full or when the WAIT option is specified on the SEND command. The
size of the buffer depends on RU size and is a minimum of 8K (from CICS for MVS/ESA 3.2.1 onwards).
Increasing RU size from 256 bytes to 2048 bytes will reduce the number of RUs flowing through the network as
well as reducing the number of RUs that have to be received by Communications Manager/2 on behalf of CICS for
OS/2; however you must remember that a larger RU size may affect the overall network traffic.
The TS Queues are defined as recoverable (for syncpointing purposes). Each data record is written to TS as it is
received by CICS for OS/2. What do you mean by the statement "CICS for OS/2 forces each write"? Could the
speed of writing the records physically to disk be the bottleneck? Can recoverable TS queues be defined to another
medium that is faster than disk?
If I leave my program logic unchanged (send each data record individually) increasing the RU size won't buy me
much since the records are so small that they will fit into a single RU, but if I change the program logic around to
send a larger number of data records at a time, then increasing the RU size to 2048 bytes would be
recommended....correct?
What is generally better...a lot of little RU's, or a smaller number of bigger RU's? You mentioned that larger RU
sizes negatively affect the overall network traffic...in which way?
Revision Date: 15th December, 1998
Document Id: CA38 Page 6 of 47
Title: CICS for OS/2 - FAQ
Answer
From a CICS for MVS/ESA point of view you should increase the RU size from 256 bytes to, for example, 4096
bytes.
1. If you specify the WAIT option on every SEND command then the maximum RU size is irrelevant as each RU
passing through the network will carry one and only one record.
2. If you do not specify the WAIT option the CICS for MVS/ESA may choose to hold the records in an interme-
diate buffer; the contents of the buffer are passed to VTAM when the buffer is full or when the WAIT option
is specified on a SEND command. Assume that the length of the intermediate buffer is 8192 bytes. If the
maximum RU size is 256 then 32 RUs will be sent whereas if the maximum RU size is 4096 then 2 RUs will
be sent.
Each RU has to be received by Communications Manager/2. It is clear that the the overhead attributable to Commu-
nications Manager/2 processing will be reduced as the the number of RUs is reduced.
I believe that data sent from CICS for MVS/ESA to CICS for OS/2 has to pass through at least one network
controller. If the controller has to manage RUs of different maximum size then network delays may occur if it is
operating near capacity; it's all a question of how the controller managers its internal buffers.
Returning to your application ... Consider the case where CICS for MVS/ESA is holding 32 records in the interme-
diate buffer when the "syncpoint" call is issued. These records have to be sent to CICS for OS/2 and received by
CICS for OS/2 and written to TS before all 5000 writes can be committed. This suggests that you might want to
specify WAIT on every nth SEND command where n might be 5 or 10.
Revision Date: 15th December, 1998
Document Id: CA38 Page 7 of 47
Title: CICS for OS/2 - FAQ
4.0 Btrieve
Question
Is there a limit on the maximum size (in bytes) of a Btrieve file?
Answer
The version of Btrieve shipped with CICS for OS/2 supports a maximum file size of approximately 4 GB.
Question
Can Btrieve V6 be used by batch applications written for V5.10?
Answer
Applications previously written for Btrieve 5.10 may use the 6.X engine because the 16-bit API set remains intact
and is upward compatible in this new version, with two following provisos:
¹ The call interface to Btrieve 6.15 requires more stack space than Btrieve 5.10, which may cause the application
to trap. Relinking with a larger stack resolves the problem.
¹ If Btrieve is not active when the API is called, an environment variable (BTRINTF) must be set to indicate the
location of Btrieve.EXE. Command file CICSENV.CMD will do this or it may be done explicitly as in the
following example:
SET BTRINTF=/H:D:\CICS310\RUNTIME
If consecutive batch programs are to be run, it is recommended that Btrieve be started explicitly, as the
repeated starting and stopping of the Btrieve engine will affect performance.
If a developer wishes to use the native Btrieve API they will need a copy of the 5.10 Btrieve SDK including the
Programmer's Manual, and should be familiar with programming using the Btrieve API set.
In Btrieve 6.X, the 16-bit APIs have been complemented with a 32-bit equivalent. The 32-bit API names are
specified by adding "32" to the end of the 16-bit API name.
Parameters for the 32-bit functions naturally accept 32-bit pointers and integers.
Revision Date: 15th December, 1998
Document Id: CA38 Page 8 of 47
Title: CICS for OS/2 - FAQ
Question
I am using ECI to call a CICS program on MVS and am not sure how it all works under the covers. Let's say that
my MVS program has a commarea that is 4000 bytes long. Do I need to do a malloc() on the PC for 4000 bytes
and pass the pointer to my ECI_PARMS structure or is the space allocated for me and I receive a pointer to it?
Also, when I call the remote program, I pass up about 20 bytes as an input to the host program. Do I need to
have 4000 bytes allocated, or just the buffer for the 20 bytes?
Answer
If your server program expects a commarea of length 4000 bytes, then your client program must provide a
commarea of length 4000 bytes.
Suppose you had set eci_commarea_length to 20. The CICS client would assume that the commarea was of length
20 and would send upto 20 bytes of commarea data; upto because trailing nulls (i.e. X'00') may be removed. The
CICS server would allocate a 20 byte buffer, receive the commarea data, restore trailing nulls if these had been
removed, and (EXEC CICS) LINK to your server program. EIBCALEN will be set to 20 on entry to your program.
Summary:
¹ Pick maximum of how much you want to send or receive(must be less than 325000).
¹ Get space for it if you haven't got it
¹ Set pointer to it in ECI block
¹ Set length in ECI block
¹ Clear it to X'00's
¹ Place your data in it
¹ Call eci
Notes:
1. If you do not pad with nulls, then the entire commarea is transmitted - unnecessarily. You affect to overall
response time of the transaction and potentially the entire network, when enough requests are flowing.
If you do pad with nulls, then only the necessary information is sent, potentially something smaller than the
complete commarea.
2. 32500 is the largest. In addition to your data, there is some overhead (called FMHs or Function Management
Headers) that must also be sent so that CICS and the mirror can know what you want them to do.
Revision Date: 15th December, 1998
Document Id: CA38 Page 9 of 47
Title: CICS for OS/2 - FAQ
Question
Can you provide some additional guidance concerning data conversion and code page support?
Answer
The DPL architecture assumes that data conversion will be performed in the server (in your case CICS/ESA) pro-
vided a trigger has been received from the client (or distributed CICS). Commareas are converted provided either a
conversion template has been defined or the user replaceable conversion module has been modified.
Transactions and tasks are important, The DPL architecture requires a mirror task to be attached before the program
can be invoked. Further more transid CPMI is used as the default trigger for data conversion.
Starting with apar PN58392 on CICS/ESA 3.3, improvements to the range of data conversions supported by the
host have been available.
For Latin-1, conversions are supported between three ASCII code pages (437, ISO 8859-1 (IBM 819), 850) and ten
EBCDIC code pages (037, 273, 277, 278, 280, 284, 285, 297, 500, 871).
The apar also provides conversions for Arabic, Cyrillic, Greek, Hebrew, Latin-2, Latin-5, additional Japanese,
Korean, Simplified Chinese, and Traditional Chinese.
The apar added the CLINTCP and SRVERCP options on the DFHCNV macro; the CDEPAGE option is retained
for compatibility.
The CICS client determines the code page using platform specific functions.
(con) but defining every commarea can be complex and all definitions have to go into the same table
2. (pro) Conversion is under control of the application programmer
(con) Someone has to understand how to do conversions under OS/2. Don't forget to handle code pages.
3. (pro) same as #2 - plus, on a 370, translate routines can be fairly easily written in assembler.
(con) I still have to be aware of code pages. Is the host program used for host activities? Also, I have to
understand what can and cannot be translated.
4. basically the same as above.
I can see an additional advantage for doing it within the application - even if I have to have a duplicate program for
responding to host requests and OS/2 requests - in that change can be easier to manage, ie I could install new
application code without having to redo the DFHCVT.
But, I must also always remember that there are two sides that are dependent upon the layout of the commarea.
I guess I am as much concerned with application management as anything else. And some additional consider-
ations:
1. Translation on the workstation is fairly straightforward in that you have the WinCPTranslateString function and
code page conversion tables are already defined.
2. On the host there is very little code page support and you have to write your own translation tables. The CVT
macros have their own.
3. If you wish to test your programs on the workstation first, ie. use a local link rather than DPL, you will have to
disable any conversion code. If you use templates then no code needs to be disabled.
4. Templates can be a problem in that the commareas have to be in a fixed format if the full power of the
templates are used. Note this includes conversion of binary fields where necessary. You can use the User Exit
routine on the templates for generalized variable format conversion.
Question
I understand that the following statements are the the "minimal set" of conversion statements required on a MVS
server.
DFHCNV TYPE=INITIAL
DFHCNV TYPE=FINAL
END
Does the use of these statements instruct the MVS system to perform ASCII to EBCIDIC conversion on all data
(commarea, function shipped, etc.) received from an OS/2 system?
If this is not the case; is there a way to perform this conversion on all requests from all OS/2 systems connected to
the MVS server.
Revision Date: 15th December, 1998
Document Id: CA38 Page 11 of 47
Title: CICS for OS/2 - FAQ
Answer
With The "minimum" conversion table (as you correctly described) the assertion is that there are no resources for
which the systems programmer wishes to define a template.
When CICS for MVS/ESA processes a request for which data conversion is required, e.g. Inbound WRITEQ TD
or outbound READQTD request, then the user replaceable program DFHUCNV is invoked unless a template speci-
fying USREXIT=NO had been defined for the resource named in the request.
CICS for MVS/ESA ships a sample DFHUCNV which only processes TS requests for which templates specifying
USREXIT=YES have been defined. Since DFHUCNV is user replaceable, it is possible to imagine another version
of DFHUCNV that "knows" that all records in TS queues whose names begin with xxxx have the same format. (It
beats having to define a template for every such queue.)
The net is that, given the "minimum" conversion table and DFHUCNV as shipped, CICS for MVS/ESA will not
convert any data. You can override the default action by replacing DFHUCNV. Note that if you choose so to do
then you are assuming that:
1. all workstations connected to a given CICS for MVS/ESA server share a common encoding, e.g. ASCII 437,
for character data and a common format, e.g. Intel, for binary data
2. DFHUCNV as replaced knows the ASCII encoding and binary format and knows the corresponding EBCDIC
encoding
3. DFHUCNV has the appropriate ASCII/EBCDIC translation tables
PRINT GEN
TITLE 'DFHCNV - CONVERSION FOR CICS OS/2'
DFHCNV TYPE=INITIAL,CDEPAGE=437
DFHCNV TYPE=ENTRY,RTYPE=PC,RNAME=ECHO,USREXIT=NO
DFHCNV TYPE=SELECT,OPTION=DEFAULT
DFHCNV TYPE=FIELD,OFFSET=0000,DATATYP=CHARACTER X
DATALEN=32500,LAST=YES
DFHCNV TYPE=ENTRY,RTYPE=PC,RNAME=VSAMSERV,USREXIT=NO
DFHCNV TYPE=SELECT,OPTION=DEFAULT
DFHCNV TYPE=FIELD,OFFSET=0000,DATATYP=CHARACTER, X
DATALEN=2
DFHCNV TYPE=FIELD,OFFSET=0002,DATATYP=BINARY, X
DATALEN=2
DFHCNV TYPE=FIELD,OFFSET=0004,DATATYP=CHARACTER, X
DATALEN=75
DFHCNV TYPE=FIELD,OFFSET=0079,DATATYP=BINARY, X
DATALEN=2
DFHCNV TYPE=FIELD,OFFSET=0081,DATATYP=CHARACTER, X
DATALEN=50,LAST=YES
* * This is FILEA from the IVP *
DFHCNV TYPE=ENTRY,RTYPE=FC,RNAME=FILEA,USREXIT=NO
DFHCNV TYPE=KEY
DFHCNV TYPE=FIELD,OFFSET=0,DATATYP=CHARACTER,DATALEN=6, X
LAST=YES
DFHCNV TYPE=SELECT,OPTION=DEFAULT
DFHCNV TYPE=FIELD,OFFSET=0,DATATYP=CHARACTER, X
DATALEN=80,LAST=YES
DFHCNV TYPE=ENTRY,RTYPE=FC,RNAME=TECHBASE,USREXIT=NO
DFHCNV TYPE=KEY
DFHCNV TYPE=FIELD,OFFSET=0,DATATYP=CHARACTER,DATALEN=5, X
LAST=YES
DFHCNV TYPE=SELECT,OPTION=DEFAULT
DFHCNV TYPE=FIELD,OFFSET=0,DATATYP=CHARACTER, X
DATALEN=75
DFHCNV TYPE=FIELD,OFFSET=75,DATATYP=BINARY, X
DATALEN=2,LAST=YES
Revision Date: 15th December, 1998
Document Id: CA38 Page 13 of 47
Title: CICS for OS/2 - FAQ
DFHCNV TYPE=ENTRY,RTYPE=FC,RNAME=TECHALT,USREXIT=NO
DFHCNV TYPE=KEY
DFHCNV TYPE=FIELD,OFFSET=5,DATATYP=CHARACTER,DATALEN=15,X
LAST=YES
DFHCNV TYPE=SELECT,OPTION=DEFAULT
DFHCNV TYPE=FIELD,OFFSET=0,DATATYP=CHARACTER, X
DATALEN=75
DFHCNV TYPE=FIELD,OFFSET=75,DATATYP=BINARY, X
DATALEN=2,LAST=YES
*
DFHCNV TYPE=FINAL
END DFHCNVBA
Question
If I develop an application on a PC using OS/2, C-SET2 and CICS for OS/2, what kinds of data conversion/bit
swapping do I have to worry about when I ship data to the host (MVS/ESA, CICS 3.3, C/370)?
Answer
First of all, read the chapter on data conversion in the CICS documentation. Also, remember that you are using C
(rather than COBOL), all numeric values (in addition to character values) will also have to be converted since C
will expect numeric data to be in INTEL format (rather than the S370 format supported with COBOL).
Question
I'm trying to understand how the code page and data conversion works between CICS.
For example, If I'm using the Common client to make an ECI call into a CICS for OS/2 server, and the CICS for
OS/2 program is defined as remote, so we end up doing a DPL request to a host CICS, where will automatic data
conversion take place and where will I need to do DFHCNV macro etc.
The client system will have it's own codepages set in config.sys and they may well be different to the codepages set
in the config.sys for the CICS for OS/2 server.
Now I know that it's only the servers who do conversion, so my guess is that between the common client and the
CICS for OS/2 server some sort of automatic data conversion will take place. Which code pages are used ? For
example, does the client send it's codepage? Does the client's codepage come from the 'model' terminal used on the
terminal definition (even though the ECI request is non-terminal ?)
Revision Date: 15th December, 1998
Document Id: CA38 Page 14 of 47
Title: CICS for OS/2 - FAQ
So I've now assumed that the info is now in the CICS for OS/2's codepage (although I'm not sure where it's come
from). Now the request is DPL'd to the host. I figure we've now got to convert the data into EBCDIC so I need to
do a DFHCNV macro on CICS/ESA ... In here I set what I think the CICS for OS/2 code page is and what the
CICS/ESA code page is. What is the CICS/ESA code page? There are no SIT settings for the hosts code page?
So do I just decide for myself ?
I'm not doing any transaction routing here, so I figure that the Partner Code Page in my TCS is not important.
Also because I'm sending UK pound signs in the commarea I guess I'll need to set up a user conversion table in my
host DFHCNV....
Answer
1. Unless you want life to be very complicated, don't mix codepages on the PC systems.
2. When the ECI is sent to the host, there and only there will conversion take place based on the DFHCVT and
only when the CVMI mirror is used. No conversion will take place on the CICS for OS/2 gateway.
3. The current DFHCVT assumes 037 for the host code page and 437 for the PC. At some point in the future,
there will be the ability to have multiple and different code pages for CICS for OS/2 much the same as is
current for CICS for AIX.
APAR PN58392 on CICS/ESA 3.3 has made some improvements to the range of data conversions supported by the
host.
For Latin-1, conversions are supported between three ASCII code pages (437, ISO 8859-1 (IBM 819), 850) and ten
EBCDIC code pages (037, 273, 277, 278, 280, 284, 285, 297, 500, 871).
The APAR also provides conversions for Arabic, Cyrillic, Greek, Hebrew, Latin-2, Latin-5, additional Japanese,
Korean, Simplified Chinese, and Traditional Chinese.
You'll have to use the CLINTCP and SRVERCP options on the DFHCNV macro; the CDEPAGE option is retained
for compatibility. In the above case, the user should change the DFHCNV macros to specify CLINTCP=437:850,
SRVERCP=285; that way he should be able to preserve the pound signs (despite the EC talk of a common cur-
rency!).
Question
It would be nice not to have different codepages on the CICS Client machines, but the CICS for OS/2 server is part
of a service bureau and all of the clients are via dial-ups in many different companies, so it's quite tricky to say you
must use this codepage when you install OS/2.
Perhaps the thing I am missing is where the codepages come from. Does the client use the codepage of the OS/2
system, or is it something the application decides ?
If we take my previous example, because the ECI call is being sent directly to the host via DPL, the 'client' code
page (to the host) is that of the Common Clients machine and not that of the CICS for OS/2 server.
Revision Date: 15th December, 1998
Document Id: CA38 Page 15 of 47
Title: CICS for OS/2 - FAQ
Answer
The CICS client determines the code page using platform specific functions.
As the CICS OS/2 intermediate server does not propagate the code page from the client to the host server you will
need to indulge in some crafty configuration. Consider a set of clients (either ASCII 437 or ASCII 850) invoking
programs on a set of hosts (either EBCDIC 037 or EBCDIC 285) :-
1. You will need 4 host servers each having a different combination of CLINTCP and SRVERCP parameters on
the DFHCNV macro/table
a. CLINTCP=437, SRVERCP=037
b. CLINTCP=437, SRVERCP=285
c. CLINTCP=850, SRVERCP=037
d. CLINTCP=850, SRVERCP=285
2. You will need one or more intermediate servers connected to each host server. Each intermediate server "sup-
ports" a particular ASCII/EBCDIC combination, e.g. 850/285
3. You will need to connect each client to the appropriate intermediate server.
Revision Date: 15th December, 1998
Document Id: CA38 Page 16 of 47
Title: CICS for OS/2 - FAQ
7.0 Debugging
Question
We have installed the various components of the Java gateway and are testing. In running the supplied applets, we
have seen RC=-6 on our logs. In the traces, we see an abend with an RC=AZI6. Can someone give us some clues
here on how to address this? In SRVTIME, we commented out the commands in the send-msg section. Could the
exit cause the exec cics return to not be executed? The trace also indicates a CommArea of 1 byte returned when
we sent up 16 x'2D' as required.
Answer
Looking at the cobol version of SRVTIME, it is checking for a commarea that is at least 18 bytes long.
My suggestion would be to send a commarea slightly longer and put a character (or several) starting a position 19.
You should then see these go up and come back.
The AZI6 says that the application on the other side (ie SRVTIME) has abended. Check for the abend code in the
host region - when you get the AZI6.
Also, make sure that the DFHCNV has been defined on the host CICS, even if you do not plan on using it.
The following types of CICS resources can be identified in the conversion table:
FC ... File Control
IC ... Interval Control
TD ... Transient Data
TS ... Temporary Storage
PC ... Program Control - ie the COMMAREA for Distributed Program
Link requests
Some simple guidelines for COMMAREAs can make life a bit easier:
1. Always initialize the COMMAREA to LOW-VALUES (Binary Zeros) since binary data will be compressed,
starting at the end before transmission.
2. Always use a data structure definition to move information into the COMMAREA, especially when using
COBOL
3. Never place addresses into the COMMAREA. The other side does not have the ability to branch to code in
your system.
4. Define the area such that the most used information appears early in the structure.
5. Do your best to have the data stored in character format, then the conversion table is very simple.
Here's my version of the conversion template for program SRVTIME
Revision Date: 15th December, 1998
Document Id: CA38 Page 17 of 47
Title: CICS for OS/2 - FAQ
*
* THIS IS FOR CICS CLIENT PGM SRVTIME
*
DFHCNV TYPE=ENTRY,RTYPE=PC,RNAME=SRVTIME,USREXIT=NO
DFHCNV TYPE=SELECT,OPTION=DEFAULT
DFHCNV TYPE=FIELD,OFFSET=0,DATATYP=CHARACTER,DATALEN=8
DFHCNV TYPE=FIELD,OFFSET=8,DATATYP=CHARACTER,DATALEN=1
DFHCNV TYPE=FIELD,OFFSET=9,DATATYP=CHARACTER,DATALEN=8
DFHCNV TYPE=FIELD,OFFSET=17,DATATYP=CHARACTER,DATALEN=1
DFHCNV TYPE=FIELD,OFFSET=19,DATATYP=CHARACTER,DATALEN=32749
DFHCNV TYPE=FINAL
END DFHCNVBA
Notes:
1. I'm assuming that rest-commarea contains character data that requires conversion. I'm also assuming SBCS
encodings.
2. If lowval really does contain X'00' then you could omit the field definition. If not then
DATAYP=CHARACTER provides a more accurate representation of the COBOL definition.
3. CICS treats DATALEN=32749 as specifying the maximum length of the data to be converted. If the length of
the commarea was 22 then CICS would convert 6 bytes of character data
4. You have a problem with the commarea as defined in the linkage section. The length of rest-commarea can not
exceed 32751 given API limits and should not exceed 32484 given recommendations for commareas passed via
DPL.
The DFHCNV macros are described in
CICS Family:
Communicating from CICS on System/390
Document Number SC33-1697-01
Assembly of the DFHCNV table is identical to that for other macro defined resource macros; refer to
CICS for MVS/ESA
System Definition Guide
Version 4 Release 1
Document Number SC33-1164-01 ... or equivalent ...
Revision Date: 15th December, 1998
Document Id: CA38 Page 18 of 47
Title: CICS for OS/2 - FAQ
8.0 Gateway
Question
What hardware is required to run 1500 clients through a single gateway. I'd prefer a pentium with 4 MPU adapters.
Would this require multiple processors as well.
Answer
With CICS for OS/2, there is a limit of 254 clients per NetBIOS adapter and a limit of 999 TCP/IP connected
clients (or servers).
The upstream links are another question. A client can have multiple units of work multiplexed over one connection
- e.g. Multiple 3270 type terminals in OS/2 or Windows, or multiple async ECI calls, or multithreaded synchronous
ECI calls.
Each active unit of work uses one local task on the CICS for OS/2 machine for the duration of that work. (Which
is why pseudo-conversation programming is important.
There is no point in having more sessions over a connection than there are local tasks, because normally there is
only one session per active transaction to any remote system. (DTP is the possible exception).
The number of local tasks is limited to 99, though system memory and CPU limits this to 20-40 practically.
The advantage of a CICS for OS/2 gateway is that it multiplexes all the client connections over one connection to
the mainframe with a lower number of sessions.
If more clients want to do something simulatenously than there are tasks or sessions, then the clients will block.
Normally a terminal transaction is only active for a very short time however - the think time waiting for a terminal
input does not use a task or session if the transaction is pseudoconversational.
While there are other pluses using a CICS OS/2 gateway, the main one is LU reduction in the network since the
clients come up to the mainframe over parallel sessions rather than multiple single LU sessions. This is a positive
benefit for NCP, VTAM and host CICS.
Also will allow you to re-route requests to other address spaces with a trivial bit of code, thus increasing avail-
ability.
5. Watch for paging? if so get some memory...anyway if using FAT pre-allocate the swap file (3rd parameter in
CONFIS.SYS)
6. What is priority of CPMI on mainframe, if if isnt greater than other transactions in the CICS system, it should
be....
Revision Date: 15th December, 1998
Document Id: CA38 Page 20 of 47
Title: CICS for OS/2 - FAQ
Question
Does anybody know a way to prevent CICS OS/2 from putting out these two buttons with
<SHUTDOWN><CONTINUE> when a transaction is trapping.
When you run a CICS OS/2 remotely and have a couple of hundred kilometers between yourself and the push-
button, you lose some of the advantages of remote operations, which is such an advantage with CICS OS/2.
Answer
Start CICS with the /Q option for unattended operation. E.g.
CICSRUN /Q /Q
(note the two /Q as Rexx steals the first one)
Question
Could someone tell me the maximum COMMAREA size in CICS OS/2?
Answer
1. The absolute limit is 32k - the commarea length is held in a half word binary field.
2. When using COMMAREA with Distributed Program Link from CICS for OS/2, you must not go above 32,500
since:
a. VTAM also has a 32k limit on a physical buffer size
b. along with the commarea, we must ship an FMH5 and FMH43
3. CICS/ESA's documentation recommends 24k as a good general value, but that is not the maximum.
Personally, I normally suggest a self-imposed max of 30k, but I also question the design of commareas that large.
What concerns me is that the customer have an understanding of the effect on the network (line traffic/utilization,
NCP buffers and control blocks, VTAM buffer pools, and so on) of suddenly adding a significant number of very
large data buffers, especially when a 3270 network typically only uses 2 to 3k buffers (and those are large for 3270
datastreams).
As a final comment, CICS for OS/2 and the IBM CICS Clients will remove trailing nulls from the commarea
before sending to help the situation.
Revision Date: 15th December, 1998
Document Id: CA38 Page 21 of 47
Title: CICS for OS/2 - FAQ
Question
The CICS for OS/2 Version 3.0 Performance manual, section "2.4 Major CICS for OS/2 parameters" states the
following:
"Note that the number of non-facility processes (named @02@ and @03@) matches the value specified in
Minimum free tasks. If more requests for transaction initiations enter the system than can be handled by these two
processes, CICS for OS/2 can start up to three more processes, giving a maximum of six (the value specified in
Maximum number of tasks). Currently, the stimuli which will activate this are: ... "
The stimuli do not include ECI requests. Is this a documentation omission or do I need to have "Minimum free
tasks" set such that I will always have a CICS OS/2 process available to satisfy my ECI requests, upto a pre-
determined maximum? If this is so, what is the OS/2 overhead of having a large number of non-facility processes?
Answer
First, it is correct, ECI requests will not cause additional back-ground tasks to be initiated. Hence you need to set
the Minimum number of Free Tasks to the enable the total number of concurrent requests you wish to handle.
Now comes the fun. How high to set the number? For this you need to consider resource usage for CICS, OS/2
and your transactions. A back-ground task which is idle has a very small footprint, as most of its memory require-
ments are swapped out. Also, an idle task will not consume any processor resource. So the first consideration is
how much memory is there on the system, and how much swapping might you cause OS/2 to perform. Some
swapping is OK, but large amounts are not productive.
Next consideration is the transaction resources. If the transactions compete against each other, for data resources,
memory or processor usage, then it may be better to let CICS queue the requests rather then schedule many
requests concurrently, and have them spend all their time competing for resource. While I have known users to
have up to forty back-ground tasks, these have generally been on systems which are not memory constrained and
the transaction requirements have been modest. Unfortunately, there is no magic number.
If you are running the system with a number of client attached systems, remember that extended ECI conversations
keep the back-ground task for the duration of the transaction. They are the equivalent of conversational trans-
actions. But, if they include user 'Think time' then swapping out the waiting task may be a good option.
Another consideration is to disable the desk-top terminal emulators. Each terminal requires a dedicated task, and
will consume small amounts of processor time. Start the system with the /N option, and use the 'Start Terminal'
icon to start a terminal if you require one on the desk top. This will start a new back-ground task! Therefore
ensure the 'Maximum number of tasks' is greater than the number specified for 'Minimum free tasks'.
Finally, the PA2 set of transactions is invaluable for monitoring the usage of system resources. Start the system
with the /P-PA option. Capturing the output and analyzing it will give you a very good guide as to where to set the
numbers and what the effect is on the system.
Revision Date: 15th December, 1998
Document Id: CA38 Page 22 of 47
Title: CICS for OS/2 - FAQ
Question
First, is there a method for a CICS transaction to determine which CICS it is running under?
Second, is there a way to find out from within a BATCH program whether that program is executing under the
CICS for OS/2 environment? On MVS, we have an assembler routine which checks to see if the executing
program is 'DFHSIP'(?) to see if it is running under CICS/MVS. How could this be done for OS/2 and CICS for
OS/2?
Answer
For the first question:
Just look at the OPSYS value returned from the EXEC CICS INQUIRE SYSTEM. For example, OPSYS returns
'P' for CICS for OS/2, '4' for CICS for OS/400, and 'X' for CICS for MVS/ESA. RELEASE will also tell you the
CICS release level.
I expect that you have a program which has no CICS commands, is not put through the translator, but can be called
as a subroutine by batch and CICS programs. If so, a suggestion:
DosGetInfoSeg: one of things this returns is a module handle. DosGetModName: using the above module handle,
will return the address of a buffer containing the fully qualified drive, path, filename, and extension of the module
at the top, which is FAAOTPTK.EXE or DLL.
Note that use of techniques such as this will make the program operating system dependent, but in this case what is
needed is an equivalent technique under OS/2 for something which already works under MVS or VSE, presumably.
Question
We have some questions concerning the MAX tasks and FREE tasks specifications in the SIT:
It appears that an External Transaction Initiation (ETI) request with USAGE=3270 and TERMID=DFLT requires
one FREE task and occupies the task until CICS for OS/2 returns to the ETI program. The task is occupied across
transactions. For example, with MAX=3 FREE=1, we can run one such ETI program at a time.
Starting a TR emulator session also requires one FREE task, but if one is available, then apparently the task is not
tied up across transactions. Any number of TR emulators can be run against the server. The client's 3270 sessions
appear to be 'sharing' a FREE task. For example, we can run 4 client terminal sessions when MAX=3 FREE=1 is
Revision Date: 15th December, 1998
Document Id: CA38 Page 23 of 47
Title: CICS for OS/2 - FAQ
specified. Such a FREE task can also be 'shared' across clients, e.g. We have serviced one emulator session on
client 1 and another emulator session on client 2, with just one FREE task in the SIT.
We are trying to find recommendations as to how many tasks to specify for how many clients, TR emulator ses-
sions, native 3270 emulator sessions (ETI/non-facility or facility), and ECI programs. Are our observations correct?
Answer
Let me try and clarify the usage of Maximum and Free task.
Maximum tasks is, as its name suggests, the maximum number of task available to CICS for OS/2. Minimum free
tasks is the number of non-facility tasks which CICS will attempt to maintain within the limits of maximum tasks.
A pre-defined terminal, such as a PM, fullscreen or 3151 communications port will require the dedicated use of a
task.
An ETI request directed to a terminal (Usage=3270) will require a dedicated task for the duration of the ETI
session. The session is terminated by the EXIT transaction.
All other types of transactions will require a task for the duration of a transaction. This will include transactions
initiated from PNA or Client attached terminals, inbound communication requests, ECI and simple non-facility type
transactions.
Now an example:
¹ Define maximum tasks as 6.
¹ Define minimum free tasks as 2.
¹ Define two PM terminals - V123 and V124.
When CICS for OS/2 is started it will install two tasks which will be used exclusively by V123 and V124. In
addition, it will start two tasks which are available as non-facility tasks and candidates to be taken for any other
transaction. CICS will have the capability to install another two tasks (6 (The maximum) - 2 terminals - 2 (free
tasks)).
If you now request an ETI transaction with usage=NONF the transaction will run on one of the non-facility tasks.
If, however, you specify usage=3270 the system will install a terminal and convert one of the non-facility tasks into
a dedicated facility task. As there will be only one free task, and we have two tasks not initiated, CICS will start
another non-facility task to maintain the minimum of two
That broadly is how the tasks are used. Some points to consider:
¹ You may never have more tasks than the defined maximum.
¹ Tasks may be released when the number of free tasks exceeds the
minimum.
¹ PNA attached terminals may cause tasks to be initiated.
¹ Client attached terminals do not cause tasks to be initiated.
¹ Surrogate terminals do not cause tasks to be initiated.
¹ The number of concurrent transactions is limited by the number of tasks active.
¹ Pre-defined terminals are installed before non-facility tasks and if the Maximum tasks is too small, the number
specified for minimum free tasks will not be installed. Initialization will warn of this condition.
Revision Date: 15th December, 1998
Document Id: CA38 Page 24 of 47
Title: CICS for OS/2 - FAQ
¹ Pre-defined terminals may be released and the task will than revert to being a non-facility and may hence be
acquired to be another terminal.
Client emulators will attach to a server task on initiation (in order to install a terminal definition) and when a
transaction is running on that emulator. At all other times (when not in transaction) the emulator will not use a
server task.
To determine how many non-facility tasks are required on the server you need to calculate the following:
¹ The rate/frequency of emulator installations. If 10 client emulators are initiated on the LAN at the same time
and there are only 2 non-facilities running, then the last 8 emulators will wait on XSYSTEM until a non-
facility is free.
¹ The rate/frequency of emulator transactions. If you apply the same scenario as above, the result would be the
same.
¹ The type of transaction being run. Conversational transactions are NOT to be recommended! For obvious
reasons these would tie up a non- facility to an emulator. Be trendy and go for pseudo-conversational.
¹ Client ECI facility usage.
¹ Take into consideration the server task requirements, such as local terminals, ETI 3270 usage and local server
application usage.
In order to calculate the number of running non-facilities required just for client emulators I personally would
estimate the average server transaction rate/second (for just the client emulators) and set the number to this plus 1
for growth.
Each requestor is running the same application which sends a 50 byte commarea in and gets a 50 byte back. It
captures and reports the time to do this as well as displays the commarea received, waits for two seconds and does
it again.
At the server, there is an echo program that places the task counter in the commarea and returns. As part of the
monitoring process, I have a spy program that opens a file, records information, and closes it every few seconds.
At the server, I'm running 12 non-facility tasks and V123. The backend ECHO program is resident. OS/2 is NOT
memory constrained, ie there is no paging activity. The machine has been running at a very steady state for the
entire test. During the first several days the avg response time at a client was 1.33 seconds. Due to my playing
around on the server (looking at memory, etc) over time the response time has changed to 1.57 (for the last 3 days
at least).
Revision Date: 15th December, 1998
Document Id: CA38 Page 25 of 47
Title: CICS for OS/2 - FAQ
Now, what does this tell us? Well, for one thing that once you reach 10m trans, the transaction counter rolls and
keeps on going. On a more serious note, it does show some minimum levels for client to server interactions.
Revision Date: 15th December, 1998
Document Id: CA38 Page 26 of 47
Title: CICS for OS/2 - FAQ
There is no terminal associated with the task, therefore a program is not allowed to issue any terminal-oriented
commands (such as SEND).
If an ECI request comes into CICS for OS/2 and specifies a PROGRAM (not a transaction ID) which has been
defined as remote, CICS for OS/2 will function ship the LINK (also known as DPL) to the target CICS system. The
rules of DPL state that a DPL server program cannot issue any terminal-oriented commands.
An option in the ECI call parameter list is a transaction ID. Prior to CSD1 for the CICS Clients, this transaction ID
is used as the TRANID of the mirror as well as being in the EIB. One of the optional changes in CSD1 (docu-
mented in the readme) is the ability to use the normal mirror name but still have the specified transaction ID appear
in the EIB. (Starting with CICS for OS/2 V2, such a transaction ID also has to be defined in the PCT pointing to
the mirror.) As such, it is used in security checking and may be passed to a connected CICS system if a DPL
request is sent. The transaction code is not used to invoke the background transaction in the same way that a
transaction code entered by a terminal user or one specified in a START command would be used. It is possible to
issue an ECI call to CICS for OS/2 specifying a transaction code and a program - where the program being invoked
is not the initial program specified in the PCT entry for the named transaction.
If the ECI request is transformed into a DPL request, the server CICS system will attach a mirror transaction
(CPMI), but place the specified transaction code in the EIB. This way, any calls to DB2 will use the plan associated
with the designated transaction call.
In CICS for OS/2, the PPT includes TRANSID as well as SYSID. When a program is defined as remote, if a
TRANSID is specified in the local PPT, that transid will be used instead of the CICS-supplied mirror transaction
within the DPL server region. This transaction code must be defined within the DPL server region with the same
parameters as those on the CICS-supplied mirror transaction (CPMI). When using such a private mirror, the transid
in the client PPT system will be used both for transaction attach and the EIB.
Again, remember that the host CICS program is being invoked due to DPL which uses the function-shipping proto-
cols. Transaction routing is not involved in any way.
If a LINK command is issued for a remote program and TRANSID is not specified in either the LINK command or
the RDO definition of the program, then the DPL server region will attach the default mirror transaction (CPMI,
CSMI, etc.). If TRANSID is specified either on the LINK command or in the RDO definition of the program, then
the DPL server region will attach the named TRANSID.
Revision Date: 15th December, 1998
Document Id: CA38 Page 27 of 47
Title: CICS for OS/2 - FAQ
This named TRANSID must be defined in the DPL server region with the same characteristics as the mirror trans-
action for which it is substituting. I have termed this TRANSID which is named on the LINK command as the
"private" mirror.
Example:
DPL client is CICS for OS/2; DPL server is CICS for MVS; default mirror is CPMI; private mirror transaction code
is to be MYRR.
To define a private mirror transaction code in CICS for MVS, copy the definition of CPMI, giving it a transaction
code of MYRR.
Note: The PROGRAM name for the ASCII mirror is different in later host CICS versions.
TRANSACTION(MYRR)
GROUP(LYCCOSV) PROGRAM(DFHMIRVM) TWASIZE(0) PROFILE(DFHCICSA)
PARTITIONSET() STATUS(ENABLED) PRIMEDSIZE(0)
The two most important things to get right in this definition are PROGRAM(DFHMIRVM) and
PROFILE(DFHCICSA).
To use the private mirror transaction, the CICS for OS/2 program would issue a LINK command such as:
EXEC CICS LINK PROGRAM(LINKEDTO) TRANSID(MYRR)
COMMAREA(PLACE-I-PUT-THE-DATA) LENGTH(65)
END-EXEC.
Now, why would someone want to use a private mirror? Some customers want to collect statistics or monitoring
data (for accounting or performance analysis) about the use of DPL. If the default mirror transaction code is being
used, DPL usage will be lumped together with all the function-shipping requests in the transaction statistics. After
implementing one or more private mirror transaction codes, the statistics and monitoring records can be more
useful.
Some customers are using private mirror transaction codes to allow them to continue to use the transaction level
security which is in place for local transactions - and not have to implement resource level checking just to restrict
the program links.
Other transaction definition parameters may be altered on the private mirror transaction code - TWASIZE, PRI-
ORITY, TCLASS, etc. to give the applications and systems programmers more control over the application environ-
ment.
Revision Date: 15th December, 1998
Document Id: CA38 Page 28 of 47
Title: CICS for OS/2 - FAQ
Question
Can a CICS/ESA 3.3 application, invoked via a DPL request, use the EXEC CICS SYNCPOINT? Before moving to
CICS/ESA 3.3, these programs worked. He is receiving an error message: CICS for OS/2 cannot issue
SYNCPOINT in a DPL program.
Answer
This has happened because CICS for MVS/ESA 3.3 does not allow certain commands to be used. In prior versions,
it was not recommended, but also not checked. One of the banned commands is SYNCPOINT, unless the LINK
command has the SYNCONRETURN option specified.
If the SYNCONRETURN option is specified then the linked-to program can take as many syncpoints as it wants;
that CICS will also take one for good measure. The synclevel of the conversation is always 1. In this case, the
unit-of-work is divided between the front-end application and the back-end and are totally separate.
If the SYNCONRETURN option is omitted then the linked-to program must not take any syncpoint. Consider the
implications for DPL ... the mirror would become the syncpoint coordinator and you would observe some very
interesting phenomena especially if the synclevel of the conversation were to be changed from 1 to 2.
CICS has added code to police a restriction that has been documented since DPL was first implemented. Refer to
SC33-0736-0, Communicating with CICS OS/2; page 5 describes the restrictions on programs linked by DPL, in
particular the 6th "commandment". The policing code was added to CICS for MVS/ESA 3.3 and to CICS for VSE
2.2.
Question
I have a CICS client talking to a CICS for OS/2 server via an ECI call which invokes a local server program.
To what value is EIBTRMID set when the server program is in control? Is the value of EIBTRMID based on the
value generated by autoinstall?
Answer
The EIBTRMID for a DPL server program (which is what also happens with an ECI call) is the name of the
principal facility for the task, i.e. the name of the session. Session names are allocated dynamically as client
systems are autoinstalled.
Revision Date: 15th December, 1998
Document Id: CA38 Page 29 of 47
Title: CICS for OS/2 - FAQ
Information
The question concerning memory requirements for LU6.2 definitions comes up on a fairly regular basis. Depending
upon the level of your host CICS, the memory for these definitions may be allocated below the 16meg line (ie prior
to CICS/ESA 3.3) or above (for 3.3 and above). Therefore, depending upon your host CICS, as well the ability of
the paging subsystems, and so on, you may want to approach the "unbridled" use of LU6.2 sessions and con-
nections.
You may also find that the concept of an SOR (system owning region) to be attractive for these LU6.2 connections.
Judicial use of CICS for OS/2 systems running as small TOS (Terminal Owning Systems) can also be a help to
keeping this to a manageable level.
NOTE: The following values may not be exact on your host CICS. However, they can be used for estimates.
While a transaction is active, send and receive buffers are needed. The send buffer is as many send RUs (defined
by SENDSIZE) that will fit in 4060 bytes plus 36. Figure on 4096. The receive buffer is 2 times the
RECEIVESIZE.
To get this data I used AUX trace and printed it using DFHTUP, with the following parameters:
FULL,TYPETR=SM0301
This will give the domain getmains. The subpool is in the optional data 2 field which is translated on the right side
of the output.
This summary identified the component storage areas required for the "local" definition of LU6.2 devices within
CICS. We are still working on a determination of the subset of this storage that is required for a surrogate defi-
nition for a remote LU6.2 device.
For CICS/MVS the send buffer and the receive buffer are mapped onto the same block of storage which is typically
4096 bytes long. Note that the storage allocated must be capable of holding at least one send RU or two receive
RUs. The storage is allocated below the 16M line.
For CICS/ESA 3.2 and later releases the block of storage is typically 8192 bytes long and is logically divided into
two parts. The receive buffer is mapped onto both parts whilst the send buffer is mapped onto the latter part; the
length of the first part is that of a receive RU. The storage is allocated above the 16M line.
Revision Date: 15th December, 1998
Document Id: CA38 Page 31 of 47
Title: CICS for OS/2 - FAQ
Question
Does CICS for OS/2 Support a 2-phase commit process?
For example, let's take a CICS for OS/2 program which issues a syncpoint request. Prior to the syncpoint, the
program has
1. Issued a DPL request to CICSESA1 (NOSYNCONRETURN)
2. Issued a function ship write request to CICSESA2
3. Updated a local DB2/2 table
Now the CICS for OS/2 system will be the 'initiator' here. CICS for OS/2 will then in turn send a 'COMMIT' flow
to CICSESA1. If CICSESA2 replies 'COMMITTED' then CICS for OS/2 will send a 'COMMIT' to CICSESA2. If
CICSESA2 replies 'ROLLEDBACK' then CICS for OS/2 will send a 'ROLLBACK' to DB2/2.
What response is returned from the EXEC CICS SYNCPOINT command in this situation? (Or is the transaction
abended?)
Answer
Since "2 Phase Commit" is defined (among other things) as the ability to both receive and send a Prepare to
Commit, then the answer for CICS for OS/2 must be No.
Note that the base Communications Manager support was made available for the first time on 12 March 1996 with
the announcement of IBM Communications Server for OS/2 Warp, Version 4. Versions of Communications
Manager prior to this did not support two phase commit.
Keep in mind that 2 phase commit does require additional data flows at syncpoint time, which can add to the life of
a transaction.
In the example that you cited, when the second system says that the commit has failed then the CICS for OS/2
transaction will be abended.
In case (2)
1. If SL(2) is used then standard APPC architected syncpoint flows are used
2. If SL(1) is used then CICS architected flows are used. Basically the DPL/FS initiator sends "COMMIT" and
expects to receive either "COMMITTED" or ROLLEDBACK"; note that the initiator may receive other
responses, for example, if a session outage were to occur.
CICS/390 commits "SL(2)" any local resources before attempting to commit "SL(1)" resources; strictly CICS/390
propogates the result of the commit.
CICS for OS/2 selects one of the "SL(1)" resources and commits that. The outcome (i.e. committed or rolledback)
is applied to the other "SL(1)" and to local resources ... and ... should be fed back as the response to the
SYNCPOINT command.
Question
We have a problem starting sessions from CICS/ESA to CICS for OS/2.
We can start with CICS for OS/2 to CICS/ESA without any problem and the sessions starts when needed. From
CICS/ESA no sessions can be started. I get a CICS message for all sessions that are Ins Rel Cre saying:
DFHZC4931 E 11/12/93 10:16:31 DSSZCIC2
-995 CSNE VTAM detected bad logmode name.
VTAM RETURN CODE 144B
((1) Module name: DFHZLEX)
The session I started from CICS for OS/2 is used from CICS/ESA when freed (I did hold it with a conversational
transaction).
All sessions that tried to be started from CICS/ESA was set Out Rel
Revision Date: 15th December, 1998
Document Id: CA38 Page 33 of 47
Title: CICS for OS/2 - FAQ
Answer
It certainly appears that there is something wrong with your definitions. We can keep guessing or you can take
some time and do the following:
1. Gather up the following definitions for review:
¹ The CICS/ESA Sessions/Connection Definition for this LU6.2 link
¹ The VTAM definitions - including PU and LU definitions as well as the MODEENT
¹ The Communications Manager/2 NDF file
¹ The CICS for OS/2 TCS definitions
2. Try to isolate on which side of the link the problem occurs. Run a Communication Manager/2 trace on the PC
and then perform your tests. Check the trace to see if anything is flowing from the host to the PC.
3. Where to look for possible errors
Check:
a. The spelling in all names
b. For messages in the CICS/ESA log
c. On Communications Manager/2, from Subsystem Management, check that the LINK is active.
d. Use the CICS/ESA manual "Communicating with CICS OS/2" to check the connection/session etc. are
correct.
e. From Communications Manager/2 trace, locate the flow of the communication. Select APPC and
IBMTRNET.
f. Check that the LU6.2 logmode definition, CICS APPLID for APPC definitions etc. are correct. Don't take
this for granted.
g. Check that things like CPMI, CVMI, etc on CICS for OS/2 are defined. Check that the corresponding
definitions on CICS/ESA are installed and active.
h. Use CEMT (on the host) to acquire the connection manually. Look for error messages.
There usually turns out to be a mismatch in names, a name omitted, or the same name not used every place.
Solution Found
The problem is solved. The following question provided the solution.
"Did you ensure that the LOGMODE defined in SESSION and Communications Manager/2 is also defined in both
the CICS/ESA APPLID and the Workstation LU? I had a similar problem the other way round, and solved it by
adding the Logmode to the MODETAB for CICS/ESA."
What I found out was that the logmode specified for my PWS independent LU had an other name, so the message I
got was correct.
When I specified that logmode-name in my CICS for OS/2-session-definition in CICS/ESA (I didn't touch the rest
where logmode-name was specified) I could contact CICS for OS/2 but suddenly I couldn't connect the other way.
It could be a matter of number of session and winners I don't know.
Now I have the same logmode-name in TCS for CICS/ESA, Communications Manger/2, VTAM-PWS,
VTAM-CICS/ESA and RDO-def of CICS for OS/2 session. And it works!
Revision Date: 15th December, 1998
Document Id: CA38 Page 34 of 47
Title: CICS for OS/2 - FAQ
Information
The following is a sample of the host and workstation definitions for a CICS/ESA and CICS for OS/2 network. The
configuration consists of two OS/2 workstations on a token ring network, 3745 with TIC, ACF/VTAM, and
CICS/ESA.
--------------------------
: ---------- :
: : CICSU7 : :
---------- ---------- : :--------: :
: : : : : : CICSU8 : :
: CICS :--------: CICS :---------: :--------: :
: OS/2 : NETB : OS/2 : LU6.2 : : CICSU9 : :
: WS01 : : WS02 : : ---------- :
---------- ---------- : :
: MVS/ESA :
--------------------------
VTAM Definitions
========================================================================
VTAM definitions SYS1.VTAMLST(CICSSW1)
======================================================================== *
THIS IS THE SWNET FOR THE 3745 TOKEN RING CICS SUPPORT FOR COMPTON *
CICSSW1 VBUILD TYPE=SWNET CICPU40 PU ADDR=04,SPAN=(SPAN7), X
MODETAB=DSVMODE, X
IDBLK=05D, X
IDNUM=45509, X
MAXDATA=1033, X
MAXOUT=7,SSCPFM=USSSCS, X
PACING=0,VPACING=2, X
PUTYPE=2,ISTATUS=ACTIVE
VTAM Definitions
Revision Date: 15th December, 1998
Document Id: CA38 Page 35 of 47
Title: CICS for OS/2 - FAQ
=======================================================================
SYS1.VTAMLST(ATCSTR00)
=======================================================================
HOSTSA=1,SSCPID=01,MAXSUBA=63,CONFIG=00, X SSCPNAME=CDRM01,NETID=USIBMSL, X
NOPROMPT,DLRTCB=32,SUPP=NOSUP,PPOLOG=YES, X LPBUF=(120,,0,,60,60), LARGE
GENERAL PURPOSE - PAGEABLE X LFBUF=(96,,0,,24,10), LARGE GENERAL PURPOSE -
FIXED X WPBUF=(150,,0,,25,10), DEVICE CONTROL - PAGEABLE X
SFBUF=(128,,0,,32,10), SMALL GENERAL PURPOSE - FIXED X
CRPLBUF=(160,,13,,80,80), RPL-COPY - PAGEABLE X IOBUF=(2000,240,12,,32,32)
I/O BUFFERS - FIXED (NP & PP BUF
=======================================================================
======================================================================= *
Logmode for independent LU6.2 sessions LU62APPC MODEENT
LOGMODE=LU62APPC,FMPROF=X'13',TSPROF=X'07', *
PRIPROT=X'B0',SECPROT=X'B0',COMPROT=X'50B1', *
TYPE=X'00',PSNDPAC=X'00',SRCVPAC=X'00',SSNDPAC=X'00', *
RUSIZES=X'8989',PSERVIC=X'060200000000000000002F00'
* Logmode for SNA Services Manager, used with Parallel Sessions SNASVCMG
MODEENT LOGMODE=SNASVCMG
CICS/390 Definitions
Revision Date: 15th December, 1998
Document Id: CA38 Page 36 of 47
Title: CICS for OS/2 - FAQ
========================================================================
Host CICS definitions (all host systems are the same)
========================================================================
Connection : WS02
Group : LYCCOSV
DEscription :
CONNECTION IDENTIFIERS
Netname : CIC40LU0
INDsys :
REMOTE ATTRIBUTES
REMOTESystem :
REMOTEName :
CONNECTION PROPERTIES
ACcessmethod : Vtam
Protocol : Appc
SInglesess : No
DAtastream : User
RECordformat : U
OPERATIONAL PROPERTIES
AUtoconnect : Yes
INService : Yes
SECURITY
SEcurityname :
ATtachsec : Local
BINDPassword :
BINDSecurity : No
Revision Date: 15th December, 1998
Document Id: CA38 Page 37 of 47
Title: CICS for OS/2 - FAQ
========================================================================
Sessions : COS2LYC
Group : LYCCOSV
DEscription :
SESSION IDENTIFIERS
Connection : WS02
SESSName :
NETnameq :
MOdename : LU62APPC
SESSION PROPERTIES
Protocol : Appc
MAximum : 004 , 001
RECEIVEPfx :
RECEIVECount :
SENDPfx :
SENDCount :
SENDSize : 04096
RECEIVESize : 04096
SESSPriority : 000
Transaction :
OPERATOR DEFAULTS
OPERId :
OPERPriority : 000
OPERRsl : 0
OPERSecurity : 1
PRESET SECURITY
USERId :
OPERATIONAL PROPERTIES
Autoconnect : All
INservice :
Buildchain : Yes
USERArealen : 000
IOarealen : 00000 , 00000
RELreq : No
DIscreq : Yes
NEPclass : 000
RECOVERY
RECOVOption : Sysdefault
RECOVNotify : None
========================================================================
CICS OS/2 Definitions WS02 (CICS gateway)
========================================================================
(The TCS entries only show significant details) TCS
========================================================================
Session count. . . . . . : 04
Session Buffer Size. . . : 04096
APPC Details
Mode name. . . . . . . . : LU62APPC
LU alias Name . . . . . : CIC40LU0
Partner LU alias . . . . : CICSU7
Attach security. . . . . : L
Partner Code Page. . . . : 00037
========================================================================
OS/2 CM definitions from WS02 NEWCICS.NDF
========================================================================
DEFINE_LOCAL_CP FQ_CP_NAME(USIBMSL.CICPU40 )
DESCRIPTION(Created on 08-27-92 at 09:12a)
CP_ALIAS(CICPU40 )
NAU_ADDRESS(INDEPENDENT_LU)
NODE_TYPE(EN)
NODE_ID(X'45509')
HOST_FP_SUPPORT(YES);
DEFINE_LOGICAL_LINK LINK_NAME(LINK001)
DESCRIPTION(Connection to MVS/ESA VTAM)
FQ_ADJACENT_CP_NAME(USIBMSL.CDRM01)
ADJACENT_NODE_TYPE(LEN)
DLC_NAME(IBMTRNET)
ADAPTER_NUMBER(0)
DESTINATION_ADDRESS(X'400001551043')
CP_CP_SESSION_SUPPORT(NO)
ACTIVATE_AT_STARTUP(NO)
SOLICIT_SSCP_SESSION(NO);
DEFINE_LOCAL_LU LU_NAME(CIC40LU0)
DESCRIPTION(Logical unit to CICS/ESA)
NAU_ADDRESS(INDEPENDENT_LU);
DEFINE_PARTNER_LU FQ_PARTNER_LU_NAME(USIBMSL.CICSU7 )
PARTNER_LU_ALIAS(CICSU7)
PARTNER_LU_UNINTERPRETED_NAME(CICSU7 )
MAX_MC_LL_SEND_SIZE(4096)
CONV_SECURITY_VERIFICATION(NO)
PARALLEL_SESSION_SUPPORT(YES);
DEFINE_PARTNER_LU_LOCATION FQ_PARTNER_LU_NAME(USIBMSL.CICSU7)
WILDCARD_ENTRY(NO)
FQ_OWNING_CP_NAME(USIBMSL.CDRM01)
LOCAL_NODE_NN_SERVER(NO);
Revision Date: 15th December, 1998
Document Id: CA38 Page 40 of 47
Title: CICS for OS/2 - FAQ
DEFINE_MODE MODE_NAME(LU62APPC)
DESCRIPTION(Created on 08-27-92 at 09:12a)
COS_NAME(#CONNECT)
DEFAULT_RU_SIZE(NO)
MAX_RU_SIZE_UPPER_BOUND(4096)
RECEIVE_PACING_WINDOW(4)
MAX_NEGOTIABLE_SESSION_LIMIT(10)
PLU_MODE_SESSION_LIMIT(4)
MIN_CONWINNERS_SOURCE(0);
DEFINE_DEFAULTS IMPLICIT_INBOUND_PLU_SUPPORT(NO)
DESCRIPTION(Created on 08-27-92 at 09:12a)
DEFAULT_MODE_NAME(BLANK)
MAX_MC_LL_SEND_SIZE(4096)
DIRECTORY_FOR_INBOUND_ATTACHES(*)
DEFAULT_TP_OPERATION(NONQUEUED_AM_STARTED)
DEFAULT_TP_PROGRAM_TYPE(BACKGROUND)
DEFAULT_TP_CONV_SECURITY_RQD(NO)
MAX_HELD_ALERTS(10);
DEFINE_TP TP_NAME(CPMI)
FILESPEC(D:\CICS300\RUNTIME\FAACLPIN.EXE)
PARM_STRING(CPMI)
CONVERSATION_TYPE(EITHER)
CONV_SECURITY_RQD(NO)
SYNC_LEVEL(EITHER)
TP_OPERATION(NONQUEUED_AM_STARTED)
PROGRAM_TYPE(BACKGROUND)
RECEIVE_ALLOCATE_TIMEOUT(INFINITE);
DEFINE_TP TP_NAME(CRSR)
FILESPEC(D:\CICS300\RUNTIME\FAACLPIN.EXE)
PARM_STRING(CRSR)
CONVERSATION_TYPE(EITHER)
CONV_SECURITY_RQD(NO)
SYNC_LEVEL(EITHER)
TP_OPERATION(NONQUEUED_AM_STARTED)
PROGRAM_TYPE(BACKGROUND)
RECEIVE_ALLOCATE_TIMEOUT(INFINITE);
START_ATTACH_MANAGER;
CNOS LOCAL_LU_ALIAS(CIC40LU0)
FQ_PARTNER_LU_NAME(USIBMSL.CICSU7)
MODE_NAME(LU62APPC)
SET_NEGOTIABLE(YES)
PLU_MODE_SESSION_LIMIT(4)
MIN_CONWINNERS_SOURCE(0)
MIN_CONWINNERS_TARGET(0)
AUTO_ACTIVATE(4);
Question
How do I get CICS for OS/2 and CICS/MVS to pass/accept security credentials from each other? I am currently
forced to explicitly sign-on to the target CICS region in order to issue transactions, following a CRTE, for all
transactions when going from OS/2 to MVS and for CEDA and other secured transactions when going from MVS
to OS/2. I receive a SECG when I try to function ship a WRITEQ TS from OS/2 to MVS.
I found in the manuals where it states that if attachsec = verify and Partner LU Conv Sec = Yes, then CICS will
ship USERID and PASSWORD with every ISC request (DPL, DPT, Function Ship, Transaction Route).
Is this true?
What will tell the target region to use the supplied credentials?
In all cases we CICS sign-on the source (local) region as administrator (as defined in the SNT) before attempting
any ISC trans. There is an SNT entry in both target and source regions for the ID that we are using. The customer
uses ACF/2 on the host as the security manager and I see no entries in the ACF/2 logs for our rejected request.
Answer
1. To have CICS OS/2 send userid and password then the TCS entry must specify V (for verify) - and - the
connection/sessions definition at the host must also specify Verify. The security definitions for inbound APPC
don't really matter since host CICS will always send the already verified flag along with userid and Communi-
cations Manager/2 does not do additional verification when that flag is on.
2. CRTE is a special case since it's purpose in life is to make things look like you were connected to the other
system - therefore, you must signon at the other system before access is allowed to secured
transactions/functions. CRTE between host systems works the same way.
Note: The Redbook "APPC Security: MVS/ESA, CICS/ESA, and OS/2" (GG24-3960) gives a very good
description of how security works in this environment.
Reference: CICS/ESA CICS-RACF Security Guide - SC33-0749-00 Chapter 3.1 Security in the intercommunication
environment. page 116 ff
The first level of security that can be imployed is the BINDPASSWORD. This is basically a "startup" time secu-
rity and does not play in any further activity - once we've established out link.
We now come to the "run time" security. Here is where we can limit the ability of the partner system to use our
resources (programs, transactions, files, and so on).
First we have LINK Security. We can establish a security profile (ie what is authorized) for the partner system as a
whole. This is defined by either the SECURITYNAME option on the CONNECTION definition or the USERID
field of the SESSIONS definitions.
Once I have defined the LINK security then I have set the outer bounds for what resources can be used... to use a
loose reference to set theory.
Revision Date: 15th December, 1998
Document Id: CA38 Page 42 of 47
Title: CICS for OS/2 - FAQ
Next - and WITHIN the bounds of the LINK Security - we may also restrict the remote user's access by requiring
security on incoming ALLOCATEs (ie FMH5). We do this via the ATTACHSEC parms. In effect, this is USER
security.
When using security over an LU6.2 connection, there is a "base" level of security access needed. This base level
defines what facilities that any request coming over the link can access.
What you need to do is to determine what all resources belong to the LINK domain (in your case) and define those
for the "LINK" userid.
The connection between host CICS and CICS OS/2 is treated (for security purposes) just like a connection between
two hosts - except that both sides know that Verify can be used.
The security required during communications with the remote system. There are two levels of security available:
L Use this value to indicate local security, i.e. no userid and password are passed to the host, and the
remote system will assume the user already has all authority needed. This is equivalent to the APPC
Allocate Security option of NONE.
Revision Date: 15th December, 1998
Document Id: CA38 Page 43 of 47
Title: CICS for OS/2 - FAQ
V Use this value to indicate verify level security, i.e. both userid and password are passed to the host, and
the remote system should sign the user on to verify his/her security. CICS OS/2 will use the Userid
and Password from the CICS OS/2 Sign On Table for this function. This is equivalent to the APPC
Allocate Security option of PGM (program).
The security defined in this profile describes if the "partner logical unit" is trusted. Typically, a "trusted" partner is
a system that provides both authority and authorization checking. In other words, by passing a Userid and Pass-
word verification, you provide proof of who you are when you sign-on to the system. In addition, by passing
additional checking when requesting specific functions (i.e. Transactions), you have the right to use such func-
tions. Thus, you can be considered as a trusted partner. This also implies, to some extent that the communications
connection to the other system is also trusted.
Determines whether security will be checked whenever a session is started, i.e. the two logical units are connected.
This is equivalent to the host CICS concept of bind time security. Specify YES if bind time security is required
and provide a password when prompted, ensuring that it matches that given to the partner system.
This will be either in this same field when defining the PARTNER LU ALIAS by which the partner knows this
system or, in the case of host CICS, the BINDPASSWORD field in the CONNECTION or LU6.2 Single Session
Terminal definition of this LU.
CONVERSATION SECURITY
Determines security level on every INCOMING ALLOCATE from the remote system defined by this profile.
Specify YES if a check of userid and password is required for every attempt to establish a conversation from a TP
on the remote system defined by this profile. An APPC conversation security profile will be required for each valid
userid/password combination both here and in the remote system, for example another OS/2 system. If the remote
system is host CICS, then do not specify YES here, as host CICS NEVER sends passwords and thus all attempts at
communication would be rejected - UNLESS "Conversation Security Verified" is also specified. As noted in the
initial reference, host CICS always sends a Userid, but never sends a pass- word. This is equivalent to the APPC
ALLOCATE Security option SAME. The SAME option includes the Userid and the Already Verified Flag in the
FMH5 (Attach Header).
This option indicates that OS/2 Communi- cations Manager is allowed to accept an incoming FMH5 containing a
Userid and the Already Verified Flag as being a secured request. NOTE: Conversation-level security verification is
always performed on those requests that include security information.
Revision Date: 15th December, 1998
Document Id: CA38 Page 44 of 47
Title: CICS for OS/2 - FAQ
CONVERSATION SECURITY
The security to apply to conversations involving this TP (program). If the TCS entry that defines this system to the
CICS OS/2 that was the originator of this attach request specifies an ATTACH SECURITY level of Verify then the
userid and password of the user on the originating system will be flowed and selecting YES for this field or the
Conversation Security fields of the relevant PARTNER LU PROFILES will enable security checking.
An APPC conversation security profile will be required in this system for each valid userid/password combination.
For host CICS (since a password is never sent), the YES option will also allow attach requests containing a Userid
and the Already Verified flag.
BINDPASSWORD
The password to be used for bind time security The password to be used (if any) for LU-LU session security.
ATTACHSEC
The level of attach-time user security required for the connection Specify Local for no security or Verify if CM has
been configured to send USERID and PASSWORD.
Also note that while CICS OS/2 will send userid and password, when the TCS entry specifies security, the host
CICS Attachsec option of Identify can also be used. However, the userid and password sent by CICS OS/2 will
still be validated. The advantage is that host CICS will check to see if that userid has already been validated, and if
so, will not revalidate the request. Please see the host CICS Inter-communications Guide described above.
Revision Date: 15th December, 1998
Document Id: CA38 Page 45 of 47
Title: CICS for OS/2 - FAQ
12.0 Languages
Question
CICS for OS/2 supports the C++ language for CICS application development using Object Oriented methods.
These methods - using class libraries to encapsulate function - allow greater re-use of code, which leads to
increased programmer productivity, program quality and maintainability.
CICS transactions can be written in the C++ language. This means that Object Oriented programs can now access
the CICS API.
This enhancement brings Customers the increased performance and flexibility of 32 bit CICS applications, plus the
benefits of Object Oriented development methods.
In addition to C++ support there is also a user exit (exit 27) available which enables multi-session debugging. This
facility allows a programmer to review and debug more than one programme concurrently. This is particularly
helpful for debugging client/server applications which use the External Call Interface (ECI), or EPI External Presen-
tation Interface (EPI), for communication between the front-end application on the client and the CICS application
on the server.
Revision Date: 15th December, 1998
Document Id: CA38 Page 46 of 47
Title: CICS for OS/2 - FAQ
13.0 PEM
Question
I am excited about this new way to interface with PEM at CICS ESA 3.3 without the need to code an APPC
unmapped interface. Since our customers are becoming more Client/Server oriented, the need to make this function
available without requiring a 3270 interface is important.
However, when I read the documentation for the new product (V 3.0), it appears that the new program FAASCPEM
was only designed to run at Exit 07 time. Is that true, or can I call this new interface from a regular CICS OS/2
application program running on the OS/2 server? This would give the needed flexibility to inspect information
from RACF and determine if the user (a Windows Client) needs to be notified and prompted for a new password.
Doing this from Exit 07 limits what can be done with the information returned.
I realize that this PEM Verify or Change Password request needs to go via an APPC link with Local Security.
Answer
The intent was to make the function callable from anywhere within CICS for OS/2.
Look at line 157 of the FAAEXP07.c sample.( Lots of useful bits on setting up the Pem control block in here)
CICSCallPEM(peib,&Pem);
So within a CICS application, you have the address of the EIB from EXEC CICS ADDRESS EIB(peib) and you
have the layout of Pem in faascpem.h...
Revision Date: 15th December, 1998
Document Id: CA38 Page 47 of 47
Title: CICS for OS/2 - FAQ
Question
Can CICS OS/2 support Structured Field sends to "Set the Reply mode"? I'd like to be able to set the mode to
obtain the extended color information when doing a read buffer command.
Answer
The CICS OS/2 terminal emulators do not support structured fields. This means that you can not use structured
fields to set the reply mode. The CICS OS/2 API also does not support the STRFIELD option on EXEC CICS
SEND or EXEC CICS CONVERSE, which the only way structured fields could be sent to the terminal emulators.
The highlight option does not affect the colour of the attribute position. It does affect both the foreground and
background colour of the text part of the field.
CICS OS/2 allows the terminal emulators to define a foreground and background colour for each logical 3270
foreground attribute colour.
The background colour *does* affect the attribute position. This is a deliberate slight deviation from the 3270
specification. This is done so that by defining a common background colour for all the 3270 foreground attribute
colours, then the background colour of the entire screen can be changed, without leaving ugly black squares for
each attribute position. We have customers who require non-black background screen colours. I believe Communi-
cation Manager terminals have the same characteristic.
Dark fields are the same colour as if the characters in the field were spaces. This allows some tricks such as using
Set attribute to paint a hidden field with character attribute highlighting. If this was a password field, then when
the user typed a password the character attributes which make the character position coloured are overwritten, and
that character position reverts to the colour given by the field attributes. The user can then easily see how many
characters have been typed. There has been some discussion as to whether dark fields should be the same colour as
the attribute byte (to make them truly hidden). This would prohibit the password field technique. A black colour
for a dark field would not be desirable for the same reasons as for background colour above.
The best references for native 3270 datastream operation is "3270 Data Stream Programmers Reference",
GA23-0059, and CICS OS/2 Application Programming, 65G1540 in the External Presentation Interface (EPI)
section. CICS OS/2 is using an ASCII version of the 3270 datastream. I would recommend using DFHBMSCA
values of constants, rather than hex representations, to make your CICS programs more portable.
Sending your comments to IBM
CICS for OS/2 - Frequently Asked Questions
Version 1.1
CA38
If you especially like or dislike anything about this book, please use one of the methods listed below to
send your comments to IBM.
Feel free to comment on what you regard as specific errors or omissions, and on the accuracy, organiza-
tion, subject matter, or completeness of this book. Please limit your comments to the information in this
book and the way in which the information is presented.
To request additional publications, or to ask questions or make comments about the functions of IBM
products or systems, you should talk to your IBM representative or to your IBM authorized remarketer.
When you send comments to IBM, you grant IBM a nonexclusive right to use or distribute your comments
in any way it believes appropriate, without incurring any obligation to you.
You can send your comments to IBM in any of the following ways:
¹ By mail, use the Readers’ Comment Form.
¹ By fax:
– From outside the U.K., after your international access code use 44 1962 841409
– From within the U.K., use 01962 841409
¹ Electronically, use the appropriate network ID:
– IBMLink: IBMGB(TSCC)
– Internet: [email protected]
Whichever you use, ensure that you include:
¹ The publication number and title
¹ The page number or topic to which your comment applies
¹ Your name and address/telephone number/fax number/network ID.
Readers’ Comments
CICS for OS/2 - Frequently Asked Questions
Version 1.1
CA38
Use this form to tell us what you think about this manual. If you have found errors in it, or if you want
to express your opinion about it (such as organization, subject matter, appearance) or make
suggestions for improvement, this is the form to use.
To request additional publications, or to ask questions or make comments about the functions of IBM
products or systems, you should talk to your IBM representative or to your IBM authorized remarketer.
This form is provided for comments about the information in this manual and the way it is presented.
When you send comments to IBM, you grant IBM a nonexclusive right to use or distribute your
comments in any way it believes appropriate without incurring any obligation to you.
Be sure to print your name and address below if you would like a reply.
Name Address
Company or Organization
Telephone Email
CICS for OS/2 - FAQ
CA38
ÉÂÔ