Outline IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ O Product overview O News update from IBM COBOL development O Migration overview O Planning for Migration O Benefits of Migration O Preparation for Migration O Using the new run time O Testing your applications O Moving LE into production O COBOL source conversion O Year 2000 O Technical Advantages of LE/370 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 1 Product packaging IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ | | | | | | | | | | | | | | | | | | | Obsolete/Stabilized products| ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| | | | | | | | | ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ OS/VS COBOL ³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Compiler ³ ³ VS COBOL II ³ …ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄŽ ³ Compiler ³ ³ OS/VS COBOL ³ …ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄŽ ³ Library ³ ³ VS COBOL II ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ Library ³ (5740ÄCB1) …ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄŽ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ COBTEST debug ³ ³ TESTCOB debug ³ ³ tool ³ ³ tool ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ VS COBOL II (5734ÄCB1) compiler, library, and debug (5688Ä958) ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 2 Product relationships IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ | | | | | | | | | | | | | | | | | | | Strategic Products| ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| | | | | | | | | ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ COBOL/370 ³ ³ COBOL for MVS & VM ³ ³ Compiler ³ ³ Release 2 Compiler ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ …ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄŽ (5688Ä197) ³ IBM Debug Tool ³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ (Release 2 w/PTFs) ³ ³ LE/370 ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ Library ³ (5688Ä197) ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ (5688Ä198) ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Language Environment ³ ³ CODE/370 ³ ³ for MVS & VM (LE) ³ ³ debug tool ³ ³ Library ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ (5688Ä194) (5688Ä198) ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 3 COBOL run times - a History IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ | | | | | | | | | | | | | | | | | | | Obsolete/Stabilized run-time libraries| ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| | | | | | | | | ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ VS COBOL II ³ ³ Programs ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ OS/VS COBOL ³ ³ OS/VS COBOL ³ ³ Programs ³ ³ Programs ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Assembler ³ ³ Assembler ³ ³ Programs ³ ³ Programs ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ OS/VS COBOL VS COBOL II runÄtime library runÄtime library ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 4 COBOL run times - a History IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ | | | | | | | | | | | | | | | | | | | Strategic Run-time libraries| ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| | | | | | | | | ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ COBOL for ³ ³ MVS & VM ³ ³ Programs ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ COBOL/370 ³ ³ COBOL/370 ³ ³ Programs ³ ³ Programs ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ VS COBOL II ³ ³ VS COBOL II ³ ³ Programs ³ ³ Programs ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ OS/VS COBOL ³ ³ OS/VS COBOL ³ ³ Programs ³ ³ Programs ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Assembler ³ ³ Assembler ³ ³ Programs ³ ³ Programs ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÙ LE/370 Release 3 Language Environment and Release 4 (LE) for MVS & VM runÄtime library Release 5 runÄtime library ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 5 Language Environment - complete picture IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ | | | | | | | | | | | | | | | | | | | All of the programs supported by LE R5| ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| | | | | | | | | ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ ÚÄÄÄÄÄÄÄÄÄÄÄ¿ÚÄÄÄÄÄÄÄÄ¿ÚÄÄÄÄÄÄÄÄÄÄÄ¿ ³COBOL for ³³C/C++ ³³PL/I for ³ ³ MVS & VM ³³MVS/ESA ³³ MVS & VM ³ ³ Programs ³³Programs³³(Multitask ³ ÀÄÄÄÄÄÄÄÄÄÄÄÙÀÄÄÄÄÄÄÄÄÙ³ Programs) ³ ÀÄÄÄÄÄÄÄÄÄÄÄÙ ÚÄÄÄÄÄÄÄÄÄ¿ÚÄÄÄÄÄÄÄÄÄÄÄ¿ÚÄÄÄÄÄÄÄÄ¿ÚÄÄÄÄÄÄÄÄÄÄÄ¿ ³LEÄconfrm³³ AD/Cycle ³³AD/Cycle³³AD/Cycle ³ ³Assembler³³ COBOL/370 ³³C/370 ³³PL/I MVS/VM³ ³ Programs³³ Programs ³³Programs³³Programs ³ ÀÄÄÄÄÄÄÄÄÄÙÀÄÄÄÄÄÄÄÄÄÄÄÙÀÄÄÄÄÄÄÄÄÙÀÄÄÄÄÄÄÄÄÄÄÄÙ ÚÄÄÄÄÄÄÄÄÄÄÄ¿ÚÄÄÄÄÄÄÄÄ¿ÚÄÄÄÄÄÄÄÄÄÄÄ¿ÚÄÄÄÄÄÄÄÄÄ¿ ³VS COBOL II³³C/370 ³³OS PL/I ³³VS ³ ³ Programs ³³Ver. 2 ³³Version 2 ³³FORTRAN ³ ³ R3 and R4 ³³Programs³³ Programs ³³V1 and V2³ ÀÄÄÄÄÄÄÄÄÄÄÄÙÀÄÄÄÄÄÄÄÄÙ³(any rel.) ³³Programs ³ ÀÄÄÄÄÄÄÄÄÄÄÄÙÀÄÄÄÄÄÄÄÄÄÙ ÚÄÄÄÄÄÄÄÄ¿ÚÄÄÄÄÄÄÄÄÄÄÄ¿ÚÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄ¿³C/370 ³³OS PL/I V1 ³³OS ³ ÚÄÄÄÄÄÄÄÄÄ¿³OS/VS COBOL³³Ver. 1 ³³R3 (object)³³FORTRAN ³ ³Assembler³³ Programs ³³Programs³³R4 or later³³G and H ³ ³ Programs³³ (Rel 2.4) ³³(Rel. 2)³³load or obj³³Programs ³ ÀÄÄÄÄÄÄÄÄÄÙÀÄÄÄÄÄÄÄÄÄÄÄÙÀÄÄÄÄÄÄÄÄÙÀÄÄÄÄÄÄÄÄÄÄÄÙÀÄÄÄÄÄÄÄÄÄÙ Assembler COBOL C PL/I FORTRAN ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 6 News update IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -> Available in October, 1995: O A new release of COBOL/370: * IBM COBOL for MVS & VM Release 2 (5688-197) O IBM COBOL for workstations: * IBM VisualAge for COBOL for OS/2 (5622-793) * IBM COBOL Set for AIX (5765-548) -> Available in September, 1995: O A new release of LE/370: * IBM Language Environment for MVS & VM Release 5 (5688-198) -> Available in March 1995: O A replacement for VS COBOL II and DOS/VS COBOL: * COBOL for VSE and LE for VSE * PL/I too! -> Announced in October 1994: O A tool to help you migrate! * EDGE Portfolio Analyzer tool (5633-009) * Ask IBM to use option 3 "Software Ordering Information" in the HONE system ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 7 News update IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -> VSAM control blocks above the line * VSAM buffers already above for XA/ESA systems * VS COBOL II Release 4 - APAR PN72097 * LE/370 Release 3 and 4 - APAR PN72983 * In base LE Release 5 product * Solved a unique(?) customer problem, helps everyone -> COBPACK serviceability APAR for VS COBOL II R4 and LE/370 * VS COBOL II Release 4 - APAR PN59231 * In base LE/370 Release 4 product * Many customers APPLY maintenance without ACCEPTing it * Before this new procedure, rebuilding COBPACK used modules from distribution libraries only * Allows rebuilding of COBPACKs without losing temp fixes by using modules from target libraries ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 8 Migration news IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -> COBOL for MVS & VM Release 2 programs will NOT run on LE R4 * LE for MVS & VM Release 4 books say they will * You must migrate to LE for MVS & VM Release 5 before you can use the COBOL for MVS & VM Release 2 compiler -> COBOL for MVS & VM Release 2 has 15 new reserved words: * CLASS-ID END-INVOKE INHERITS INVOKE * LOCAL-STORAGE METACLASS METHOD * METHOD-ID OBJECT OVERRIDE RECURSIVE * REPOSITORY RETURNING SELF SUPER -> APAR PN71388 for COBOL/370 provides an alternate reserved word table for Release 1 that will flag Release 2 reserved words with an informational message. -> COBOL for MVS & VM Release 2 will provide an alternate reserved word table for users who don't need the new function, and want compatibility with VS COBOL II reserved words. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 9 Migration overview IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -> Plan, plan, plan -> Communicate with management and users -> Migrate runtime first, then upgrade source -> Use old compiler until new run time in production -> Migrate in test environment first -> Regression test...why? * Your code * Our code * Their code -> Migrate tested applications to production environment ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 10 Migration overview IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ | | | | | | | | | | | | | | | | | | | Everything you need to know!| ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| | | | | | | | | ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ -> Migration publications * IBM COBOL Compiler and Run-Time Migration Guide (GC26-4764) * IBM PL/I Compiler and Run-Time Migration Guide (SC26-3118) * IBM C/C++ for MVS/ESA Compiler and Run-Time Migration (SC09-2002) * IBM Language Environment for OS/390 & VM Run-Time Migration (SC26-8232) * Call (800)879-2755 to order IBM publications -> Other resources * COBOL CFORUM (Available though TALKLINK of IBMLINK) * http://www.software.ibm.com/ad/cobol/cobol.htm ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 11 Migration overview IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -> Rex Widmer's fundamental rules for migration 1. The run-time package must be at a product and maintenance level equal to, or later than, any compiled code which is executed under the run-time package. 2. All dynamic run-time package components must be at a product and maintenance level equal to, or later than linked-in run-time components which are executed under the run-time package. -> Your migration plan may have long term effects. Example: * If you have all NORES now and you install LE/370 in LINKLST/LPA * Every relink will mean a newly migrated application * NORES behavior to RES behavior without recompile * Migration could still be going on in 10 years! -> I recommend planning to get it all done with the same technical staff available for problems within as short a period as possible ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 12 Planning for migration IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -> Are you ready for LE/370? O MVS/ESA V3.1.3 or later (or VM/ESA) O If CICS, then must be CICS V3.3 or later ____ * no CICS required if you don't use it! O NO macro-level CICS applications * could take a while to convert, don't need to buy LE/370 until you have converted to Command-level O Other products may need to be updated * TCP/IP 3.1, BookManager 1.3, OfficeVision/MVS 1.3, Netview 3.1 O Run-time migration, source conversion -> Are your vendors ready? * Vendor Interface document on MKTTOOLS - (LEVNDRST PACKAGE) * Help us out, call your vendors! We have... * If your vendor has not heard the word - Ask them to fax their request for info to (914)435-1752 - Fax us the company name, product name, and phone number ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 13 Planning for migration IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1. Develop a cost/benefit analysis - Include YEAR 2000, client-server, OO in your benefit - See "Technical Advantages of LE/370" 2. Take inventory of your COBOL development tools 3. Assess requirements of new software - Prerequisite product levels - Compatibility with vendor products - Compatibility with IBM products 4. Take inventory of existing applications 5. Assess migration effort for each application 6. Schedule training for programmers ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 14 Planning for migration IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ | | | | | | | | | | | | | | | | | | | Migration and Year 2000 conversion| ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| | | | | | | | | ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ * Share the same process, and most of the same steps -> Planning -> Inventory -> Ownership -> Status -> (Source conversion/Year2000 changes) -> Compile, link -> Unit Test -> System Test * Combine and save money and time! ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 15 Planning for migration IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ | | | | | | | | | | | | | | | | | | | What could go wrong without planning? | ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| | | | | | | | | ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| O Improper setup -> One large customer installed LE R3 with default storage options and started running out of storage in IMS region when running a high volume of transactions * Even after fixing it in test, failed to move change to production * The storage defaults were changed in LE R4 -> One customer noticed a big performance hit when using TRUNC(BIN), problem was solved by using TRUNC(OPT). * TRUNC(BIN) should never be the default option O Incomplete investigation into vendor products -> One customer thought they were all ready to go to LE Release 3, but when they started testing they found that TCP/IP Version 2 does not run with LE, so they had to start migrating to TCP/IP Version 3 Release 1. * TCP/IP Version 2 was trying to dynamically access the C Version 1 library. TCP/IP Version 3 runs with either C Version 1, Version 2, or LE. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 16 Benefits of migration IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ | | | | | | | | | | | | | | | | | | | What do you get with COBOL/370? | ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| | | | | | | | | ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| O See "Technical Advantages of LE/370" * In back of handouts O For OS/VS COBOL users, * 31-bit capability * Much improved CICS interface * Structured programming constructs * Hex literals, reference modification * Re-entrant programs ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 17 Benefits of migration IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ | | | | | | | | | | | | | | | | | | | What do you get with COBOL/370? | ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| | | | | | | | | ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| O For ALL COBOL users ___ -> The base for Object-Oriented COBOL _______________ -> The base for Client-Server using COBOL _____________ -> Any future performance improvements -> New! OPTIMIZE(FULL) feature ______________ -> New! RMODE option for NORENT above the line -> Condition handling for entire application using COBOL programs -> All I/O buffers above the line -> Full data striping support (DFSMS) -> Improved ILC performance -> Intrinsic Functions * Including date functions that return 4-digit year dates ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 18 Preparation for migration IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ | | | | | | | | | | | | | | | | | | | Take inventory of your applications | ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| | | | | | | | | ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| O COBOL runtime currently in use O COBOL runtime options used * LIBKEEP? RTEREUS? O COBOL compiler options used * RES? TRUNC? NUMPROC? CMPR2? O COBOL source level 68, 74, 85, ? O EDGE Portfolio Analyzer looks at load modules O What, if any, will need to be re-linked? -> For COBOL-PL/I ILC, start relinking before migration * See PL/I migration aid (in PL/I Migration Guide) -> EDGE tool can tell you what needs to be linked * EDGE tool can build JCL to do relinking automatically ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 19 Inventory continued IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ | | | | | | | | | | | | | | | | | | | The most difficult migrations | ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| | | | | | | | | ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| -> OS/VS COBOL NORES programs that use assembler with SVC LINK for "CALLing" subprograms * SVC LINK creates new enclave, OS/VS under LE/370 must be single enclave in non-CICS -> Any applications that do their own program management with assembler or have assembler programs that use high order bits -> Any applications that have assembler programs that use high order bits of registers -> Shops that use exits on the DCB EXLST for label processing * VS COBOL II and COBOL/370 use them all -> Any shop using modified ILBO* modules -> Applications that set SPIEs or STAEs and trap abends * Must migrate to LE condition handling * We have some relief for VS COBOL II programs that use SPIE under LE, as long as SPIE is RESET after application code -> OS/VS COBOL ILC with PL/I * Must upgrade COBOL before migrating to Language Environment ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 20 Using the new runtime IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -> Set up LE/370 for COBOL users If moving from VS COBOL II runtime: O Install CEEBX05A sample user exit * Instructions in LE Installation manual * Use CEEBX05A in place of CEEBXITA For all COBOL users, set default options: * ABTERMENC(ABEND) * CBLQDA(OFF) * TERMTHDACT(ABEND) -> For COBOL ILC, start relinking now -> For OS/VS COBOL with ESTAE exits, start source conversion -> For mixed-language shop, no COBOL ILC: For a COBOL-only migration O Install PL/I and C ahead of LE/370 in concatenation ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 21 Setting up LE/370 IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ | | | | | | | | | | | | | | | | | | | Recommended options for all languages:| ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| | | | | | | | | ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ O ABTERMENC(ABEND) Default is RETCODE O ALL31(OFF) (ON) if all migrated or on CICS O CBLOPTS(ON) O CBLQDA(OFF) Default is ON O CHECK(ON) maps to SSRANGE of VS COBOL II O NODEBUG USE FOR DEBUGGING O RPTOPTS(OFF) O RPTSTG(OFF) O RTEREUS(OFF) RTEREUS can have nasty side affects! O STORAGE(NONE,NONE,NONE,8K) * if no uninitialized variables O STORAGE(00,NONE,NONE,8K) * will zero out WORKING-STORAGE variables (X'00') O NOTEST O TERMTHDACT(DUMP) Default is TRACE * or TERMTHDACT(UADUMP) For SYSUDUMPs ÚÄÄÄÄÄÄÄÄÄ¿ | | | | | | | | | | | | | | | | | | | TRAP(ON)| ÀÄÄÄÄÄÄÄÄÄ| | | | | ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 22 Setting up LE/370 IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ | | | | | | | | ÄÄÄÄÄÄÄÄÄÄÅÄ -> TRAP(OFF) is only for diagnosis purposes ________________________________________ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 22 Setting up LE/370 /Notes IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ALL31(ON) is correct for OS/VS COBOL in CICS because OS/VS programs running in CICS do not bring up the LE/370 environment. Only the VS COBOL II and COBOL/370 programs will be using LE/370. run in LE/370. COBOL uses no STACK storage and a less HEAP than C or PL/I. Working-Storage comes out of HEAP storage. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 22-1 Testing your applications IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -> Test every vendor product and package first -> Test a cross section of your applications * You shouldn't have to test every application * Test the difficult applications * Definitely test the critical applications * Test error conditions too: next foil -> Test in CICS, IMS/DC, DB2 -> Try to re-create actual production use -> Use an entire system if possible -> Use Omegamon to zap LE into LINKLST for testing ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 23 Testing your applications IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -> Test missing DD statements for the following: * DISPLAY and ACCEPT * QSAM file - OPENed for OUTPUT and for INPUT * VSAM file - OPENed for OUTPUT, for INPUT, and for I-O -> Test PARM= string/ PROCEDURE DIVISION USING: * Containing no '/' characters * Containing a date - 08/16/95 -> CALL 'user-abend-subroutine' * Your own * ILBOABN0 * IGZEABN - believe it or not! ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 24 Testing your applications IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -> Test behavior of QSAM input and output files when an I/O error is encountered and no FILE STATUS checking is performed -> Test behavior of outputting more records than can be accommodated by the file allocation for a QSAM file with no FILE STATUS checking -> Test fixed file attribute conflicts between file label, DD statement, and FD for OPEN OUTPUT -> Test behavior of ADDing +1 to a USAGE DISPLAY signed and unsigned field containing blanks -> Test behavior of ADDing +1 to a PICTURE S999 COMPUTATIONAL data item that contains +999 -> Test behavior of DIVISION by zero, for all data types, with no ON OVERFLOW clause -> Test behavior of MOVEing a USAGE DISPLAY signed and unsigned to a similar field if the sending field contains blanks ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 25 Testing your applications IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -> A suite of testcases covering this list of scenarios can be constructed with perhaps 15 or 20 source programs. -> In many cases, a single relatively simple test program can be used for several of the scenarios: O This can be done via JCL changes * Omitting a DD statement * Coding a conflicting DCB parameter on the DD * Coding a very small amount of primary file SPACE and no secondary SPACE -> In handouts from Rex Widmer GUIDE pitch, there is an example that can be used for multiple scenarios via changing the PARM = value ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 26 Moving LE/370 into production IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -> Install target depends on what languages are used * LINKLST or LPA only when everything runs under LE/370 -> STEPLIB for old applications that will not run under LE/370 * Complete the migration or re-write later -> STEPLIB provides maximum control with worst performance * Customer feedback says STEPLIB noticeably slower -> One IMS region at a time -> One CICS region at a time ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 27 Moving LE/370 into production IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -> Possible scenarios for controlled migration O Batch1: * Newly migrated applications STEPLIB to LE/370 * Deferred applications STEPLIB to old runtime * At a given point change from old runtime to new in LPA/LINKLST * Start deleting STEPLIB for migrated applications O Batch2: * Change all applications to STEPLIB to current runtime * Install LE/370 in LPA/LINKLST * Deferred applications STEPLIB to old runtime * Delete STEPLIB to migrate each application ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 28 Moving LE/370 into production IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -> Scenario for controlled migration O Online (either IMS/DC or CICS): * Create new region that uses LE/370 * Move transaction by transaction from old region to new * When all transactions moved, delete the old region O Online (TSO): * Use TSOLIB command to set up dynamic steplib concatenation (must be TSO/E 2.5 or later) * Under ISPF add LE to the ISPLLIB concatenation * If you can control the logon proc, put a STEPLIB there ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 29 COBOL source conversion IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -> OldBOL to NewBOL * OS/VS COBOL had LOTS of undocumented extensions -> 85 Standard or 97 Standard COBOL? * We can't wait until 1997 for OO COBOL! * We will also support the new standard when approved ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿ | | | | | | | | | | | | | | | | | | | Use tools!| ÀÄÄÄÄÄÄÄÄÄÄÄÄ| | | | | | | | | ÄÄÄÄÄÄÄÄÄÄÄÄÅÄ -> IBM COBOL Conversion Aid is bigger and better * Known as CCCA - 5785-ABJ * Over 80 user requirements added in Release 2 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 30 COBOL/370 compiler options IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ O NUMPROC(MIG) * Should be default for most shops * Closest to OS/VS COBOL sign processing O TRUNC(OPT) * Should be default for most shops * We have changed our recommendation for CICS and DB2 * OS/VS COBOL NOTRUNC actually did truncate in some cases * TRUNC(BIN) only for specific programs O OPT(FULL) * Don't use for programs with flags in WORKING-STORAGE unless you add references to them * The following example shows how to code a PROCEDURE DIVISION reference that will keep BEG-MARKER from being deleted, but will not add any executable code to the object program: -> The IF can never be true so the optimizer deletes the whole statement! ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 77 BEGÄMARKER PIC X(20) VALUE "BEGINNING OF WÄS". ... ... IF BEGÄMARKER NOT EQUAL BEGÄMARKER THEN DISPLAY BEGÄMARKER. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 31 COBOL/370 compiler options IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -> If currently OS/VS COBOL using TRUNC as default or VS COBOL II using TRUNC(STD) as default: * Use TRUNC(STD) as the default under COBOL/370 or COBOL for MVS & VM. * They are identical! -> If currently OS/VS COBOL using NOTRUNC as default: * Use TRUNC(OPT) as the default under COBOL/370 or COBOL for MVS & VM. * They are very similar. -> If currently VS COBOL II Release 2 using NOTRUNC as default: * Use TRUNC(OPT) as the default under COBOL/370 or COBOL for MVS & VM. * They are identical! -> TRUNC(BIN) should NOT be used as a default option * It is TOO SLOW! -> TRUNC(BIN) should be used only for select programs that require guaranteed non-truncation of binary data. * This is particularly true if there is a possibility that data being moved into BINARY data items can have a value larger than that defined by the PICTURE clause for the BINARY item. * Example is PIC 9(7).9(2) that will have values bigger than 9,999,999.99 * With TRUNC(BIN) it can hold up to 16,777,215.99 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 32 Adding new COBOL to old COBOL apps IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ | | | | | | | | | | | | | | | | | | | How to change just one program, such as a date routine, | | to COBOL/370 in an OS/VS COBOL application | ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| | | | | | | | | ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| -> A little about AMODE/RMODE * OS/VS programs are all RMODE=24 AMODE=24 * COBOL/370 programs can be RMODE=24 or RMODE=ANY * COBOL/370 programs are all AMODE=31 -> Are you ready for the 16meg line? -> Keep all data below the line until all source migrated * If RENT, then DATA(24) * If NORENT, RMODE(24) or RMODE(AUTO) -> I recommend migrating bottom subroutines first -> Old COBOL calling new COBOL is safer than new calling old -> Dynamic call is safer than static, mode switching * Can't enter an OS/VS COBOL program with AMODE=31! * Get IKF995I ILBONTR AMODE ERROR. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 33 Adding new COBOL to old COBOL apps IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Example: new calling old. All calls DYNAMIC NORENT RENT, RENT, RMODE(ANY) DATA(31) DATA(24) ÚÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄ¿ ³COB/370…ÄÄÄÄ>³COB/370…ÄÄÄÄÄ>³COB/370…ÄÄÄ¿ ³ P1 ³ ³ P3 ³ ÚÄÄ>³ P5 ³ ³ …ÄÄÄÄÄÄÄŽ ÀÄÄÄÄľÄÙ ³ ÀÄÄÄÄľÄÙ ³ ³P1 DATA³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÙ ³ ³ ³ ³ ÚÄÄÄÄÄÊÄ¿ ³ ³ ³ ³P3 DATA³ ³ ³ ³ ÀÄÄÄÄÄÄÄÙ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ 16 Meg Line ³ ³ ³ Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä Ä³Ä Ä Ä Ä Ä³Ä Ä Ä³Ä Ä Ä Ä Ä ³ ³ ³ ÚÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄ¿ ³ ³ ÀÄÄ>ÚÄÄÄÄÄÄÄ¿ ³ OS/VS …ÄÄÄÄ>³COB/370…ÄÄÙ ³ ³ OS/VS ³ ³ P2 ³ ³ P4 ³ ³ ³ P6 ³ …ÄÄÄÄÄÄÄŽ …ÄÄÄÄÄÄÄŽ ÚÄÄÄÄÄÊÄ¿ …ÄÄÄÄÄÄÄŽ ³P2 DATA³ ³P4 DATA³ ³P5 DATA³ ³P6 DATA³ ÀÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÙ NORENT, RMODE(AUTO³24) ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 34 Adding new COBOL to old COBOL apps /Notes IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ The only CALLs that may have problems are from the RENT,DATA(31) programs calling OS/VS or NORENT (VS COBOL II). If they pass parms, then blam! Same problems if you replace the OS/VS COBOL with COBOL/370 or VS COBOL II w/DATA(24). ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 34-1 Hints and Tips IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -> Extremely short on-line transactions may have dramatic difference in performance. * Especially when coming from NORES environment * You may have to redesign if this is a problem -> Installation customization macros require SYS1.MACLIB -> Do not use default options without verifying that they are correct for your shop! * Too many options, and too many different requirements from customers * No way to have "One set fits all" -> Keep your language products up to date on service as much as possible * IBM only tests with recent levels and * Down-level language migrations are harder * Example: VS COBOL II Release 4 base = VS COBOL II Release 3.2 at latest maintenance level -> Keep control of your language products usage * Do not allow programmers to chose what release, what maintenance level, or you will end up with a nightmare of products ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 35 What is the "YEAR 2000" problem? IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 2-digit year data is the problem O On 1/1/2000, the current year will be less than the previous year * Date field has only the last 2 digits of year * 00 is NOT greater than 99 O Depending on the coding technique, you might not be able to tell that a customer had turned 18, or whether a balloon payment is due! O Many businesses are experiencing problems already, as the turn of the century approaches O There is no way to get 4-digit year dates using OS/VS COBOL or VS COBOL II ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 36 The "YEAR 2000" problem IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -> There is no way to avoid the pain of changing databases and applications to use 4-digit year dates. * IBM does provide a short-term solution but it is inevitable that you must use 4-digit years at some point in the future. -> There are 3 ways to solve the problem using COBOL/370 and/or LE/370. -> Our short term solution is the 'century window' feature of LE/370 * Allows 2-digit years to be interpreted in a 100-year window -> IBM provides 2 long-term solutions. One is to use COBOL/370 Intrinsic Functions and the other is to use LE/370 callable services. Both of these methods return 4-digit year dates. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 37 Long-term solution IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ O You must eventually: ____ 1. Re-write applications * Use Intrinsic Functions to get 4-digit year dates OR * Use LE/370 callable services to get 4-digit year dates 2. AND Rebuild databases with 4-digit years O The above are the long-term solutions that will take you and your company through to the year 9999 O However, there is a short-term solution that is easier ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 38 Short-term solution IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Q: What if I can't change all my applications and data before 2000? A: Use the LE/370 century window in old applications to interpret 2-digit year dates as 4-digit year dates O Advantages: Change only a few programs, no database change Cheaper, quicker, easier O Disadvantages: This only buys you a few years, depending on the application You still must change all date programs and databases eventually ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 39 Short-term solution IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Q: Why can't I user the century window forever? A: It is a mathematical fact that a 2-digit year can only be unique in a given 100-year period. Over time you will need more than a 100 years for your data window - in fact, many companies need more than 100 years now! The reason that the century window buys you time is that you know in any given application whether you are trying to figure out how old someone is (the date is in the past) or whether a due date has been reached (the date is in the future). There are limitations. For example, the century window cannot solve the problem of trying to figure out how old a customer is if the customer is older than 100 years and you only have 2-digit year dates! For this problem and others you need COBOL/370 Intrinsic Functions or LE/370 date services. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 40 LE/370 century window and old COBOL IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Q: Can I call LE/370 services from OS/VS COBOL programs? A: No, programs that need to call LE/370 callable services must be VS COBOL II or COBOL/370 programs Q: How do I solve the YEAR 2000 problem in old applications? A: Use the century window feature of LE/370: 1. Run your existing load modules under LE/370 2. Upgrade date routines to COBOL/370 (or use dynamic CALLs from VS COBOL II programs) 3. Use century window of LE/370 to interpret 2-digit years: O CALL "CEECBLDY" USING input-date PICSTR LILIAN FC. O Results in an integer representation 4. Use Intrinsic Functions to obtain 4-digit year O DATE-OF-INTEGER gives YYYYMMDD O DAY-OF-INTEGER gives YYYYDDD See example MAIN that calls SUBRTN ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 41 COBOL example MAIN IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ID DIVISION. PROGRAMÄID. MAIN. ENVIRONMENT DIVISION. CONFIGURATION SECTION. INPUTÄOUTPUT SECTION. FILEÄCONTROL. SELECT RUNDATA ASSIGN TO SYSINÄSÄFILE1DD FILE STATUS IS RUNDATAÄFS. DATA DIVISION. FILE SECTION. FD RUNDATA. 01 WORKÄRECORD. 03 CUSTÄNAME. 05 FIRSTÄNAME PIC X(10). 05 LASTÄNAME PIC X(15). 03 BIRTHÄDATE PIC X(10). 03 ACCOUNTÄNUM PIC 9(8). 03 CURRENTÄAGE PIC 999. 03 DUEÄDATE PIC X(10). 03 BENNYÄFACTOR PIC 9(3) COMPÄ3. 03 ADJUSTMENT PIC 9(3) COMPÄ3. 03 PAYOUT PIC S9(7) COMPÄ3. 03 PIC X(20). WORKINGÄSTORAGE SECTION. 01 RUNDATAÄFS PIC 99. 77 EOFÄIND PIC X. 88 EOF VALUE "Y". 88 NOTÄEOF VALUE "N". ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 42 COBOL example MAIN IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ PROCEDURE DIVISION. OPENIT. OPEN INPUT RUNDATA. IF RUNDATAÄFS NOT EQUAL TO 0 DISPLAY "** ERROR ** " "CAN'T OPEN RUNDATA FILE **" ELSE SET NOTÄEOF TO TRUE PERFORM LOOP CLOSE RUNDATA ENDÄIF STOP RUN LOOP. PERFORM UNTIL EOF READ RUNDATA AT END SET EOF TO TRUE NOT AT END CALL "SUBRTN" USING WORKÄRECORD ENDÄREAD ENDÄPERFORM. END PROGRAM MAIN. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 43 COBOL example SUBRTN IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ID DIVISION. PROGRAMÄID. SUBRTN. DATA DIVISION. ************************************************** * IMPORTANT NOTE!!! * ************************************************** * This sample requires the compiler option * * INTDATE(LILIAN). To get this sample to work * * with INTDATE(ANSI), change all the references * * of CEEDAYS to CEECBLDY. * ************************************************** ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 44 COBOL example SUBRTN IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ WORKINGÄSTORAGE SECTION. 01 CURRÄDATE. 05 CURRÄYEAR PIC 9(4). 05 CURRÄMONTH PIC 99. 05 CURRÄDAY PIC 99. 77 YEARSÄLEFT PIC 9(4). ************************************************* * Parameters for CEEDAYS and CEESCEN * ************************************************* 01 PICSTR. 05 PICSTRÄLENGTH PIC 9(2) COMP VALUE 8. 05 PICSTRÄSTRING PIC X(50) VALUE "MM/DD/YY". 77 LILIAN PIC 9(9) COMP. 77 STARTÄCW PIC 9(9) COMP. 77 FC PIC X(12). ************************************************* * Working Storage for DATEÄOFÄINTEGER * ************************************************* 01 4ÄDIGITÄDATE PIC 9(8). 01 4ÄDIGITÄREDEFINED REDEFINES 4ÄDIGITÄDATE. 05 YYYY PIC 9(4). 05 MM PIC 9(2). 05 DD PIC 9(2). ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 45 COBOL example SUBRTN IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ LINKAGE SECTION. ************************************************* * Linkage Section description of the record * * that is read by MAIN, and shared by SUB. * * Note that BIRTHÄDATE and DUEÄDATE * * are expanded to show formats. * ************************************************* 01 WORKÄRECORD. 03 CUSTÄNAME. 05 FIRSTÄNAME PIC X(10). 05 LASTÄNAME PIC X(15). 03 BIRTHÄDATE. 05 PIC 9(4) COMP. 05 BMONTH PIC 99. 05 PIC X. 05 BDAY PIC 99. 05 PIC X. 05 BYEAR PIC 99. 03 ACCOUNTÄNUM PIC 9(8). 03 CURRENTÄAGE PIC 999. 03 DUEÄDATE. 05 PIC 9(4) COMP. 05 DMONTH PIC 99. 05 PIC X. 05 DDAY PIC 99. 05 PIC X. 05 DYEAR PIC 99. 03 BENNYÄFACTOR PIC 9(3) COMPÄ3. 03 ADJUSTMENT PIC 9(3) COMPÄ3. 03 PAYOUT PIC S9(7) COMPÄ3. 03 PIC X(20). ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 46 COBOL example SUBRTN IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ PROCEDURE DIVISION USING WORKÄRECORD. ************************************************** * get todays date with 4Ädigit year. * ************************************************** MOVE FUNCTION CURRENTÄDATE(1:8) TO CURRÄDATE. ************************************************** * set century window to start with the current * * year (current system date). * ************************************************** MOVE 0 TO STARTÄCW. CALL "CEESCEN" USING STARTÄCW FC. ************************************************** * convert 2Ädigit due date year from input file * * into integer value using LE/370 service to get * * a Lilian date. CEEDAYS works only if this * * program is compiled with option INTDATE(LILIAN)* ************************************************** CALL "CEEDAYS" USING DUEÄDATE PICSTR LILIAN FC. ************************************************** * convert COBOL Lilian date into YYYYMMDD format * ************************************************** COMPUTE 4ÄDIGITÄDATE = FUNCTION DATEÄOFÄINTEGER(LILIAN). ************************************************** * find out how many years until due date * ************************************************** COMPUTE YEARSÄLEFT = YYYY Ä CURRÄYEAR. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 47 COBOL example SUBRTN IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ************************************************** * set century window to start 100 years before * * the current system date. * ************************************************** MOVE 100 TO STARTÄCW. CALL "CEESCEN" USING STARTÄCW FC. ************************************************** * convert 2Ädigit birthdate year from input file * * into integer value using LE/370 service to get * * a Lilian date. CEEDAYS works only if this * * program is compiled with option INTDATE(LILIAN)* ************************************************** CALL "CEEDAYS" USING BIRTHÄDATE PICSTR LILIAN FC. ************************************************** * convert COBOL Lilian date into YYYYMMDD format * ************************************************** COMPUTE 4ÄDIGITÄDATE = FUNCTION DATEÄOFÄINTEGER(LILIAN). ************************************************** * find the age Ä even after 1999! * ************************************************** COMPUTE CURRENTÄAGE = CURRÄYEAR Ä YYYY. GOBACK. END PROGRAM SUBRTN. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 48 Year 2000: Integer Dates IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -> Problem: LE/370 Lilian and ANSI COBOL Integer dates are different -> Solution: Use LE/370 Lilian dates exclusively -> Problem: What about Intrinsic Functions? -> Solution: Use COBOL for MVS & VM Install option INTDATE * INTDATE(LILIAN) or INTDATE(ANSI) * Use INTDATE(LILIAN) to get LE/370 Lilian dates from Intrinsic Functions -> Question: What about ANSI Standards? -> Answer: There were too many Integer date formats even before LE! * PL/I - no integer date values * C - has integer dates that start with Jan 1, 1970 * COBOL - has integer dates that start with Jan 1, 1601 * LE/370 - has integer dates that start with Oct 15, 1582 * CICS - has integer date that starts with Jan 1, 1900 * MVS - has integer date that starts with Jan 1, 1900 * DB2 - has integer date that starts with Jan 1, 1900 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 49 Integer Dates IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Why 2 different start dates for integer formats? LE/370 and the 1989 ANSI Standard Amendment were developed at around the same time. The Language Environment group used a study published by IBM in 1984 that determined that the first reliable date we can count on is Oct 14, 1582. Every day after that date can be accounted for, while prior to that date there are "missing" days and months. The ANSI COBOL committee X3J4 also decided to use an integer-style date, but they used the starting date of Dec 31, 1600. IBM gave them the results of our published study, but they chose to use their own starting date. Upon further investigation, IBM found many different integer starting dates in use, and determined that LE should keep using the "best" starting date of Oct 14, 1582. Our default options for the COBOL for MVS & VM compiler must conform to the ANSI Standard, and thus the difference! ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 50 Integer Dates IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ -> Recommendations: * Only use integer-form dates for performing date calculations in the same program. Convert to integer and back from integer in the same program. * Avoid storing integer dates in databases and files * Avoid passing integer dates from one program to another -> If you have a requirement to put integer dates in databases and files, then standardize on Lilian dates. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 51 Official disclaimer IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ How long you can safely continue to run your OS/VS COBOL applications without a newer library is difficult to predict. As long as nothing in your environment changes, you can run your OS/VS COBOL programs forever. However, if you change any other software in your environment, you could break any or all of your existing OS/VS COBOL applications. A perfect example of this was DFSMS/MVS V1R3. The VSAM component changed in such a way that a bug in OS/VS COBOL library routine ILBOVOC was revealed. This bug is fixed in Language Environment for MVS & VM R5 but it still exists in OS/VS COBOL, and a future release of VSAM could again break all OS/VS COBOL programs in your shop. Therefore, our recommendation is that even if you decide to buy the IBM offering that gives you an extension on supported service until June 1996, you should start migration to COBOL/370 and LE/370 as soon as possible. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 52 Technical advantages of LE/370 IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ | | | | | | | | | | | | | | | | | | | PERFORMANCE:| ÀÄÄÄÄÄÄÄÄÄÄÄÄÄ| | | | | | | | | ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ O Inter-language CALLs are faster under LE/370 between COBOL and other languages, with about 80% less overhead for each call. O COBOL-assembler-COBOL calls 80% less overhead than VS COBOL II. O All COBOL calls are faster under LE/370 than under VS COBOL II. (In some cases, DYNAMIC CALL is faster than under OS/VS COBOL!) O COBOL/370 compiler changes for object program performance: (Improvements over VS COBOL II, only available under LE/370) * OPTIMIZE(FULL) option * Static initialization of WORKING-STORAGE variables at compile time for NORENT programs * Optimized parameter list generated code (for USING phrase) * Improved performance of variable-length MOVEs * Optimized code generated for main entry point * Dynamic CALL literal performance improved ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 53 Technical advantages of LE/370 IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ | | | | | | | | | | | | | | | | | | | NEW FUNCTION:| ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| | | | | | | | | ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ O Support for OpenEdition MVS services, including support for some of the C language functions defined in the POSIX standard O ANSI 1985 Intrinsic Functions available in COBOL/370 O YEAR 2000 * LE/370 callable services that interpret 2-digit year dates as 4-digit year dates. This solves the year 2000 problem prior to changing the database to 4-digit year dates. It also makes it easy to write an application to change the database. * COBOL/370 Intrinsic Functions return 4-digit year dates (no 4-digit year dates available on OS/VS COBOL or VS COBOL II) O High-precision math routines available to any language (LE/370 callable services are only available to LE-conforming languages or LE-conforming assembler) ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 54 Technical advantages of LE/370 IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ | | | | | | | | | | | | | | | | | | | NEW FUNCTION:| ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| | | | | | | | | ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ O LE/370 Condition Handling (abend intercept, "0C7 catcher", etc) Allows application-level condition handling so that each routine can be written without dealing with error conditions. This allows routines to be written for success and performance rather than written to address errors in individual statements. The error- handling routines can be written in the High Level Language of choice, thus helping you move away from assembler. (Before LE/370 the error-handling code had to be in the same language as the application, or in assembler language. Also, in COBOL you could only have statement-specific condition handling, which means each new program had to have its own condition handling and the associated performance overhead.) ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 55 Technical advantages of LE/370 IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ | | | | | | | | | | | | | | | | | | | NEW FUNCTION:| ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| | | | | | | | | ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ O Object-Oriented COBOL on MVS requires LE/370 O Client-server using COBOL on MVS requires LE/370 O SOM support on MVS requires LE/370 O C++ for MVS requires LE/370 O DB2 V4 Stored Procedures function requires LE/370 O CICS V4 Autoinstall Exit written in COBOL requires LE/370 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 56 Technical advantages of LE/370 IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ | | | | | | | | | | | | | | | | | | | PLATFORM OF THE FUTURE:| ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| | | | | | | | | ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ O Any future performance improvements or language enhancements such as DSOM support or XOPEN COBOL will only be available under LE/370. O LE/370 will be a basic part of MVS, VM and VSE through OS/390 and BOS/390, and will be mirrored on OS/2 and AIX as well. LE/370 is already built in to the OS/400 operating system. O More support of the POSIX standard and possible exploitation of the XPG4 OPEN standard would allow users access to a UNIX-like environment within MVS using C and possibly COBOL. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 57 Technical advantages of LE/370 IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ | | | | | | | | | | | | | | | | | | | SYSTEM EXPLOITATION:| ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| | | | | | | | | ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ O QSAM buffers can now be above the line for full exploitation of DFSMS and data striping. O COBOL EXTERNAL data can now be above the 16 MEG line for COBOL/370 (Had to be below the line in VS COBOL II) O CBLPSHPOP run-time option allows choice of performance versus error handling. (Under VS COBOL II the user had no choice and always took the performance hit of PUSH HANDLE and POP HANDLE for CALLs) O New COBOL/370 compiler options: * RMODE option allows NORENT programs to run above the line * OPT(FULL) automatically optimizes out unused data items O New LE/370 support in R3: * Allows COBOL/370 programs compiled with NORENT and RMODE(ANY) to run above the 16 MEG line. (Only RENT was supported above the line under VS COBOL II) ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 58 Technical advantages of LE/370 IBM ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿ | | | | | | | | | | | | | | | | | | | USEABILITY:| ÀÄÄÄÄÄÄÄÄÄÄÄÄ| | | | | | | | | ÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄ O All language error messages now in latest CD-ROM collection kit (Previous to LE/370, messages in 3 different manuals) O CBLQDA run-time option prevents dynamic allocation of QSAM files (Only available as a User Mod under VS COBOL II) O COBOL/370 removes restrictions for APPLY WRITE-ONLY (Under OS/VS COBOL, had to use FROM on WRITE. Also, the subfields of the records could not be referred to in procedure statements.) O Storage tuning via run-time options (no link-edited assembler, which was the only way to tune storage usage under VS COBOL II) ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GUIDE Fall 1996 AP150 IBM COBOL 59