UNISYS COBOL85 IC COBOL85-048.1A.2 [48.189.002] 2002 November 2 7:39:46 am Page 1 Card = (PAUL)SRCE/UNITE/AS4027/COBOL85/EXPLIB ON OPS Code file = OBJECT/UNITE/AS4027/COBOL85/EXPLIB 000050 $$ SET LIST MAP MAPONELINE PAGESIZE=80 000100 $$ SET LINEINFO BINDINFO 000120 $$ FEDLEVEL=5 00000120 001000 002:0000:0 100000 IDENTIFICATION DIVISION. 002:0000:0 100100 PROGRAM-ID. AS4027-EXPLIB IS LIBRARY PROGRAM. 002:0000:0 100200 AUTHOR. P.KIMPEL. 002:0000:0 100300 *INSTALLATION. PARADIGM CORPORATION, SAN DIEGO. 002:0000:0 100400 *DATE-WRITTEN. NOVEMBER 2002. 002:0000:0 100500 002:0000:0 100600 ****************************************************************** 002:0000:0 100700 * UNITE/AS4027/COBOL85/EXPLIB * 002:0000:0 100800 ****************************************************************** 002:0000:0 100900 * THIS PROGRAM ILLUSTRATES A SIMPLE COBOL-85 PROGRAM LIBRARY 002:0000:0 101000 * FOR THE PURPOSE OF SHOWING HOW IT WILL APPEAR IN A PROGRAM- 002:0000:0 101100 * WHEN CALLED BY ANOTHER PROGRAM. 002:0000:0 105000 ****************************************************************** 002:0000:0 105002 * MODIFICATION LOG. 002:0000:0 105006 * 2002-11-01 P.KIMPEL 002:0000:0 105007 * ORIGINAL VERSION, CLONED FROM ISAMCALC. 002:0000:0 109990 ****************************************************************** 002:0000:0 110000 002:0000:0 110020 ENVIRONMENT DIVISION. 002:0000:0 110200 CONFIGURATION SECTION. 002:0000:0 110300 SOURCE-COMPUTER. UNISYS-MCP. 002:0000:0 110400 OBJECT-COMPUTER. UNISYS-MCP. 002:0000:0 150000 002:0000:0 150100 DATA DIVISION. 002:0000:0 300020 ****************************************************************** 002:0000:0 300100 WORKING-STORAGE SECTION. 002:0000:0 300200 77 W-CALL-COUNT PIC S9(11) GLOBAL BINARY. 002:0000:0 W-CALL-COUNT = (2,00C) offset = 0 Word 330000 002:0000:0 330100 01 WLN-LOG-AREA GLOBAL. 002:0000:0 WLN-LOG-AREA = (2,00D) offset = 0 Byte 330600 05 WLN-LN-2 PIC S9(1)V9(10) BINARY 002:0000:0 WLN-LN-2 = (2,00E) offset = 0 Word 330700 VALUE 0.6931471806. 002:0000:0 331200 05 WLN-FACTOR-VALUES. 002:0000:0 WLN-FACTOR-VALUES = (2,00D) offset = 6 Byte 331300 10 FILLER PIC S9(1)V9(10) VALUE +0.9999964239 COMP. 002:0000:0 331400 10 FILLER PIC S9(1)V9(10) VALUE -0.4998741238 COMP. 002:0000:0 331500 10 FILLER PIC S9(1)V9(10) VALUE +0.3317990258 COMP. 002:0000:0 331600 10 FILLER PIC S9(1)V9(10) VALUE -0.2407338084 COMP. 002:0000:0 331700 10 FILLER PIC S9(1)V9(10) VALUE +0.1676540711 COMP. 002:0000:0 331800 10 FILLER PIC S9(1)V9(10) VALUE -0.0953293897 COMP. 002:0000:0 331900 10 FILLER PIC S9(1)V9(10) VALUE +0.0360884937 COMP. 002:0000:0 332000 10 FILLER PIC S9(1)V9(10) VALUE -0.0064535442 COMP. 002:0000:0 332100 05 WLN-FACTOR-TABLE REDEFINES WLN-FACTOR-VALUES 002:0000:0 WLN-FACTOR-TABLE = (2,00D) offset = 6 Byte 332200 OCCURS 8 INDEXED WLN-FX. 002:0000:0 WLN-FX = (2,002) offset = 0 Word 332300 10 WLN-FACTOR PIC S9(1)V9(10) COMP. 002:0000:0 WLN-FACTOR = (2,00F) mom is (2,00D) offset = 12 Hex 332320 002:0000:0 332340 ****************************************************************** 002:0000:0 332360 PROGRAM-LIBRARY SECTION. 002:0000:0 332380 LB AS4027-EXPLIB EXPORT 002:0000:0 332400 ATTRIBUTE SHARING IS SHAREDBYALL. 002:0000:0 332420 ENTRY PROCEDURE COMPUTE-LN. 002:0000:0 UNISYS COBOL85 IC COBOL85-048.1A.2 [48.189.002] 2002 November 2 7:39:46 am Page 2 500000 / 002:0000:0 500100 PROCEDURE DIVISION. 002:0000:0 500120 ****************************************************************** 002:0019:3 500200 000-MAIN SECTION. 002:0019:3 500300 000-BEGIN. 002:0019:3 500400 002:0019:3 500500 MOVE ZERO TO W-CALL-COUNT. 002:0019:3 502500 002:0019:4 502600 CALL SYSTEM FREEZE TEMPORARY. 002:0019:4 502700 002:001B:4 502800 000-EXIT. 002:001B:4 502900 STOP RUN. 002:001B:4 502920 002:001C:3 502940 *================================================================= 002:001C:3 502960 IDENTIFICATION DIVISION. 00502900 002:001C:3 502980 PROGRAM-ID. COMPUTE-LN. 002:001E:0 503000 002:001E:0 503020 DATA DIVISION. 002:001E:0 503040 WORKING-STORAGE SECTION. 002:001E:0 503060 77 WLN-TERM PIC S9(7)V9(16) BINARY. 002:001E:0 WLN-TERM = (2,01A) offset = 0 Word 503080 77 WLN-SUM PIC S9(3)V9(20) COMP. 002:001E:0 WLN-SUM = (2,01C) offset = 0 Hex 503100 77 WLN-POWER PIC S9(7)V9(16) COMP. 002:001E:0 WLN-POWER = (2,01C) offset = 24 Hex 503120 77 WLN-N PIC S9(5) BINARY. 002:001E:0 WLN-N = (2,01D) offset = 0 Word 503140 002:001E:0 503160 LINKAGE SECTION. 002:001E:0 503180 77 L-ARG PIC S9(7)V9(5) COMP. 002:001E:0 L-ARG = (3,002) offset = 0 Hex 503200 77 L-RESULT PIC S9(2)V9(9) BINARY. 002:001E:0 L-RESULT = (3,003) offset = 0 Word 650000 002:001E:0 650020 PROCEDURE DIVISION USING L-ARG, L-RESULT. 002:001E:0 650040 002:001E:0 650100 200-COMPUTE-LN SECTION. 002:001E:0 650200 * THIS ROUTINE CALCULATES THE NATURAL LOGARITHM OF L-ARG 002:001E:0 650300 * LEAVING THE RESULT IN L-RESULT. IT IS ACCURATE TO ONE 002:001E:0 650400 * PART IN 10**7. FROM HBK OF MATH FUNCTIONS, ABRAMOWITZ & 002:001E:0 650500 * STEGUN, DOVER, NEW YORK, 1965 (LCCN 65-12253), PP 67 FF. 002:001E:0 650600 * (I CAN'T BELIEVE I'M ACTUALLY DOING THIS IN COBOL...) 002:001E:0 650700 200-BEGIN. 002:001E:0 650800 MOVE ZERO TO WLN-N, WLN-SUM. 002:001E:0 650900 MOVE L-ARG TO WLN-TERM. 002:0022:0 651000 002:0029:0 651100 200-SCALE-LOOP. 002:0029:0 651200 IF WLN-TERM > 2.0 002:0029:0 651300 ADD 1 TO WLN-N 002:002C:1 651400 COMPUTE WLN-TERM ROUNDED = WLN-TERM / 2 002:002E:1 651500 GO TO 200-SCALE-LOOP 002:0031:0 651600 ELSE IF WLN-TERM < 1.0 002:0032:0 651700 SUBTRACT 1 FROM WLN-N 002:0035:1 651800 COMPUTE WLN-TERM ROUNDED = WLN-TERM * 2 002:0037:1 651900 GO TO 200-SCALE-LOOP. 002:003B:4 652200 002:003C:4 652300 SET WLN-FX TO 1. 002:003C:4 652400 MOVE 1.0 TO WLN-POWER. 002:003C:5 652500 SUBTRACT 1.0 FROM WLN-TERM ROUNDED. 002:0041:2 652600 002:0047:4 652700 200-SERIES-LOOP. 002:0047:4 652800 MULTIPLY WLN-TERM BY WLN-POWER ROUNDED. 002:0047:4 652900 COMPUTE WLN-SUM ROUNDED = WLN-SUM + 002:004E:4 653000 WLN-FACTOR (WLN-FX) * WLN-POWER. 002:005B:2 653100 IF WLN-FX < 8 002:005B:2 653200 SET WLN-FX UP BY 1 002:005D:3 653300 GO TO 200-SERIES-LOOP. 002:005E:2 653400 002:005F:2 653500 COMPUTE L-RESULT ROUNDED = WLN-SUM + 002:005F:2 653600 WLN-N * WLN-LN-2. 002:006B:2 653700 002:006B:2 653800 * ---- GENERATE A ONE-TIME SNAPSHOT PROGRAMDUMP ---- 002:006B:2 653900 ADD 1 TO W-CALL-COUNT. 002:006B:2 654000 IF W-CALL-COUNT = 6 002:006E:2 654100 CALL SYSTEM DUMP. 002:006F:5 654200 002:0070:5 654300 200-EXIT. 002:0070:5 654400 EXIT PROGRAM. 002:0070:5 UNISYS COBOL85 IC COBOL85-048.1A.2 [48.189.002] 2002 November 2 7:39:46 am Page 3 654500 002:0071:2 654600 END PROGRAM COMPUTE-LN. 00654400 002:0071:2 ----------------------------------------------------------------------------------------------------------------------------------- NESTED PROGRAM STATISTICS FOR AS4027-EXPLIB ----------------------------------------------------------------------------------------------------------------------------------- MEMORY ALLOCATED FOR PROGRAM (X) 19 1% of 1538 BYTES MEMORY ALLOCATED FOR PROGRAM-IDS (Y) 24 1% of 7650 BYTES MEMORY ALLOCATED FOR COMMON PROGRAMS (Z) 4 1% of 65025 BYTES TOTAL MEMORY REQUIRED (X+Y+Z) 47 1% of 74213 BYTES ACTUAL IPCMEMORY REQUESTED 5000 BYTES 999800 002:0071:2 999900 END PROGRAM AS4027-EXPLIB. 002:0071:2 No errors detected. Program: 129 lines; date compiled: 2002 November 2 7:39:46 am Card = (PAUL)SRCE/UNITE/AS4027/COBOL85/EXPLIB ON OPS Code file = OBJECT/UNITE/AS4027/COBOL85/EXPLIB Disk segments = 70. D2 size = 36. D1 size = 8. Target = LEVEL5; Memory_model = Tiny; Longlimit = 10922. Compiler: 1.28 Seconds processor time