1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 4921 4922 4923 4924 4925 4926 4927 4928 4929 4930 4931 4932 4933 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202 5203 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5279 5280 5281 5282 5283 5284 5285 5286 5287 5288 5289 5290 5291 5292 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304 5305 5306 5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 5342 5343 5344 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 5367 5368 5369 5370 5371 5372 5373 5374 5375 5376 5377 5378 5379 5380 5381 5382 5383 5384 5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5397 5398 5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 5431 5432 5433 5434 5435 5436 5437 5438 5439 5440 5441 5442 5443 5444 5445 5446 5447 5448 5449 5450 5451 5452 5453 5454 5455 5456 5457 5458 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 5474 5475 5476 5477 5478 5479 5480 5481 5482 5483 5484 5485 5486 5487 5488 5489 5490 5491 5492 5493 5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 5509 5510 5511 5512 5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 5530 5531 5532 5533 5534 5535 5536 5537 5538 5539 5540 5541 5542 5543 5544 5545 5546 5547 5548 5549 5550 5551 5552 5553 5554 5555 5556 5557 5558 5559 5560 5561 5562 5563 5564 5565 5566 5567 5568 5569 5570 5571 5572 5573 5574 5575 5576 5577 5578 5579 5580 5581 5582 5583 5584 5585 5586 5587 5588 5589 5590 5591 5592 5593 5594 5595 5596 5597 5598 5599 5600 5601 5602 5603 5604 5605 5606 5607 5608 5609 5610 5611 5612 5613 5614 5615 5616 5617 5618 5619 5620 5621 5622 5623 5624 5625 5626 5627 5628 5629 5630 5631 5632 5633 5634 5635 5636 5637 5638 5639 5640 5641 5642 5643 5644 5645 5646 5647 5648 5649 5650 5651 5652 5653 5654 5655 5656 5657 5658 5659 5660 5661 5662 5663 5664 5665 5666 5667 5668 5669 5670 5671 5672 5673 5674 5675 5676 5677 5678 5679 5680 5681 5682 5683 5684 5685 5686 5687 5688 5689 5690 5691 5692 5693 5694 5695 5696 5697 5698 5699 5700 5701 5702 5703 5704 5705 5706 5707 5708 5709 5710 5711 5712 5713 5714 5715 5716 5717 5718 5719 5720 5721 5722 5723 5724 5725 5726 5727 5728 5729 5730 5731 5732 5733 5734 5735 5736 5737 5738 5739 5740 5741 5742 5743 5744 5745 5746 5747 5748 5749 5750 5751 5752 5753 5754 5755 5756 5757 5758 5759 5760 5761 5762 5763 5764 5765 5766 5767 5768 5769 5770 5771 5772 5773 5774 5775 5776 5777 5778 5779 5780 5781 5782 5783 5784 5785 5786 5787 5788 5789 5790 5791 5792 5793 5794 5795 5796 5797 5798 5799 5800 5801 5802 5803 5804 5805 5806 5807 5808 5809 5810 5811 5812 5813 5814 5815 5816 5817 5818 5819 5820 5821 5822 5823 5824 5825 5826 5827 5828 5829 5830 5831 5832 5833 5834 5835 5836 5837 5838 5839 5840 5841 5842 5843 5844 5845 5846 5847 5848 5849 5850 5851 5852 5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5870 5871 5872 5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 5888 5889 5890 5891 5892 5893 5894 5895 5896 5897 5898 5899 5900 5901 5902 5903 5904 5905 5906 5907 5908 5909 5910 5911 5912 5913 5914 5915 5916 5917 5918 5919 5920 5921 5922 5923 5924 5925 5926 5927 5928 5929 5930 5931 5932 5933 5934 5935 5936 5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5948 5949 5950 5951 5952 5953 5954 5955 5956 5957 5958 5959 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5990 5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 6020 6021 6022 6023 6024 6025 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 6038 6039 6040 6041 6042 6043 6044 6045 6046 6047 6048 6049 6050 6051 6052 6053 6054 6055 6056 6057 6058 6059 6060 6061 6062 6063 6064 6065 6066 6067 6068 6069 6070 6071 6072 6073 6074 6075 6076 6077 6078 6079 6080 6081 6082 6083 6084 6085 6086 6087 6088 6089 6090 6091 6092 6093 6094 6095 6096 6097 6098 6099 6100 6101 6102 6103 6104 6105 6106 6107 6108 6109 6110 6111 6112 6113 6114 6115 6116 6117 6118 6119 6120 6121 6122 6123 6124 6125 6126 6127 6128 6129 6130 6131 6132 6133 6134 6135 6136 6137 6138 6139 6140 6141 6142 6143 6144 6145 6146 6147 6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 6158 6159 6160 6161 6162 6163 6164 6165 6166
|
2023-07-28 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c, common.c: replace use of NCURSES_MOUSE_VERSION by
HAVE_MOUSEMASK
* fileio.c (cob_file_sort_giving_internal): fix memory cleanup
2023-07-27 Chuck Haatvedt <chuck.haatvedt+cobol@gmail.com>
* move.c (cob_move_display_to_packed): fix data corruption caused
by packing one extra digit from the input display field
2023-07-25 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_check_linkage_size), common.h: new function
to check for EC-PROGRAM-ARG-MISMATCH
* common.c (raise_arg_mismatch): new function to provide a "virtual"
module entry for better error messages
* common.c (call_exit_handlers_and_terminate, cob_runtime_error):
pass information about arguments to handlers written in COBOL
* common.c (cob_stack_trace_internal): slightly improved stack output
2023-07-24 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c: only check -1 as invalid fd; return fileio status for
invalid file state in CBL_ routines, instead of fixed -1 / 35
* call.c (cache_preload, cob_resolve_internal): runtime warning if
(pre)loading from existing path does not work
* (cache_preload): runtime warning if preloading from existing path
does not work
* call.c (cob_try_preload): runtime warning if preloading of
requested module does not work
* (cob_resolve_internal): runtime warning if loading module from
existing path or resolving requested entry point does not work
2023-07-22 Simon Sobisch <simonsobisch@gnu.org>
* coblocal.h (COB_MAX_FIELD_SIZE_LINKAGE): new definition
2023-07-21 Simon Sobisch <simonsobisch@gnu.org>
* common.c (get_config_val): fixed output of "not set" for enum values
* common.c (create_dumpfile): more details if dump could not be created
2023-07-18 Simon Sobisch <simonsobisch@gnu.org>
after suggestions by Chuck Haatvedt <chuck.haatvedt+cobol@gmail.com>
* move.c (cob_move_display_to_packed): fix memory trashing in edge cases
2023-07-10 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_check_fence), common.h: new function to check for writing
outside of COBOL data, triggered with compile option -fmemory-check
* statement.def (STMT_BEFORE_CALL, STMT_BEFORE_UDF): new internal
statements, currently used for cob_check_fence
2023-06-22 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c (cob_decimal_set_packed): backport pack_to_bin change while
adjusting its translation table for invalid BCD "digits" to yield the
same result as before
* numeric.c (cob_decimal_set_packed): more optimizations for speed
* move.c (cob_packed_get_int, packed_get_long_long): apply optimizations
from (cob_decimal_set_packed) including skipping leading zeros and
pack_to_bin
* common.c (b2i): include marker for invalid data (previously not set)
2023-06-21 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c (cob_set_packed_u64): extracted from cob_set_packed_int
and extended, allowing to internally use bigger values without
a double-check of the sign
* numeric.c (cob_decimal_get_packed): set by unsigned long when possible,
instead of signed int (increasing from 9 to 19 digits for many systems)
* numeric.c (cob_decimal_get_display, cob_decimal_set_display,
cob_decimal_do_round): fix compile warnings
2023-06-20 Simon Sobisch <simonsobisch@gnu.org>
* common.c (get_screenio_and_mouse_info) [__PDCURSES__]:
drop old version checks, set patch version
* common.c (cob_check_field_offset): new not-yet-active function
for subscript check by offset like IBM (see FR #437)
2023-06-03 Simon Sobisch <simonsobisch@gnu.org>
* Makefile.am (libcob_la_LDFLAGS): updated version-info - ABI fixed for 3.2
2023-06-02 Simon Sobisch <simonsobisch@gnu.org>
* common.h (cob_file_org, cob_file_access_mode): changed defines to enums
* fileio.c (cob_findkey_attr): extracted identical logic from cob_findkey,
indexed_findkey and bdb_findkey;
dropping the later two and set mapkey after calling it
* fileio.c (cob_file_sort_using, cob_file_sort_giving): raise
COB_EC_SORT_MERGE_FILE_OPEN when applicable
* fileio.c (cob_copy_check, cob_file_sort_submit, cob_file_sort_retrieve):
pass most matching argument type instead of the structures containing it
* fileio.c (cob_file_sort_using_extfh, cob_file_sort_giving_extfh),
common.h: new functions, using EXTFH functions to read/write the data
* fileio.c (update_fcd_to_file): set exception for non-digit returns,
handle EOP flag (only usable if the internal EXTFH function was used)
* fileio.c (cob_extfh_close): handle close options, most important:
CLOSE REEL (as that does not actually close the file)
* fileio.c (EXTFH3): handle OP_CLOSE_REEL to leave the file open
* fileio.c (EXTFH3): handle "read direct" opcodes for now as "read random"
* fileio.c (EXTFH3): setup intermediate record only for WRITE/REWRITE as
it isn't used otherwise
* fileio.c (update_key_from_fcd): extracted from EXTFH3
* fileio.c (update_key_from_fcd): only handle (logical) key field as split
keys are all handled in io functions and otherwise not found there
* fileio.c (find_fcd, cob_extfh_close): specify free handling by parameter,
new value "-1" is used if FCD was created by ADDRESS OF FH--FCD,
otherwise it is lost on first CLOSE
* fileio.c: disable setting of record min/max size outside of OPEN,
disable setting of record size in some places
* fileio.c: adjusted setting of SORT-RETURN register
2023-06-01 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c: minor refactoring for SORT related functions,
mostly reducing scope of variables
* fileio.c (cob_file_sort_using): early exit for errors during OPEN
* fileio.c (cob_file_sort_giving): one-time setting of WRITE options
after OPEN instead of doing it before every WRITE
* fileio.c (cob_file_sort_giving): don't try to WRITE to or CLOSE files
where OPEN OUTPUT was not successful
* fileio.c (cob_file_sort_giving): skip GIVING file on WRITE errors,
early exit if no GIVING file left
* fileio.c (cobsort): new attribute flag_merge
* fileio.c (cob_file_sort_options), common.h: new function to pass more
options, so far only used to set flag_merge
2023-05-30 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c (check_overflow_and_set_sign): disable "cleanup" of
negative zero
* numeric.c (cob_addsub_optimized): include (disabled) internal
use of BCD arithmetic for USAGE DISPLAY
* common.c (IS_INVALID_DIGIT_DATA, IS_VALID_DIGIT_DATA): minor optimization
* coblocal.h (COB_PUT_SIGN_ADJUSTED): optimize for most common case of
"no adjustment needed"
2023-05-26 Simon Sobisch <simonsobisch@gnu.org>
* common.h: added COB_SCREEN_RIGHTLINE, GC extension matching LEFTLINE
* screenio.c (cob_screen_attr): place curses extensions within #ifdef
* screenio.c (cob_screen_attr): return attr which may be adjusted by
parsing COLOR / CONTROL attributes
* screenio.c (cob_addnstr_graph): variant of cob_addnstr for CONTROL
GRAPHICS that outputs each character / WACS symbols separately
* screenio.c (cob_screen_puts, field_display): handle COB_SCREEN_GRAPHICS
2023-05-25 Chuck Haatvedt <chuck.haatvedt+cobol@gmail.com>
* screenio.c (cob_sys_set_scr_size), common.h, system.def: added as
system library call CBL_GC_SET_SCR_SIZE
* screenio.c (cob_sys_get_scr_size): create exception and return -1
if not supported
* screenio.c (control_attrs): handle RIGHTLINE (GC extension to CONTROL)
* screenio.c (cob_screen_attr): set attributes for OVERLINE, LEFTLINE,
RIGHTLINE
2023-05-23 Simon Sobisch <simonsobisch@gnu.org>
* common.h: added COB_SCREEN_GRAPHICS attribute
* screenio.c (control_attrs): added currently not active attributes
CONVERT and GRAPHICS
2023-05-15 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c: integrated changes of Chuck Haatveet for CONTROL handling
with adjusted tokenization and comparison, limiting struct parse_control
to absolute necessary: name + attribute
* screenio.c (handle_control_field_color, get_cob_color_from_color_value):
passing length parameter
2023-05-14 Chuck Haatvedt <chuck.haatvedt+cobol@gmail.com>
* screenio.c (adjust_attr_from_control_field, control_attrs):
replaced proof-of-concept by actual parsing function using new
struct parse_control
2023-05-12 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c (cob_screen_attr): always parse COBOL and curses color value
* screenio.c (cob_to_curses_color): signature changed - operate on integer
to be reusable for CONTROL handling,
separate return value instead of setting the default color
* screenio.c (adjust_attr_from_extended_color): new function directly
handling the attribute adjustment, replaced (has_extended_color)
* screenio.c (handle_control_field_color, get_cob_color_from_color_value):
new functions to get COBOL color number from text and handling it
* common.h (cob_colors): changed color defines to enum
* move.c: fix some compiler warnings by explicit casts
* fix non-constant aggregate initializer for dynamic field/attr/pic
2023-05-10 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c (adjust_attr_from_color_field,
adjust_attr_from_control_field): new functions to adjust screenio
attributes during runtime via COLOR and CONTROL fields
(later function mostly a stub with minimal "parsing" so far)
* screenio.c (cob_screen_attr): refactor to read colors first, allowing
later override via new functions
* screenio.c (cob_screen_set_mode, cob_screen_line_col): minor refactoring
* move.c (cob_move_display_to_packed): prevent writing out of bounds
* move.c (cob_move_display_to_binary): prevent reading out of bounds
2023-05-09 Simon Sobisch <simonsobisch@gnu.org>
* cconv.c (cob_field_to_string): moved from common.c
* cconv.c (cob_init_cconv), coblocal.h, common.c: added
* cconv.c (cob_toupper, cob_tolower, cob_init_cconv), coblocal.h:
included (copy from cobc/reserved.c)
* coblocal.h (enum cob_case_modifier): new enum to select case-adjustment
* cconv.c (cob_field_to_string), coblocal.h: adjusted function signature,
allowing for optional change of case during copy and returning the size
to process or negative error values in case of "no data to process"
* cconv.c (cob_field_to_string): return error if truncating would be
necessary
* reportio.c, intrinsic.c, fileio.c, common.c, call.c: adjusted for new
signature of cob_field_to_string
* intrinsic.c (locale_time, cob_intr_locale_date, cob_intr_locale_compare):
always use full locale string passed, error handling improved
* common.c (cob_set_locale, cob_get_environment, cob_display_env_value):
use local buffer, error handling improved
FR #189 + FR #355 - runtime-adjustable attributes for extended screenio
* screenio.c (cob_accept_field, cob_display_field), common.h: new vararg
functions to take variable attribute fields, including the new fields
CONTROL, COLOR and CURSOR
* screenio.c (field_accept): added cursor parameter and handle it for both
"initial cursor position" and - if it isn't a constant - also for "exit
cursor position", count max-pos on input allowing position to last
position if CURSOR is outside of the data
* screenio.c (field_accept, field_display, cob_screen_attr): added color
and control parameters
* common.h: COB_SCREEN_CONV new attribute, moved "parsing only" attribute
COB_SCREEN_GRID to higher number
2023-05-05 Simon Sobisch <simonsobisch@gnu.org>
cleanup for handling ASCII/EBCDIC sign overpunch
* common.c (cob_get_sign_ebcdic) [COB_EBCDIC_MACHINE]: direct check of
sign nibble
* common.c (cob_get_sign_ebcdic) [!COB_EBCDIC_MACHINE]: adjusted handling
of invalid data
* common.c (cob_real_get_sign), coblocal.h: additional argument to specify
if data has to be always unpunched (old behavior) or only for systems
not matching the sign (e. g. non-ebcdic machine with ebcdic-sign) where
unpunch is needed to get the numeric data (otherwise we already get it
by bit-masking); added new macros COB_GET_SIGN_ADJUST and
COB_PUT_SIGN_ADJUSTED that use this to only overwrite data when necessary
* common.c (cob_cmp_all, cob_cmp_alnum),
move.c (cob_move_display_to_packed, cob_move_display_to_binary,
cob_display_get_int, display_get_long_long),
numeric.c (cob_decimal_set_display, cob_display_add_int): use of
COB_GET_SIGN_ADJUST / COB_PUT_SIGN_ADJUSTED for better performance and
less "changing read-only source data"
* common.c (cob_cmp_all, cob_cmp_alnum): handle numeric fields with
SIGN LEADING SEPARATE correctly, minor optimization by reading the
data/size pointer only once
2023-05-02 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c (cob_add, cob_addsub_optimized): also use (cob_add_bcd) if the
added/subtracted field is one of the usages DISPLAY/COMP-5/BINARY as
converting this to BCD and using this function is much faster than
converting everything to cob_decimal first, then using the fast GMP
compute, then converting the cob_decimal to BCD back
* move.c (cob_move_display_to_packed, cob_move_packed_to_display),
coblocal.h: make functions accessible within libcob
* move.c (cob_move_display_to_packed): performance adjustment by moving a
check out of a loop
2023-04-29 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c (cob_add_bcd): don't execute rounding if COB_STORE_TRUNCATION
is requested
* numeric.c (cob_add_bcd): combined some code paths for less duplication
* numeric.c (handle_bcd_rounding): extracted from (cob_add_bcd) to remove
code duplication and allow code flow to be followed easier
2023-04-28 Simon Sobisch <simonsobisch@gnu.org>
* common.c (explain_field_type): distinguish COMP-6 and unsigned packed
from PACKED-DECIMAL
* (check_current_date): switched to iterating over COB_CURENT_DATE
by pointer
* numeric.c: integrated changes of Chuck Haatveet 2023-03-28 for BCD ADD
with tuning for even more speed by using best matching types and
refactoring, calling the new cob_add_bcd internally from
(cob_add, cob_sub) if all fields are BCD
* numeric.c (cob_add_bcd, check_overflow_fix_final_sign): fix handling
for COB_STORE_KEEP_ON_OVERFLOW and edge-case bugs
2023-04-27 Simon Sobisch <simonsobisch@gnu.org>
* move.c (cob_move_display_to_packed), numeric.c (cob_decimal_get_packed):
simplify code, following idea by of Chuck Haatveet
* common.c (cob_is_numeric): speedup by using new macro IS_INVALID_BCD_DATA
which uses the new lookup table b2i
* common.c: new macros IS_VALID_DIGIT_DATA / IS_INVALID_DIGIT_DATA added
and used
* numeric.c (cob_decimal_do_round, cob_decimal_get_field): fix
COB_STORE_PROHIBITED to not overwrite target data and always raise an
exception if rounding would be necessary
* numeric.c (cob_decimal_get_packed, cob_set_packed_int): reordered check
to most likely value (nonzero, positive) first
2023-04-26 Simon Sobisch <simonsobisch@gnu.org>
* general: only include coblocal.h which includes common.h already
* common.c (cob_continue_after): raise nonfatal exception
COB_EC_CONTINUE_LESS_THAN_ZERO for negative waits
* common.c [TIME_T_IS_NON_ARITHMETIC]: dropped checking for this define as
POSIX requires time_t to be an arithmetic type
* cconv.c (cob_load_collation): minro cleanup
* fileio.c (EXTFH) [!COB_64_BIT_POINTER]: fix check for opcode OP_CLOSE
* move.c (store_common_region): speedup by not re-validating data if caller
already provides that; adjusted callers to specify that
* common.c (cob_sys_hosted): prefer memcmp over strncmp with known size
* common.c (, cob_sys_hosted): handling timezone functions
2023-04-18 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c: integrated changes of Chuck Haatveet 2023-03-28 for BCD MOVE
with tuning for even more speed by using best matching types and
refactoring
* common.h: added cob_move_bcd as external function declaration
* move.c (cob_move): add call to cob_move_bcd for fields without negative
scale
* common.c (cob_is_numeric, cob_is_alpha, cob_is_upper, cob_is_lower,
cob_check_numeric, cob_check_numdisp, cob_correct_numeric):
prefer pointer arithmetic to arrays
* common.c (cob_is_numeric, cob_check_numdisp, cob_set_date_from_epoch,
set_config_val, translate_boolean_to_int): prefer range check over
isdigit and COB_D2I over atoi
* numeric.c (cob_decimal_get_packed): set by optimized integer routine
when possible
2023-04-17 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c (cob_decimal_setget_fld, cob_decimal_get_packed,
cob_decimal_get_display), common.h: new option COB_STORE_NO_SIZE_ERROR
to prevent arithmetic exception being raised during internal MOVE
* intrinsic.c (cob_intr_lowest_algebraic, cob_intr_highest_algebraic):
refactored code for COMP-5
* move.c (cob_move_display_to_packed), numeric.c (cob_decimal_get_packed):
minor adjustment to use optimal code for internal DISPLAY to PACKED,
even without C compiler optimizations active
* move.c (cob_move_ibm): speedup by using pointer arithmetic
2023-04-13 Simon Sobisch <simonsobisch@gnu.org>
performance adjustments for HEX-OF and HEX-TO-CHAR
* intrinsic.c (test_digit, cob_intr_hex_to_char, cob_intr_locale_date,
cob_intr_locale_time), move.c (cob_move_alphanum_to_display,
cob_get_s64_pic9): prefer range check over isdigit for improved speed
* numeric.c (cob_decimal_get_packed): use COB_D2I instead of subtracting
* intrinsic.c (cob_intr_hex_to_char): minor refactoring for speedup
* intrinsic.c (cob_intr_hex_of): rewritten to use hex value table instead
of sprintf, saving around 80% of cpu instructions
performance adjustments for location code compatibility for old modules
* common.c (get_stmt_from_name): extracted from cob_set_location and
cob_trace_stmt to remove duplication
* common.c (get_stmt_from_name): rewritten to store the last statements,
which heavily reduces the use of strcmp and the hashing function
* common.c (do_trace_statement): extracted from cob_trace_statement
2023-04-04 Simon Sobisch <simonsobisch@gnu.org>
* move.c (cob_move, cob_move_display_to_packed, cob_move_packed_to_display,
cob_move_binary_to_binary, cob_move_display_to_binary),
numeric.c (cob_decimal_set_packed, cob_decimal_get_packed,
cob_decimal_get_binary),
termio.c (pretty_display_numeric): fix digit and size calculation of
fields with a PICTURE containing leading / trailing P
* termio.c (cob_display_common): minor refactoring
2023-04-02 Simon Sobisch <simonsobisch@gnu.org>
* move.c (indirect_move): prefer local buffer for most cases
* move.c (cob_move): speedup handling for binary fields to fields
with different scale (to binary / packed)
* move.c (cob_move_alphanum_to_edited, packed_get_long_long,
cob_display_get_int, display_get_long_long,
cob_move_alphanum_to_edited): minor refactoring
* move.c (cob_move_display_to_binary): skip leading zeros;
pre-truncate by offset instead of post-truncate by calculation
* move.c (cob_move_display_to_binary): switch to GMP for > 19 digits,
fixing wrong value in binary
* numeric.c (cob_set_packed_int, cob_decimal_get_packed): minor performance
tuning
2023-03-28 Chuck Haatvedt <chuck.haatvedt+cobol@gmail.com>
* numeric.c (cob_shift_left_nibble, cob_shift_right_nibble): variants of
insert_packed_aligned for cob_move_bcd
* numeric.c (cob_move_bcd): added for highly improved BCD MOVE,
saving more than 50% cpu cycles
* numeric.c (cob_add_bcd, check_overflow_fix_final_sign,
count_leading_zeros): added for highly improved BCD ADD,
saving more than 50% cpu cycles
2023-03-28 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c (cob_open): check for bad quotes, early returning status 31
* fileio.c (cob_chk_file_env, cob_chk_file_mapping, looks_absolute,
do_acu_hyphen_translation): drop / ignore surrounding quotes of filenames
2023-03-27 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c, intrinsic.c: handling of size errors ... NAN...
2023-03-23 Simon Sobisch <simonsobisch@gnu.org>
changes for improved performance
* move.c (store_common_region): skipping leading zeroes, adjusted copy-code
* move.c (cob_move_display_to_packed), numeric.c (cob_decimal_get_packed):
rewrite to not do division and modulo for each half-byte
* move.c (cob_move_edited_to_display): prefer pointer arithmetic to arrays
* move.c (cob_get_int, cob_get_llint): speedup for binary, tuned
for "no decimal" then for "comma"
* numeric.c (cob_cmp_numdisp): prefer pointer arithmetic to arrays
* numeric.c (cob_get_long_ebcdic_sign, cob_get_long_ascii_sign): only set
sign, not change the value
2023-03-20 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c, coblocal.h: fix requesting huge memory for
mpf to cob_decimal conversions
2023-03-06 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c (cob_decimal_get_display): fix truncation with leading zeros
2023-03-04 Simon Sobisch <simonsobisch@gnu.org>
* common.c, common.h: add COB_FERROR_FATAL_EXCEPTION
2023-03-03 Simon Sobisch <simonsobisch@gnu.org>
* common.c, common.h: new external field + define COB_ZEROES_ALPHABETIC /
COB_ZEROES_ALPHABETIC_BYTE_LENGTH
* common.c (compare_zeroes): new function for common comparison to ZERO
* common.c (compare_character): fix issue with not comparing last bytes
2023-02-27 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c (field_accept): minor refactoring to not update
COB_TERM_BUFF for ACCEPT OMITTED
2023-02-24 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_check_beyond_exit), common.h: fix prototype to match strings
* numeric.c (cob_decimal_get_packed): removed code for "huge packed" fields
as we don't have packed fields with more than 38 digits
* numeric.c (cob_pow_10): unsigned parameter, fixing some overflows in GMP
2023-02-24 Ron Norman <rjn@inglenet.com>
* move.c (cob_get_s64_pic9) [COB_EBCDIC_MACHINE]: fix negative sign lookup
2023-02-22 Simon Sobisch <simonsobisch@gnu.org>
fix bug #874 DISPLAY of 9P fields (P to the left of the decimal point)
* termio.c (pretty_display_numeric): fix printing one byte after
actual data
* termio.c (display_numeric): fix printing amount of P as leading zeroes
2023-02-23 Ron Norman <rjn@inglenet.com>
* numeric.c (cob_decimal_set_packed): new lookup table pack_to_bin
to translate two BCD digits at once for integer conversion
2023-02-21 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c (cob_decimal_set_packed): backport and extend optimization
from 4.x by Ron - now skipping initial zeros and for huge fields handle
4 digits at once
2023-02-20 Simon Sobisch <simonsobisch@gnu.org>
* intrinsic.c, numeric.c: explicit check result of mpz_sgn to 0/!0/1/-1
* intrinsic.c (cob_intr_random): fix binary end for implicit seed
* intrinsic.c (numval): minor optimization for invalid numeric
* termio.c (display_numeric, pretty_display_numeric): use common
COB_FIELD_INIT instead of manually init of field named "temp";
minor speedup in output
* fileio.c (lineseq_read, lineseq_write): fixed performance regression
by only keeping track of record offset on OPEN INPUT/OUTPUT
* fileio.c (lineseq_write, lineseq_rewrite): minor performance improvement
by using pointer arithmetic instead of of char arrays + request register
2023-02-10 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c (cob_bcd_cmp, packed_is_negative, decimal_convert_scale,
insert_packed_aligned): finished
2023-02-09 Simon Sobisch <simonsobisch@gnu.org>
* mlio.c, common.c: handle HAVE_JSON_C_JSON_H
* intrinsic.c (split_around_t): explicit terminate snprintf
* termio.c (pretty_display_numeric): fix GCC warning with {{ 0 }}
* termio.c (display_alnum_dump): slightly rewritten to fix compiler
warnings
* cconv.c (cob_load_collation), common.c, intrinisic.c (cob_intr_random),
termio.c: minor adjustments to fix compiler warnings
* fileio.c (copy_fcd_to_file): fixed memory issues with writing to assign
and select name
* fileio.c (save_status): don't synch directly after open or close
* fileio.c (cob_file_open), (open_next): include binary in open flags if
cobsetptr->cob_unix_lf is set
* fileio.c (open_next): set binary file mode, minor refactoring
* fileio.c (cob_file_close) [_WIN32]: don't try to unlock invalid file
handles; mark file descriptor as closed when file handle was closed
2023-02-06 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c (cob_decimal_get_packed, cob_decimal_get_display):
fix use of mpz_cmp to compare >= 0 (also fixing use on MPIR)
* numeric.c (cob_set_packed_int): fix negative sign
* move.c (packed_get_long_long): fix sign regression introduced 2023-01-28
* move.c (own_byte_memcpy): removed and replaced replaced by memcpy
* move.c (cob_packed_get_sign): removed, inlined code in callers
* move.c (cob_decimal_get_display): rewritten
* move.c (store_common_region): requesting use of registers
* move.c (cob_move_packed_to_display): rewritten for performance
* move.c (cob_move): prevent conversion to and from cob_decimal for
unscaled COB_TYPE_NUMERIC_PACKED, by direct write from integer
to packed using (cob_set_packed_int)
* move.c (packed_get_long_long): performance improvements
* move.c (cob_packed_get_int): minor performance improvements
* move.c (packed_get_long_long, display_get_long_long): dropped "cob_"
prefix as those are local-only functions
* move.c (cob_get_int, cob_get_llint): handle negative scale for binary
fields
2023-02-03 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c (packed_is_negative): new function to ignore any sign nibbles
but "negative 0x0d"; only handle as negative if non-zero
* numeric.c (cob_cmp_packed): refactored (partially moved code out to
cmp_packed_intern) and performance-improved
* numeric.c (cob_bcd_cmp, decimal_convert_scale, insert_packed_aligned),
common.h: new functions for direct compare of BCD fields without the
overhead to convert to integer
* numeric.c (cob_numeric_cmp), coblocal.h (COB_ATTR_INIT_A,
COB_FIELD_INIT_F): use best possible comparison instead of expensive
fallback to cob_decimal; note: this also applies to num. keys in SORT
* coblocal.h: request to always inline cob_min_int / cob_max_int
* common.h [_MSC_VER]: disabled "internal" byteswap routines, instead use
generic ones as they work as expected
2023-01-28 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c (cob_packed_get_sign): move check for COB_FIELD_NO_SIGN_NIBBLE
to callers, minor refactoring
* numeric.c (cob_decimal_set_packed, cob_decimal_set_display): minor
performance improvements
* numeric.c (cob_decimal_get_packed, cob_decimal_get_display): rewritten
to use local buffer and remainder instead of allocating huge string to
just peak at the end
* common.c (cob_move_packed_to_display, cob_packed_get_int,
cob_packed_get_long_long): minor performance improvements and similar
code to numeric.c
* intrinisic.c (calculate_start_end_for_numval): only skip leading spaces
and zeros, but not leading low-values
2023-01-25 Simon Sobisch <simonsobisch@gnu.org>
* cconv.c (cob_skip_blanks): prefer isspace over isblank, which is not
available in every system
* common.c (conf_runtime_error, conf_runtime_error_value): as static
* mlio.c (xml_parse): c89 fix
2023-01-23 David Declerck <david.declerck@ocamlpro.com>
* cconv.c: add a cob_load_collation function to load collating sequences
from files ; cobc uses this function to create tables that are embedded
in the generated code, and we also we make it available in libcob so
that external tools that make use of the library can use this feature
* common.h: declare the API for loading collating sequences from files
2023-01-20 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c: include limits.h for INT_MAX
* numeric.c (cob_decimal_add, cob_decimal_sub): only check for zero if
scale differs
* numeric.c (cob_decimal_mul): removed check for zero as mpz_mul does this
on its own
2023-01-19 Simon Sobisch <simonsobisch@gnu.org>
* call.c (cob_put_s64_param, cob_put_u64_param): switched to common msgid
* common.c (cob_sys_getopt_long_long): lower-case msgid
2023-01-18 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c (cob_mul_by_pow_10, cob_div_by_pow_10, cob_pow_10_uli)
[!PREFER_MPZ_MUL]: use integer multiplication for scaling, as this
has proven to be a bit faster than multiplication on pre-calculated mpz
* numeric.c (cob_cmp_packed): optimized for speed
* intrinsic.c (at_cr_or_db): fixed to do case-insensitive check
* intrinsic.c (cob_intr_hex_to_char): minor speedup by switch to pointer
arithmetic (fixing compiler warning)
2023-01-17 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c (cob_decimal_set_packed): speedup (of ~8%) by handling
fields with less than 20 digits via integer computation instead
of GMP
* numeric.c (cob_decimal_set_display): minor speedup by switching
to pointer arithmetic
* numeric.c, common.c: applied 2022-05-30 changes for sign
* numeric.c: applied 2022-05-30 changes for shift_decimal
* numeric.c (cob_mul_by_pow_10, cob_div_by_pow_10): extracted identical
code to inline functions
* numeric.c (cob_s32_pow, cob_s64_pow): use of register type
2023-01-16 Simon Sobisch <simonsobisch@gnu.org>
* statement.def (STMT_INIT_STORAGE): new internal statement
2023-01-15 Ron Norman <rjn@inglenet.com>
* screenio.c: renamed max_pairs_available as this is defined on HPUX
* common.c (check_current_date): fixed bad snprintf size
2023-01-12 Simon Sobisch <simonsobisch@gnu.org>
* intrinsic.c: minor refactoring to reduce duplicated code
2023-01-04 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_cmp): fix stack-use-after-scope for comparisons of unsigned
numeric with non-numeric field
2023-01-03 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_accept_date, cob_accept_date_yyyymmdd, cob_accept_day,
cob_accept_day_yyyyddd, cob_accept_time, cob_accept_microsecond_time):
use binary intermediate field instead of numeric edited, replacing
"expensive" sprintf calls and multiple de-editing/editing to max. one
minimal editing (via move.c)
* common.c (cob_move_to_group_as_alnum): new function to handle MOVE to
group as MOVE to alphanumeric field, used in functions above
* common.c (cob_display_arg_number, cob_accept_arg_number, cob_cmp),
move.c (indirect_move, cob_set_int, cob_set_llint, cob_get_int,
cob_get_llint): minor refactoring to use COB_FIELD_INIT
* common.c (check_current_date, cob_get_current_datetime),
coblocal.h (cob_settings->cob_time_constant_is_calculated):
skip expensive call to localtime + mktime if COB_CURRENT_DATE is
set and "complete", by doing it already for the constant
* move.c: integration of changes from 2022-04-08
* move.c (cob_get_int, cob_get_llint): use of constant binary attributes
2023-01-02 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_is_numeric), move.c (cob_move, cob_move_fp_to_fp),
numeric.c: more additions for COB_TYPE_NUMERIC_L_DOUBLE, basic use now
works as expected
* common.c (print_version): welcome 2023
* common.c (check_current_date): only skip one - or / in COB_CURRENT_DATE
* common.c (cob_sys_x91, set_config_val): integrated changes originally
done 2020-06-20 (!)
* common.c, common.h: dropped ENV_RESETS and compare data pointer instead
of the name for all configurations that need additional setup
* common.c (cob_sys_x91): activated function 35
2022-12-29 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c [!COB_EXPERIMENTAL]: disable "new" status 0P via preprocessor
to inspect later for either include as COB_LS_VALIDATE=PRINT or drop
2022-12-15 Simon Sobisch <simonsobisch@gnu.org>
* common.c, common.h: new external field + define
COB_SPACES_ALPHABETIC / COB_SPACES_ALPHABETIC_BYTE_LENGTH
* common.c: split sort_compare to variant with and without collation,
using direct memcmp for the later
* common.c (compare_spaces, compare_character): new function used for
comparison of data without collation using memcmp in doubled areas
instead of looping over every character
* common.c (cob_cmp_alnum, cob_cmp_all): use direct memcmp and new
functions if no collation was specified
* common.c (common_cmpc, common_cmps): always use collation as all
callers left in pass it (and otherwise call the new functions)
2022-12-13 David Declerck <david.declerck@ocamlpro.com>
* cconv.c: file moved from cobc to libcob
* common.h: declare the new API for collating sequences
2022-12-13 Simon Sobisch <simonsobisch@gnu.org>
* strings.c (inspect_find_data): added missing area check bug #865
* strings.c (inspect_common_no_replace, inspect_common_replacing,
is_marked): minor refactoring for optimization hints
2022-12-09 Simon Sobisch <simonsobisch@gnu.org>
* common.c (get_config_val, set_config_val, translate_boolean_to_int):
allow "boolean" values to be set to a third value via enum,
new enum "never" used for COB_PHYSICAL_CANCEL (and prepared: "not_set"),
to prevent unloading, which is useful for analysis tools like callgrind
or perf to keep all symbols until end of the COBOL process
2022-12-08 Simon Sobisch <simonsobisch@gnu.org>
* common.h (cob_module_type): module type as enum instead of defines only
* call.c (cob_call_field, cob_call_init): speedup of first CALL by using
comparing name hash against newly added hash of system routines before
doing an expensive strcmp against their names
* call.c [COB_ALT_HASH]: removed
* common.c (cob_field_to_string), call.c (cob_chk_call_path): optimized
* call.c (hash): optimized, especially for debug builds
* common.c: added hashing for resolving the statement from a given string,
instead of heavy use of strcmp; note: this is only used for backward
compatibilty and then reduces the previously overhead to the minimum
* fileio.c (cob_str_from_fld): applied optimization similar
to common.c (cob_field_to_string)
2022-12-07 Simon Sobisch <simonsobisch@gnu.org>
* call.c (cob_call_field): speedup of consecutive CALLs by doing the
lookup in called programs before testing the system routines
2022-12-06 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c (cob_sys_read_file): if called with flag value 128 only resolve
the file size, instead of re-positioning it first
2022-12-05 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c, common.c, coblocal.h: moved functions cob_decimal_set_mpf and
cob_decimal_get_mpf to numeric.c as they nearly duplicated
cob_decimal_set_double and cob_decimal_get_double using those functions;
moved out definition of COB_MAX_INTERMEDIATE_FLOATING_SIZE
* numeric.c (cob_decimal_set_mpf_core): extracted from cob_decimal_set_mpf
and optimized for performance, especially by using a local storage
* numeric.c (cob_decimal_set_double): handling of "spaced out double" using
a static buffer instead of setting it each time
2022-12-03 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_set_date_from_epoch), common.h: new function to
parse epoch date
* common.c (cob_get_current_datetime), coblocal.h (cob_datetime_res):
new function to get the datetime with adjustable resolution
* common.c, intrinsic.c: speedup for date/time lookup by using precision
as necessary
* common.c [!TIME_T_IS_NON_ARITHMETIC]: removing the possibly expensive
call to localtime by caching its previous result
2022-12-02 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c: fix mishandled "extended attributes" (bit 4)
* termio.c: several minor performance tweaks for DISPLAY
2022-11-28 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c, termio.c (cob_display_common): more additions for
currently inactive COB_TYPE_NUMERIC_L_DOUBLE
2022-11-18 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c: fixed compiler warnings related to get_crt3_status
* common.h: XML mode defines
* mlio.c: adjustments for register handling in XML parse stubs
2022-11-26 Simon Sobisch <simonsobisch@gnu.org>
* call.c, common.c: internal and explicit setting of no-physical-unload
* common.c: adjustments for COB_PHYSICAL_CANCEL
2022-11-24 Simon Sobisch <simonsobisch@gnu.org>
* intrinsic.c: switching random number generation to GMP,
providing a good-distributed, portable implementation
* intrinsic.c (cob_intr_random) [DISABLE_GMP_RANDOM]:
fix a rare bug returning 1
* intrinsic.c (get_seconds_past_midnight): extracted from
cob_intr_seconds_past_midnight
* intrinsic.c (cob_intr_random) [!DISABLE_GMP_RANDOM]:
switched initial default-seed from "system dependent"
(mostly always zero) to a random seed
2022-11-13 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c (cob_decimal_get_field): optimized intermediate move
from numeric-edited by using a local storage
* numeric.c: refactoring of floating-point usages to not use a union
for re-re-definition of float/double where not necessary
* numeric.c: refactoring of bit-wise functions for readability
* numeric.c (cob_decimal_set_display): prefer local buffer over
dynamic allocation
* numeric.c (cob_cmp_int, cob_cmp_uint, cob_cmp_llint): pre-comparison
by checking sign/zero and reduced number of decimal shifting
dynamic allocation
* move.c (store_common_region): minor optimization
* move.c (cob_move_display_to_edited): several optimizations, the
biggest one stays open, needing adjusted function call from cobc
2022-11-10 Simon Sobisch <simonsobisch@gnu.org>
* coblocal.h: include common.h (for cob_ types) and stdio.h (for FILE)
* common.h: include stddef.h for size_t
* fileo.c (save_status): rewritten to care for any sucessful completion
(status 0x) instead of only on status 00 to not set an exception and
to sync if COB_SYNC is active
2022-11-09 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_hard_failure, cob_hard_failure_internal),
call.c (cob_exit_call): skip unloading of modules for COB_CORE_ON_ERROR=2
to keep symbols in coredumps using cob_physical_cancel=-1 internally
* call.c (close_and_free_module_list): extracted from cob_exit_call
* fileio.c (lineseq_read): use the locale setup for printable check in
sequential data verification instead of libcob's internal one
* fileio.c: for line sequential data verification only call isprint when
cob_ls_validate > 1 (not configurable), use new macro IS_NOT_PRINTABLE
for this check and execute it on both read and (re)write, resulting in
status 0P now, fixed call of isprint on EBCDIC machines
2022-11-04 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c [__PDCURSES__]: drop use of PDC_free_memory_allocations
as testing showed it raising memory errors and the function was
removed in PDCursesMod
* common.c (cob_cmp, cob_cmp_all, cob_cmp_alnum): use buffer to drop the
overpunch sign, removing the need to add it back later; which solves
both issues of "changing invalid data by DISPLAY" and raising strange
watchpoints during debugging
* common.c (common_cmpc, common_cmps, locate_sign): minor optimization
2022-10-22 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c (set_sequential_variable_length): extracted from sequential_read
and extended to verify COB_VARSEQ_TYPE 0 (default) by its two NULL bytes
* fileio.c (sequential_read): return status 04 if variable record length is
outside the record min/max, truncating the record if necessary, while
still position until the next record length - fixing Bug #808
* fileio.c (cob_fd_file_open): for variable-length record sequential files
do a pre-validation of the first record length, returning status 39 when
the first record doesn't match the fixed file attributes
* common.c (cob_fatal_error): added COB_STATUS_39_CONFLICT_ATTRIBUTE
* common.c (cob_sig_handler): fixed uninitialized access
2022-10-19 Simon Sobisch <simonsobisch@gnu.org>
* statement.def: added STMT_PRESENT_WHEN
2022-10-18 Simon Sobisch <simonsobisch@gnu.org>
* Makefile.am: moved header files that are not installed from EXTRA_DIST
to _SOURCES (per automake manual)
* fileio.c (sequential_read): andle variable-sized record-sequential
files when the size was read, but no data found for that afterwards
* mlio.c (xml_parse): fix bad assignment leading to compiler warnings
* common.c (cob_check_beyond_exit), common.h: new function for implicit
exit/goback checks
2022-10-17 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_debug_open, cob_trace_print), intrinsic.c
(cob_intr_hex_to_char): prefer extending switch over use of topupper
* call.c, common.c, intrinisic.c, screenio.c: directly call toupper/tolower
without previous check of islower/isupper
* system.def, common.c (cob_sys_runtime_error_proc):
implement CBL_RUNTIME_ERROR
2022-10-15 Simon Sobisch <simonsobisch@gnu.org>
* version.h, Makefile.am: new file, moving out version
definitions from common.h
* common.h: drop COB_WITHOUT_EXCEPTIONS, which was added only for
resource compilers, which should now include libversion.h
* common.c (cob_runtime_warning_external, cob_runtime_warning):
fix mixing of stdio/direct writes without flush
2022-10-14 Simon Sobisch <simonsobisch@gnu.org>
* statement.def, Makefile.am: new file containing definitions of
internally used statements and their string representation
* common.h (enum cob_statement): use new definitions to create enum
* coblocal.h (cob_statement_name), common.c: pre-initialized table
to translate enum cob_statement to text
* common.c, common.h, intrinsic.c: adjusted to store the enum value
instead of the string and translate only on necessary output
2022-10-12 Simon Sobisch <simonsobisch@gnu.org>
* intrinsic.c (cob_decimal_set): removed (integrated where used)
* numeric.c, common.h: renamed cob_decimal_copy to cob_decimal_set
and marked it for removal
2022-10-11 Simon Sobisch <simonsobisch@gnu.org>
* intrinsic.c (cob_log_ten): new static field to speedup cob_intr_log10
* intrinsic.c: only setup cob_sqrt_two, cob_pi, cob_log_half, cob_log_ten
on first use, to speedup init/teardown when not used
* intrinsic.c, common.c: some more use of COB_D2I
2022-10-10 Simon Sobisch <simonsobisch@gnu.org>
* intrinsic.c (cob_intr_bit_of, cob_intr_bit_to_char,cob_intr_hex_of
cob_intr_hex_to_char): fixed invalid attribute of return field
* common.c, common.h, coblocal.h, fileio.c, numeric.c: changed
* common.c (cob_hard_failure_internal), common.h, coblocal.h, fileio.c,
numeric.c: changed to take an optional prefix and be exported to be
used in cobc
* common.c: change COB_CORE_ON_ERROR=3 to not manually generate a corefile
when called from a signal handler as this isn't signal safe
* common.c, coblocal.h: add COB_CORE_FILENAME to allow specifying a
path, changed default to "core.libcob"
* common.c: defined macros for use of write to simplify code and to
stop output by returning the function in case of errors fixing
-Wunused-result compiler warnings
2022-10-09 Simon Sobisch <simonsobisch@gnu.org>
* common.c, coblocal.h: addition of COB_CORE_ON_ERROR to enable
auto-creation of coredumps on error, sending SIGABRT on error
and the option to let the OS handle signals
* common.c (create_dumpfile): implemented COB_CORE_ON_ERROR=3
* common.c (output_procedure_stack_entry, cob_stack_trace_internal):
replaced use of stdio functions by signal-safe write + memcpy
2022-10-08 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c [WITH_DB]: fixed bug #533 multiple file unlocking by
backport of adjusted struct indexed_file with new file_lock_set
from rw-branch together with related changes
* fileio.c [WITH_DB] (unlock_file): extracted to match other functions
* fileio.c [WITH_DB]: added extra parameters to DB_PUT, DB_GET, DB_SEQ,
DB_CPUT to show what is actually used
* fileio.c: fixed some memory leaks related to filename handling
* fileio.c (cob_file_free): file was not removed from cache which
led to double-free scenarios on cleanup
* fileio.c (cob_open): fixed concattenated filenames resetting the static
filename buffer, leading to use-after-free later
* fileio.c (do_acu_hyphen_translation, copy_fcd_to_file):
fix read of invalid data
* intrinsic.c (split_around_t): fix read of invalid data
* mlio.c (copy_data_as_string): new function replacing cob_strndup_void,
doing what the callers expect, fixing read of invalid data;
added missing check for its return value in is_valid_xml_name
* mlio.c (cob_xml_generate_new): fixed memory leak when valid namespace
data and invalid namepace prefix is passed
2022-10-05 Simon Sobisch <simonsobisch@gnu.org>
* common.c (check_current_date): improved validation
* common.c, intrinsic.c: favor strcpy, snprintf over strncpy
2022-10-04 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_stack_trace_internal, output_procedure_stack_entry):
use cob_frame_ext information when available to output PERFORM stack
* common.c (cob_set_exception): store strings in a local copy
preventing SIGSEGV after CANCEL
* common.c (cob_trace_section): if line is not specified (done for
"exit module" tracing), resolve that from current line, if known
(to provide same output as the version that this was used with)
* intrinsic.c: extend internal docs
* fileio.c: add some guards against bad function calls
* common.h (cob_open_mode): new enum instead instead #define'd constants
* fileio.c: use cob_open_mode where possible (external functions are
postponed to GC 4.x as this possibly changes the ABI)
2022-10-01 Simon Sobisch <simonsobisch@gnu.org>
* intrinsic.c (numval, cob_intr_numval_f): rewritten for improved
performance (and creating smaller temporary fields);
changed to just skip invalid data instead of doing pre-validation
(which can be re-enabled by defining [INVALID_NUMVAL_IS_ZERO])
* intrinsic.c (cob_check_numval_f, cob_intr_numval_f): correctly
recognize lowercase E
2022-09-30 Simon Sobisch <simonsobisch@gnu.org>
* general: merged missing line sequential changes from 4.x to 3.x
* common.c: fixed, then disabled boolean options "not set"
* fileio.c (lineseq_read): set io status 71 for EOF after x'00'
when parsed for COB_LS_NULLS
* common.c (cob_fatal_error): added missing COB_STATUS_71_BAD_CHAR
* fileio.c (cob_read, cob_read_next): handle io status 04 and 09
as successful as io status 06
* fileio.c (lineseq_read): set return status 04 if record is truncated
because LS_SPLIT is false
* common.c: adjustments for merge of 2021-03-18
* common.h (cob_frame_ext): new variant of cob_frame storing the
section/paragraph + location to return to; allowing a full textual
PERFORM stack and used for restoring those on return
* common.h (cob_module): fields for current frame_ptr
2022-09-29 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c (lineseq_read): Status 09 for validation is a warning,
so still parse until end of field when reading bad data
FR #422 - initial implementation of conversion via CODE-SET
* common.h (cob_file): new fields
* fileio.c (sequential_read, lineseq_read, cob_write, cob_rewrite,
get_code_set_converted_data): handle conversion
2022-09-28 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c (cob_file_close): clear file pointer for LINE SEQUENTIAL
files, fixing a later use
* fileio.c: EXTFH memory adjustment - use cache_malloc for internally
created select names and free it along with its fcd_file_list entry
2022-09-21 Simon Sobisch <simonsobisch@gnu.org>
* common.c, fileio.c: change COB_LS_VALIDATE to be the default and to
override COB_LS_NULLS
* fileio.c: fix bug #853 pass \r to validation / COBOL if it isn't
followed by \n
* fileio.c: minor refactor - use of separate FILE *fp
2022-09-13 Simon Sobisch <simonsobisch@gnu.org>
* intrinsic.c (cob_check_numval): fix missing check for
embedded sign and decimal, minor performance-tweak
2022-09-08 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c (cob_get_color_pair, cob_screen_init): fix overflow
when COLOR_PAIRS is bigger than SHRT_MAX
* screenio.c (cob_screen_init) [__PDCURSES__]: fix missing initialization
because of preprocessor symbols dropped
2022-09-01 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c (cob_exit_screen): ensure to not end COB_EXIT_MESSAGE
on mouse-move
* common.c (cob_sys_exit_proc): fix compiler warning
2022-08-19 Simon Sobisch <simonsobisch@gnu.org>
* mlio.c, common.h: added XML PARSE stub including minimal
runtime validation as well as functions and enums to set
related registers
* common.c (cob_strndup), coblocal.h: added (for mlio.c)
2022-08-18 Simon Sobisch <simonsobisch@gnu.org>
* mlio.c: use cob_set_int instead of cob_set_field_to_uint as
used registers JSON-CODE and XML-CODE are signed
* numeric.c, coblocal.h: remove unused cob_set_field_to_uint
* mlio.c: code refactoring and minor improvements for XML GENERATE
and JSON GENERATE (including bug-fix: COUNT IN sets variable,
not increments it)
2022-07-15 Simon Sobisch <simonsobisch@gnu.org>
* call.c (cob_resolve_internal): added check for module name length,
fixed compiler warnings
* call.c (cob_call): switched argument table from dynamic allocation
to stack allocation
* common.c (cob_add_exception), coblocal.h: new function to activate more
than one exception at the same time
* common.c (cob_get_last_exception_name): adjusted to care for
cob_add_exception
* screenio.c (handle_status): pass type of statement to raise
either COB_EC_IMP_ACCEPT or COB_EC_IMP_DISPLAY
* screenio.c (handle_status, cob_set_crt3_status) [!COB_GEN_SCREENIO]:
unconditionally defined those functions and finally return error
status and nonfatal exception along with a warning on accept if the
runtime is not configured for extended screenio
* mlio.c (set_xml_exception, set_xml_code, set_json_exception,
set_json_code): unconditionally defined those functions and return
error status and fatal exception (no runtime exit) along with a
warning if the runtime is not configured for XML / JSON
2022-07-10 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c [__PDCURSES__] (cob_exit_screen): execute
PDC_free_memory_allocations if available
* screenio (cob_exit_screen): fixed order of endwin and delwin,
preventing memory leaks on exit of extended screenio
* common.c, coblocal.h, screenio.c (cob_exit_screen_from_signal):
only minimal screenio exit from signal handler
2022-07-08 Simon Sobisch <simonsobisch@gnu.org>
* call.c (cob_cancel): preparation for CANCEL ALL
2022-06-23 Simon Sobisch <simonsobisch@gnu.org>
* strings.c (cob_unstring_into): minor performance-tweak
for UNSTRING with a single DELIMITED BY phrase
2022-06-12 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_init_sig_descriptions): new function with code
previously found cob_get_sig_description and cob_set_sig_description
to pre-set signal description table on initialization,
allowing to access it signal-safe in the signal-handler
* common.c (get_signal_entry) extracted from cob_get_sig_name,
cob_get_sig_description
* common.c: rename signal_value back to sig (as standard name for
signal handler related functions)
* common.c (ss_itoa_u10): new signal-safe function to build string
from integer (base 10), based on implementation by "Shaoquan"
* common.c: replaced stdio in functions called by cob_sig_handler
by signal-safe functions; exceptions: dump-routines
* fileio.c (cob_get_filename_print): replaced use of stdio functions
by signal-safe functions as we may be called from there
2022-05-30 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c (num_byte_memcpy): removed, callers adjusted to
use memcpy instead
* numeric.c: adjusted to distinguish "field_sign" (a flag) from
"sign" (a GMP return to show negative/zero/positive), and check
the later with explicit -1 / 1
* common.c: adjusted to check for sign as explicit -1/1
* numeric.c: check for "gmp sign == 0" and skip some computations early
* numeric.c (shift_decimal): moved checks for "shift by zero" out to
callers as already done in many places
2022-05-24 Simon Sobisch <simonsobisch@gnu.org>
* strings.c (cob_inspect_converting): fix possible stackoverflow
* call.c (cob_resolve_internal): fix possible stack-use-after-scope,
happening if name conversion is active, introduced on 2020-11-29
and distributed with 3.1.2
2022-05-23 Simon Sobisch <simonsobisch@gnu.org>
* strings.c (inspect_common_no_replace, inspect_common_replacing):
split from inspect_common to enable further optimization for
non replacing variant
* strings.c (inspect_common_no_replace): for LEADING and TRAILING - do
not mark each occurrence, instead gather range, then set the marker
afterwards to reduce the number of expensive small memsets
(TALLYING for 20000 TRAILING spaces -> 1 memset instead of 20000)
2022-05-21 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_sig_handler): integrated (cob_sig_handler_ex) and fix
re-execution of signal handler to raise, effectively reverting most
of the changes from 2014-03-03
2022-05-11 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_get_sign_ascii, cob_put_sign_ascii, cob_put_sign_ebcdic):
skip sign-adjustment if data is already without/with sign
* common.c (cob_put_sign_ebcdic): invalid data for negative sign is now
converted to -0 instead of +0
* strings.c (cob_inspect_init_common): extracted from cob_inspect_init
* strings.c (cob_inspect_converting): reordered code, so inspect_mark
is no longer needed
* strings.c (cob_inspect_init_common): extracted from cob_inspect_init
* strings.c (cob_inspect_init_converting), common.h: new stripped down
variant of cob_inspect_init
* strings.c (cob_inspect_converting): changed conversion to be based
on pre-computed conversion tables, improving performance a lot
2022-04-11 Simon Sobisch <simonsobisch@gnu.org>
* strings.c (inspect_find_data): extracted from cob_inspect_before /
cob_inspect_after
* strings.c (cob_inspect_characters): use (is_marked) to count/replace
all characters at once when possible
* strings.c (inspect_common, cob_inspect_characters,
cob_inspect_converting): early exit if nothing to inspect
* strings.c (cob_init_strings, cob_inspect_init, cob_unstring_init):
don't pre-allocate inspect_mark, inspect_repdata, dlm_list but
allocate with minimal default size on first use
2022-04-08 Simon Sobisch <simonsobisch@gnu.org>
* strings.c (do_mark, is_marked): extracted from inspect_common
* strings.c (set_inspect_mark): new function to remember actual min/max
positions of the marker bytes to remove the need to initialize huge
areas when we commonly have set only markers in the first n bytes
(or nothing), especially for INSPECT LEADING/TRAILING
* strings.c (cob_inspect_init, cob_inspect_characters, is_marked): use of
the now definitive check "did we mark anything" instead of checking all
marker bytes by testing for "inspect_mark[inspect_mark_min] != 0"
* strings.c (is_marked): check for possible/definite overlap of
check and marker range before checking all marker bytes in range
* strings.c: increase use of direct pointer comparisons instead of
accessing char arrays or its positions for INSPECT
* move.c: add const_bin_attr, add COB_FLAG_REAL_BINARY to const_binll_attr
* move.c, common.h: new function cob_set_llint
* move.c (cob_set_int): use const_bin_attr instead of setting it up
each time as this function is used quite often in generated code
2022-04-29 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c: adjustments for XCurses defines
2022-04-01 Simon Sobisch <simonsobisch@gnu.org>
* common.h [__DJGPP__]: use DOS path specs
2022-03-11 Fabrice Le Fessant <fabrice.le_fessant@ocamlpro.com>
* common.c, common.h: add support for the STOP ERROR statement
2022-02-19 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c [__PDCURSES__]: enabled blinking and bolding, see
Patch #47
2022-02-04 Simon Sobisch <simonsobisch@gnu.org>
* general: backport of REWRITE in LINE SEQUENTIAL (especially: record_off),
COB_LS_VALIDATE to check LINE SEQUENTIAL files during read/write,
COB_SEQ_CONCAT_NAME and COB_SEQ_CONCAT_SEP, and other file specific
features
2022-01-30 Simon Sobisch <simonsobisch@gnu.org>
* call.c (set_resolve_error): distinguish between exceptions
COB_EC_PROGRAM_NOT_FOUND and COB_EC_FUNCTION_NOT_FOUND
* fileio.c (indexed_open, join_environment) [WITH_DB]: return
file sharing error if BDB environment cannot be joined
* fileio.c (cob_sys_check_file_exist, cob_get_sort_tempfile): return
appropriate error code on errors instead of runtime exit
* screenio.c: preparations to later raise exceptions in error cases
* common.c (cob_sys_exit_proc): fixes to set / query priority and
return code in case of errors as "per documentation"
* common.c, coblocal.h: added cob_hard_failure + cob_hard_failure_internal
* call.c, numeric.c, fileio.c, screenio.c: use of cob_hard_failure and
cob_hard_failure_internal instead of internal STOP RUN
* common.c: changed runtime error buffer to be static and set
first via new internal function cob_setup_runtime_error_str
when runtime errors occur
* common.c (cob_call_with_exception_check, cob_last_exit_code,
cob_last_runtime_error), common.h: added new C API functions that uses
setjmp/longjmp to allow COBOL calls without possible process interruption
2022-01-17 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c (cob_decimal_adjust): rewrite code for trailing zero removing,
heavily improving ccomputation and comparison of FLOAT-DECIMAL
* numeric.c: actually handle up to COB_MAX_BINARY, not one less
2022-01-11 Simon Sobisch <simonsobisch@gnu.org>
* termio.c: use SIGINT intead of hard-wired "2"
* screenio.c (cob_sys_get_csr_pos, cob_sys_set_csr_pos): support
for get/set cursor position with four-byte field instead of two
* screenio.c (cob_accept_escape_key): support to get 2byte status
* common.c (cob_accept_exception_status): handle special MF values
128, 2, 1 when called with 3byte NUMERIC-DISPLAY
2022-01-03 Simon Sobisch <simonsobisch@gnu.org>
* coblocal.h, common.h: moved some internal limits to coblocal.h
2022-01-01 Ron Norman <rjn@inglenet.com>
* numeric.c: Speed up cob_decimal_adjust routine
2021-12-31 Ron Norman <rjn@inglenet.com>
* numeric.c: speed up cob_decimal_add, cob_decimal_sub, cob_decimal_cmp
Use the powers of 10 table instead of recomputing;
add cob_decimal_copy for use by emitted code
2021-12-22 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c (indexed_close) [WITH_DB]: fix bug #753 sigsegv on CLOSE
when COB_SYNC is active
2021-12-03 Simon Sobisch <simonsobisch@gnu.org>
* common.c (print_version_summary) [__PDCURSES__]: show version
info for old versions of PDCurses, too
2021-11-22 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_allocate): only initialize upon request with optimized
initialization for binary zeroes
2021-11-18 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_get_sig_name, cob_get_sig_description,
cob_set_sig_description): hardened against unexpected signal numbers
* common.c (signals, cob_get_sig_description): description is
post-initialized to allow use of gettext - non-static descriptions
2021-11-14 Ron Norman <rjn@inglenet.com>
Implement FR #235: add bitwise operators for numeric items
* numeric.c, common.h: new cob_logical_xxx functions for bitwise operations
* intrinsic.c (cob_intr_binop): add code for bitwise operations
2021-11-05 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_allocate): fixed check for maximum size to work as
intended for values > INT_MAX
* common.h [HAVE_CONFIG_H]: include config.h (to be moved to coblocal.h)
* common.h [COB_64_BIT_POINTER]: allow field size up to 2GB
* intrinsic.c [HAVE_LANGINFO_CODESET && _WIN32]: fix compile error,
needs to be checked later if undefine of HAVE_LANGINFO_CODESET is
reasonable
2021-11-01 Simon Sobisch <simonsobisch@gnu.org>
* coblocal.h: adjusted ISFINITE definition
* coblocal.h: removed 'extern "C"' as this header should not
be externally included
* common.h, coblocal.h: moved _MSC_VER comparison macros as those are
not relevant to user-space
2021-10-06 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_get_environment, cob_display_environment): move strlen
out of a loop
2021-10-04 Simon Sobisch <simonsobisch@gnu.org>
* common.c: always handle SIGFPE, define manually if needed
* numeric.c (cob_s32_pow, cob_s64_pow), common.h: new functions for
integer exponentiation, see related #702
* intrinsic.c: replace int_pow definition and use with cob_s32_pow
* fileio.c [WIN32]: redefine mkdir instead of handling mode parameter
via defines when used
2021-10-02 Ron Norman <rjn@inglenet.com>
* fileio.c (lineseq_read): check LINE SEQUENTIAL data and if invalid
return 09 status per COBOL 2022
* fileio.c: change default for LS_SPLIT = TRUE
2021-10-01 Ron Norman <rjn@inglenet.com>
* fileio.c (lineseq_read): check LINE SEQUENTIAL data and if invalid
return 09 status per COBOL 2022
* common.c: added 'not set' for boolean options [disabed in 3.x]
* common.c: change default for LS_SPLIT = TRUE
* fileio.c, common.h: return status 06 for split line sequential
2021-09-30 Simon Sobisch <simonsobisch@gnu.org>
* common.c: save-guard against broken cob_module chain in dump
* termio.c, common.c: allow to explicit disable dump
2021-09-29 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c (EXTFH3): also handle OP_FLUSH, OP_DELETE_FILE, OP_COMMIT and
OP_ROLLBACK before checking record-pointer;
set file status 9/100 for unknown op-codes
* common.c (cob_external_addr): split into muliple functions
* fileio.c (cob_file_malloc): set the file's number of keys directly
* fileio.c (cob_file_external_addr): change the way the file is allocated,
having only its POINTER be "external" and use cob_file_malloc to allocate
and set the attributes
* common.h (cob_module): new attribute gc_version
* common.c (cob_check_version): set last modules gc_version
* fileio.c (cob_cache_file): fix aborts when running GC 2 modules with
INDEXED/RELATIVE files by converting old cob_file_key structure
to the expected one
2021-09-28 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_gettmpdir): do the lookup and validation only once,
also ensure for TMPDIR that it has no trailing slash
2021-09-27 Simon Sobisch <simonsobisch@gnu.org>
* common.c (call_exit_handlers_and_terminate): extracted from
(cob_stop_run, cob_tidy)
* reportio.c (cob_report_generate): backport of 2021-09-26 change
* common.c (cob_gettmpdir): fix to remove trailing slash
* screenio.c: FR # 387 supporting color codes 8-15 - using bits 1-3 for
the color value, bit 4 for attribute blink/highlight and ignoring
all higher bits
2021-09-26 Ron Norman <rjn@inglenet.com>
* reportio.c: Fixed to call back to DECLARATIVES for DETAIL line
2021-09-21 Christian Lademann <christian@lademann.online>
* termio.c, screenio.c: recognize 3-byte crt_status item and fill it
according to X/Open standard (CRT STATUS byte 3 will always be NULL).
The format of CRT STATUS depends on type and size of the defined item.
2021-09-21 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c (cob_pre_open): remove trailing spaces from fcd->filenameptr
and ensure that the filename length does not extend our max size
* fileio.c (copy_fcd_to_file): ignore flag "file with user status"
* fileio.c (fcd2_to_fcd3, fcd3_to_fcd): copy block size parameter (ignored)
* fileio.c (copy_fcd_to_file) [_WIN32]: additional handle DOS Slash when
building the assign name
* fileio.c (update_record_and_keys_if_necessary): extracted from
(find_file) and called separately
* fileio.c (find_file): set file's fcd backreference
* fileio.c (EXTFH3): disabled auto-adjustment of files' and fcd's
access mode for ORGANIZATION INDEXED, along with pre-setting status to 00
2021-09-15 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c (fcd2_to_fcd3): removed checks as this function only converts
* fileio.c (cob_sys_extfh): minor adjustments for bad arguments
2021-09-13 Ron Norman <rjn@inglenet.com>
* fextfh.c->fileio.c: Some fixes to following changes
2021-09-13 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c: merged EXTFH changes from trunk (fbdb.c,fisam.c,fextfh.c)
* fextfh.c: If record address changes, force rebuild of key info
* fextfh.c (copy_fcd_to_file): only access key structure for INDEXED files
* fextfh.c (fcd2_to_fcd3, fcd3_to_fcd2): extracted from (cob_sys_extfh)
* fextfh.c: do FCD2<->FCD3 translation for both COBOL calls and C calls
to EXTFH
* fextfh.c (copy_file_to_fcd, copy_fcd_to_file, copy_keys_fcd_to_file):
adjustments in conversion of internal/external file definition,
especially for incomplete FCD definitions
* fileio.c: minor adjustments for io-module loading
* common.h, fileio.c: definition and FCD2<->FCD3 translation for confFlags2
and lineCount (actual handling and tests open)
2021-09-12 Ron Norman <rjn@inglenet.com>
* fextfh.c: Some corrections for RELATIVE files and remove duplicated code
2021-09-07 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c (save_status): only internally distinguish between
COB_EC_I_O_EOP and COB_EC_I_O_EOP_OVERFLOW for now as otherwise
recompilation of modules would be necessary (-> postponed)
2021-09-06 Simon Sobisch <simonsobisch@gnu.org>
* exception.def, exception-io.def: update for COBOL 202x,
also adding some entries from COBOL 2014 and dropping one wrong
* fileio.c: handling of COB_EC_I_O_RECORD_CONTENT,
distinguish between COB_EC_I_O_EOP and COB_EC_I_O_EOP_OVERFLOW
* fileio.c (update_fcd_to_file): don't set error status at 0x
2021-09-05 Ron Norman <rjn@inglenet.com>
* fextfh.c: Add check for record address being available
2021-08-31 Simon Sobisch <simonsobisch@gnu.org>
* intrinsic.c, common.h: implemented (cob_intr_bit_of),
(cob_intr_bit_to_char)
* common.c: renamed (cob_memcpy) to (cob_move_intermediate) and
postponed handling of target size to cob_move
* common.c, common.h: implemented (cob_accept_microsecond_time)
2021-08-30 Simon Sobisch <simonsobisch@gnu.org>
* fextfh.c (copy_fcd_to_file): only access key structure for INDEXED files
2021-08-29 Ron Norman <rjn@inglenet.com>
* fileio.c: Adjust record size up to minimum for the file
* fextfh.c: Only check for missing record address if an I/O request
Do not check for OPEN/CLOSE operations
2021-08-23 Ron Norman <rjn@inglenet.com>
* fextfh.c->fileio.c: If FCD record address changes, make required updates
2021-08-18 Ron Norman <rjn@inglenet.com>
* fextfh.c->fileio.c: Check for key field defined before using it
2021-07-12 Simon Sobisch <simonsobisch@gnu.org>
* intrinsic.c, common.h: implemented (cob_intr_hex_of),
(cob_intr_hex_to_char)
2021-07-12 Ron Norman <rjn@inglenet.com>
* fextfh.c->fileio.c: check FCD-CURRENT-REC-LEN being changed on
WRITE/REWRITE
2021-07-07 Ron Norman <rjn@inglenet.com>
* reportio.c (cob_report_generate): Fix bug #745 - missing invoke of
DECLARATIVES for DETAIL line
2021-07-05 Ron Norman <rjn@inglenet.com>
* common.h (cob_file): Added flag_is_concat, org_filename and nxt_filename
* common.c: Handle runtime options COB_SEQ_CONCAT_NAME and
COB_SEQ_CONCAT_SEP used for 'concatenated input files'
* coblocal.h (cob_settings): Added fields for concatenated files
* fileio.c: Add code to handle SEQUENTIAL and LINE SEQUENTIAL
concatenated input files for OPEN INPUT and I-O
2021-07-02 Simon Sobisch <simonsobisch@gnu.org>
* reportio.c: move hard line/col limit to REPORT_MAX_LINES REPORT_MAX_COLS
* reportio.c (write_rec): changed to completely use cob_write
for CODE IS to handle all file attributes; backup and restore
original record definition
2021-07-02 Ron Norman <rjn@inglenet.com>
* common.h: Added FCD2 structure
* fextfh.c: Added checks for FCD2 being used
2021-07-01 Ron Norman <rjn@inglenet.com>
* fbdb.c->fileio.c [WITH_DB]: checks if filename is actually a directory
2021-03-18 Ron Norman <rjn@inglenet.com>
* common.h (cob_module): fields for section/paragraph/statement names
* common.c: adjusted to use new fields in cob_module
2021-03-04 Ron Norman <rjn@inglenet.com>
* common.h: Fixes to the LDCOMPX/STCOMPX set of defines
* fextfh.c->fileio.c: Fixes to handle the OP_GETINO function code
to collect information about an unopened file
Basically only works for INDEXED files (3.x: not with BDB)
* fileio.c: Additonal code to inspect the index control blocks
of an ISAM file and save the details
2021-02-11 Ron Norman <rjn@inglenet.com>
* termio.c (display_alnum_dump): added bounds check to fix invalid reads
2021-04-08 Simon Sobisch <simonsobisch@gnu.org>
* termio.c (display_alnum_dump): only consider isprint to decide
for necessary hex output
* common.c (cob_dump_module): set C locale to original one before dump
and restore previous one afterwards
* common.c (cob_sys_printable): set C locale to original one before
checking and restore previous one afterwards
2021-02-15 Simon Sobisch <simonsobisch@gnu.org>
* call.c (add_to_preload, cob_try_preload): extracted from
(cob_init_call handle), additional preparare cob_try_preload to be
callable from debuggers
2021-02-04 Simon Sobisch <simonsobisch@gnu.org>
* coblocal.h (COB_D2I): only use the half-byte of the char to resolve the
integer value, preventing overflows leading to huge/negative values and
providing conversion of common invalid data (SPACE/LOW-VALUE) to zero
along with correct conversion of numeric character from both ASCII and
EBCDIC to integer
* move.c: use of COB_D2I for conversions
and restore previous one afterwards
* move.c (store_common_region): minor refactoring
* numeric.c, common.c: clear use and separation of "sign" (GMP view) vs.
"flag_sign" (field attribute) vs. "has_negative_sign"
2021-01-28 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c (lineseq_read), common.c, coblocal.h:
backport of COB_LS_SPLIT from 4.x
2021-01-27 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_sys_getopt_long_long): fix for EBCDIC
* termio.c: check for output errors and early exit; while this is unlikely
to happen with stdscr/stderr, it is when using these functions in dump
code or externally (with real files or with memory mapped io)
2021-01-21 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_sig_handler): skip module dump for SIGHUP and SIGPIPE
* common.c (cob_stack_trace_internal): dump starting program and
parameters if in "verbose" mode (which is the default)
2021-01-08 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_backtrace), common.h: new variant of cob_stacktrace
with format similar to GDB's backtrace
* fileio.c (set_dbt): fix bug #701 bad initialization with DB_HOME
2021-01-07 Simon Sobisch <simonsobisch@gnu.org>
* common.c (print_version): msgid change moving URLs to parameter
per gettext-guidelines
* common.h: version defines to 3.2.0
2020-12-09 Ron Norman <rjn@inglenet.com>
* common.c, common.h: added cob_get_sig_name and cob_get_sig_description
* common.c (cob_sig_handler): use cob_get_sig_name instead of get_sig_name
* common.c (cob_set_signal): rewrote to be table driven
2020-12-18 Simon Sobisch <simonsobisch@gnu.org>
FR #397: add support for JSON GENERATE anonymous JSON objects
* mlio.c (generate_json_from_tree): handle OMITTED NAME attribute
2020-12-15 Simon Sobisch <simonsobisch@gnu.org>
Bug #692 missing output for DISPLAY WITH NO ADVANCING
* termio.c (cob_accept): always flush to ensure buffered output is seen
2020-12-08 Simon Sobisch <simonsobisch@gnu.org>
* Makefile.am (libcob_la_LDFLAGS): updated version-info
2020-12-07 Simon Sobisch <simonsobisch@gnu.org>
* termio.c (cob_dump_field): complete rewrite to allow any size of OCCURS
to be checked for "same as" and to allow that also with nested OCCURS
2020-12-05 Simon Sobisch <simonsobisch@gnu.org>
* common.h, fileio.c, intrinsic.c: removed unused include sys/timeb.h and
definitions for timeb and ftime
* termio.c (setup_lvlwrk_and_dump_null_adrs): handle level 0 as INDEX
2020-12-02 Simon Sobisch <simonsobisch@gnu.org>
* common.h: preprocessor check/define for S_ISDIR and S_ISREG now done
for all compilers
2020-11-30 Ron Norman <rjn@inglenet.com>
* common.c (cob_check_version): rewrote as it did not work on some platforms
2020-11-30 Simon Sobisch <simonsobisch@gnu.org>
* termio.c, common.h (cob_dump_field): adjusted variable types to unsigned
* termio.c, common.h (cob_dump_field): compat version for 3.1rc1
* termio.c (cob_dump_field): extracted setup_lvlwrk_and_dump_null_adrs and
setup_varname_with_indices into separate functions and call them only
if not skipped because of same data
* termio.c (cob_dump_field): fixes for non-standard 01 OCCURS for "same as"
* termio.c (cob_dump_field): postpone output of "same as" to gather multiple
identical entries into the same line as "XYZ (1,2..20) same as (1)"
2020-11-29 Simon Sobisch <simonsobisch@gnu.org>
* common.c: limit sscanf width for strings
* common.c (set_config_val): removed duplicate check for
ptr (!= 0 && == ' ')
* call.c, common.c, fileio.c, intrinsic.c, mlio.c, strings.c:
reduced scope of some variables
2020-11-28 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_check_version): restored compat option for GC 2.x pre 2.2
* fileio.c, screenio.c, strings.c, termio.c: fixed some minor coding issues
* termio.c (cob_dump_field): fixed bad memcpy
2020-11-27 Simon Sobisch <simonsobisch@gnu.org>
* common.c, common.h: added externalized cob_nop to have a portable way to
ensure some optimizations on C level not be done (currently: not removing
#line references)
2020-11-26 Ron Norman <rjn@inglenet.com>
* termio.c: Catch more table entries as repeated
2020-11-24 Ron Norman <rjn@inglenet.com>
* termio.c: Improve field dump routines to look for duplicated data
2020-11-23 Ron Norman <rjn@inglenet.com>
* common.h, move.c: add cob_init_table
2020-11-22 Ron Norman <rjn@inglenet.com>
* common.c: set LIBC_FATAL_STDERR_ more hard coded
* fbdb.c (ix_bdb_delete_internal)->fileio.c(indexed_delete_internal):
fix error in use of wrong record area
* fextfh.c->fileio.c (copy_file_to_fcd): use cob_cache_malloc instead
of cob_strdup
2020-11-22 Simon Sobisch <simonsobisch@gnu.org>
* common.c, common.h (cob_save_func): have correct return type
struct cob_func_loc* instead of void*
2020-11-20 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_stack_trace_internal): early exit if no data available
* common.c (cob_check_version): test for minimal version 2.2
2020-11-18 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_init): skip initialization again if already done as
external callers may call it falsely again
2020-11-16 James K. Lowden <jklowden@symas.com>
* common.c (cob_init) [__GLIBC__]: set LIBC_FATAL_STDERR_ to prevent
glibc from writing stack traces to /dev/tty.
2020-11-13 James K. Lowden <jklowden@symas.com>
* common.c (cob_check_version): support 3-part version strings
2020-11-09 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_terminate_routines): fixed typo in dump skip condition
* common.c (cob_strdup): minor performance improvement
* common.c (cob_gettmpdir): ensure TMPDIR without trailing slash
2020-11-08 Simon Sobisch <simonsobisch@gnu.org>
* common.c, common.h: new functions cob_check_ref_mod_detailed and
cob_check_ref_mod_minimal for adjusted check of COB_EC_BOUND_REF_MOD
2020-11-05 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c: initialize errno in all places where it is checked afterwards
* fileio.c [_WIN32]: implemented file locking via LockFileEx/UnlockFile
* common.c (cob_sys_waitpid) [_WIN32]: fixed logic error in #if, allowing
the best process synchronization possible on that platform
* common.h [_MSC_VER]: removed unused global includes
* common.h, call.c: allow removal of longjump by defining COB_WITHOUT_JMP
2020-10-27 Simon Sobisch <simonsobisch@gnu.org>
* common.h, common.c: FR #323 - external visible version number
external version defintion via new defines __LIBCOB_VERSION,
__LIBCOB_VERSION_MINOR, __LIBCOB_VERSION_PATCHLEVEL, __LIBCOB_RELEASE
and functions libcob_version, set_libcob_version to query and/or compare
these;
note: __LIBCOB_VERSION_PATCHLEVEL is _not_ the package's PATCHLEVEL
* common.c: extracted set_cob_build_stamp from print_version
* common.c, common.h: new function print_version_summary providing a two line
output for GnuCOBOL + C compiler and used libraries
* common.c (print_runtime_conf): additional output of LOCALEDIR
2020-10-26 Simon Sobisch <simonsobisch@gnu.org>
* call.c, common.c: defaults.h removed
* call.c: allow omitting the definition for COB_LIBRARY_PATH via config.h
* call.c (cob_get_field_str): check return code of ftell before use
* Makefile.am: pass LOCALEDIR via define
2020-10-22 Simon Sobisch <simonsobisch@gnu.org>
* call.c (cob_set_library_path, cob_init_call): completely reworked
reading in COB_LIBRARY_PATH: have working-directory prefixed only
if not part of environment setting COB_LIBRARY_PATH already,
always suffix internal default COB_LIBRARY_PATH,
remove trailing spaces from entries
* common.c (get_math_info): use return of snprintf instead of extra strlen
2020-10-20 Simon Sobisch <simonsobisch@gnu.org>
* move.c (cob_move_all): optimization by removing unnecessary malloc/free
for most executions and using constant attributes
2020-10-17 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c: fixed C89 declaration
2020-10-13 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_runtime_hint): replaced leading tab by "note"
to harmonize with cobc
2020-10-12 Ron Norman <rjn@inglenet.com>
* intrinsic.c, move.c, numeric.c, termio.c: updates to process
COB_TYPE_NUMERIC_COMP5 the same as COB_TYPE_NUMERIC_BINARY
except for DISPLAY then only display for f->attr->digits
2020-10-02 Simon Sobisch <simonsobisch@gnu.org>
* call.c: define fmemopen if available but declaration missing
2020-10-01 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c: extracted (is_suppressed_key_value) from (cob_read_next)
* fileio.c (indexed_rewrite): update to increase similarity to 4.x
* fileio.c (cob_savekey): fixed undefined behaviour (memcpy to itself)
2020-10-02 James K. Lowden <jklowden@symas.com>
* screenio.c: quell unused-result warning when compiled with
_FORTIFY_SOURCE, providing a draft for GCC_PRAGMA and GCC_POP
2020-09-30 Simon Sobisch <simonsobisch@gnu.org>
* mlio.c, common.h: duplicated cob_xml/json_generate to allow
for new decimal_point param without breaking API from 2018
* coblocal.h: include gettext without lib prefix
* call.c, common.c: use EXIT_SUCCESS and EXIT_FAILURE instead of exit(0/1)
2020-09-29 Simon Sobisch <simonsobisch@gnu.org>
* common.c [WITH_JSON_C]: added version output
* mlio.c: adjusted check of defines for XML/JSON,
include json-c according to its docs
2020-09-23 Simon Sobisch <simonsobisch@gnu.org>
* Makefile.am (install-data-hook): removed as per initial patch from
Eric Gallager in bug #73, fixing bug #576
2020-09-08 James K. Lowden <jklowden@symas.com>
* intrinsic.c (cob_intr_seconds_from_formatted_time): fix bug #886
2020-08-31 Simon Sobisch <simonsobisch@gnu.org>
* strings.c: huge performance improvements for INSPECT by splitting
the internal pseudo-marker "inspect mark" into separate char arrays
for marker and replacement: inspect_mark + inspect_repdata
* strings.c: replace magic numbers in inspect_common to enum inspect_type
2020-08-24 Simon Sobisch <simonsobisch@gnu.org>
* common.c (set_config_val): only create a new trace file if we already
have one open before
* common.c, coblocal.h (__cob_settings): new runtime configuration
* termio.c (cob_dump_field, display_alnum_dump): adjusted dump output,
including new "ALL ZEROES"
* termio.c (cob_dump_output, cob_dump_file): new functions
for adjusted codegen instead of "special directives" in
(cob_dump_field) with fallback for 3.1rc1
* fileio.c, coblocal.h: extracted (cob_exit_fileio_msg_only) from
(cob_exit_fileio) to be called only once and before the dump
* common.c, coblocal.h (__cob_settings): new runtime configuration
COB_STACKTRACE allowing to disable stracktrace creation on abort
* common.c: also handle SIGEMT; skip module dump for SIGTERM and SIGINT
2020-08-18 Simon Sobisch <simonsobisch@gnu.org>
rework file mapping via environment names and apply them to CBL_/C$
* fileio.c (has_directory_separator, looks_absolute): new helpers
* fileio.c (cob_chk_file_mapping, cob_chk_file_env): rewritten:
file names / parts that start with period/digit are not converted,
periods within the name converted to underscores to get the environment
variable name, empty environment names are not used, if COB_FILE_PATH
is set, it is always applied if the file name is neither absolute nor
start with -F/-D (acu-compat)
* fileio.c (cob_open): return COB_STATUS_31_INCONSISTENT_FILENAME if it is
unset/empty
* fileio.c (open_cbl_file, cob_sys_delete_file, cob_sys_copy_file,
cob_sys_check_file_exist, cob_sys_rename_file): CBL_ and C$ file routines
use common mapping rules now
2020-08-17 Simon Sobisch <simonsobisch@gnu.org>
* common.c (struct exit_handlerlist, cob_sys_exit_proc):
added priority for exit handler,
correct return for install_flag 2 (query) if entry not registered
* common.c (cob_sys_exit_proc, cob_sys_error_proc):
fix bad free for re-entry / delete of existing exit/error handler,
added ACU variant (currently deactivated)
work on installable error handlers (per MF and ACU)
* common.c (cob_runtime_error): remove error handler from the que before
calling it, effectively let error handlers re-install themselves;
check return code of called error handler, allowing to skip others
including the internal one; provide each error handler with a copy
of the error message (effectively CALL BY CONTENT)
2020-08-14 Simon Sobisch <simonsobisch@gnu.org>
* common.c: ensure that the module dump is only done once,
for example if a signal is trapped while dumping and that it is
always done on "error exit" (moved to cob_terminate_routines); store the
reason for the error exit as soon as possible
* common.c (cob_stack_trace_internal): extracted from cob_dump_module
* common.c (cob_runtime_error): always output the COBOL stack trace to
stderr on abort; note: the availability of the details (line + statement)
depends on the compiled modules (use of -fsource-location and friends)
* common.c (cob_stack_trace), common.h: new external function to output the
current COBOL stack trace
* common.c (cob_dump_module): stack trace is only output if we don't dump
to stderr or stdout (fixing double-output in the default scenario)
* common.c (cob_dump_module): dump if at least one module is prepared for
dump, not only "dump all if the last one was prepared"
* common.h (cob_runtime_option_switch: COB_SET_RUNTIME_DUMP_FILE),
common.c (cob_set_runtime_option, cob_get_runtime_option): external
setting for the module dump FILE *
* common.c: ensure that stack tracing + module dumping is never done
recursive
* termio.c (cob_dump_field): adjusted handling of fields with NULL address
2020-07-30 Simon Sobisch <simonsobisch@gnu.org>
* common.c: minimal adjustments to --info output
2020-07-26 Edward Hart <edward.dan.hart@gmail.com>
* screenio.c (cob_screen_puts): fixed bug #665, where spaces where
replaced with underscores in DISPLAY.
2020-07-25 Edward Hart <edward.dan.hart@gmail.com>
* screenio.c (cob_screen_get_all): improve number entry:
1. in insert mode, position cursor at rightmost integer digit upon
entering a field;
2. in insert mode, only beep at last character when no insertion is
possible.
2020-07-20 Edward Hart <edward.dan.hart@gmail.com>
* screenio.c (cob_screen_get_all): improve number entry:
1. prevent deletion, backspacing over or overwriting of decimal point;
2. entering decimal point jumps to character after it;
3. allow entry of sign;
4. entering sign jumps to sign;
5. create (hopefully) nice insert behaviour for numbers: cursor on
integral digits inserts to right, cursor on decimal digits inserts
to left.
2020-07-19 Edward Hart <edward.dan.hart@gmail.com>
* mlio.c, common.h: added support for JSON-C as JSON handler
2020-07-17 Edward Hart <edward.dan.hart@gmail.com>
* mlio.c, common.h: added decimal_point param to cob_xml/json_generate
--> changed with merge to separate function
2020-07-07 Edward Hart <edward.dan.hart@gmail.com>
* mlio.c: fixed memory issue
2020-06-30 Simon Sobisch <simonsobisch@gnu.org>
new functions in the C API for cob_field based access, see FR #383 FR #384
* common.c, common.h (cob_get_param_field, cob_get_field_size,
cob_get_field_sign, cob_get_field_scale, cob_get_field_digits,
cob_get_field_constant, cob_get_field_type, explain_field_type):
new functions to get a cob_field or information about it
* common.c, common.h (cob_get_field_str, cob_get_field_str_buffered):
new functions to get a field's value in "pretty-display" form
* common.c, common.h (cob_put_field_str): new function to set the field's
data using the appropriate internal type, returns EINVAL if data is invalid
* common.c, common.h, coblocal.h (cob_runtime_warning_external): exported
function, handle missing caller attribute
* common.c, common.h (cob_get_param_str, cob_get_param_str_bufffered,
cob_put_field_str): string exchange functions for param based API
* common.c, common.h (cob_getenv_direct): new function similar to cob_getenv
but without internal memory allocation
* termio.c, coblocal.h: renamed display_common to cob_display_common and made
it internally available
* intrinsic.c, coblocal.h: made cob_check_numval_f internally available
* fileio.c, coblocal.h: renamed cob_srttmpfile to cob_create_tmpfile and made
it internally available
2020-06-26 Edward Hart <edward.dan.hart@gmail.com>
* exception.def: split I/O exceptions into exception-io.def to control
exceptions for specific files (>>TURN EC-I-O file).
2020-06-26 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c (cob_fd_file_open, cob_file_open): removed duplicate code;
ensure that the cob_file->fd and ->file are not set if open fails set some
file attributes only if open works; set the cop_file->open_mode to CLOSED
if locking via fcntl fails
* common.c (cob_sys_system): deactivated WEXITSTATUS for now as MicroFocus
doesn't do this --> may be added later with a runtime configuration
* common.h, coblocal.h (cob_runtime_hint, cob_runtime_error,
cob_runtime_warning): made runtime message functions available again
2020-06-20 Ron Norman <rjn@inglenet.com>
* common.h: add mapkey to cob_file
* fileio.c<-fisam.c: Fix to handle old VBISAM that does not support
sparse indexes
* fileio.c<-fisam.c,fbdb.c: Fix to return status 21 instead of 22
when OPEN OUTPUT
2020-06-20 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_sys_x91): implemented / prepared all documented MF function
codes for x'91' library
* 11+12: allow accessing debug switch along to "programmable 0-7"
* 13+14: allow accessing "runtime switches 1-26" (as A-Z),
in case of A/N/T: set related runtime setting
* 15: prepared for program lookup
* 35: prepared for DOS EXEC call
* 46-49: prepared for file specific setting LS_NULLS/LS_TABS
* 69: prepared for directory search
* common.c (set_config_val): set switches D/N/T depending on other settings
2020-06-16 Ron Norman <rjn@inglenet.com>
* call.c (cob_get_dbl_param, cob_put_dbl_param), common.h: new functions
in C API
2020-06-16 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c (cob_screen_init) [HAVE_LIBPDCURSES]: fixed possible endless
loop when COLOR_PAIRS (an integer) extends SHRT_MAX (which seems to be
a PDCurses 4 CHTYPE_64 bug)
2020-06-14 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_external_addr): if size and name matches the errno
register -> return its address so the COBOL program may directly
access it - late part of FR #49
* call.c (insert), common.c (cob_init): ignore [_WIN32] if either
[HAVE_CANONICALIZE_FILE_NAME] or [HAVE_REALPATH] is defined
2020-06-12 Simon Sobisch <simonsobisch@gnu.org>
* cobgetopt.c: nearly redo the copy of GnuCOBOL's getopt implementation
from gnulib's 2020 version (still without: libc parts, structure,
more headers; undefine lock function calls, keep \n from msgids);
most important user change: we honor environment POSIXLY_CORRECT now
* move.c (cob_move_display_to_binary, cob_move_binary_to_display):
fix runtime error (overflow in assignment) recognized with bug #384
2020-06-10 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c: define fdatasync if missing (fixing Bug #644 warning on MacOS)
2020-06-09 Simon Sobisch <simonsobisch@gnu.org>
Bug #616 cannot redirect output of cobcrun --info
FR #385 more details for screenio in cobcrun --info
* cobcrun.c (get_screenio_and_mouse_info): new function,
extracted and extended from print_info (showing longname);
reasonable output for curses that isn't NCurses or PDCurses;
all curses calls but version info only in verbose mode
* cobcrun.c (get_math_info): new function,
extracted and adjusted from print_info
* cobcrun.c, common.h: (print_info) as delegate for
new (print_info_detailed) which handles verbose option
* coblocal.h: adjusted GCC-version for definition of visibility attribute
COB_HIDDEN and option to disable via COB_NO_VISIBILITY_ATTRIBUTE;
not a solution (-> move to configure) but a workaround...
Work on signal and call SYSTEM handling
* common.c (get_signal_name): extracted from (cob_sig_handler)
* common.c (cob_sys_system): don't abort if the command is too long
and always remove trailing space/low-value before the size check;
added a runtime warning if the command resulted in a signal and
translate the status via WEXITSTATUS if available
2020-05-16 Ron Norman <rjn@inglenet.com>
* fileio.c<-fisam.c (restorefileposition): Fixed bug #589 with
READ PREVIOUS/DELETE/READ PREVIOUS when reading thru a group of
duplicate keys
2020-05-10 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c (get_line_and_col_from_field): refactored from
get_line_and_col_from_num and get_cursor_from_program, now
containing additional handing of non-numeric group fields
for the position, fixing bug #632 DISPLAY/ACCEPT AT group-field
* common.c (check_current_date): silenced char-subscript warnings
by casts to unsigned char
2020-04-28 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c (indexed_keydesc): always use key component definition
if available fixing broken 1-part "components" using wrong offset
2020-04-26 Ron Norman <rjn@inglenet.com>
* fileio.c: For LINE SEQUENTIAL and OPEN I-O some platforms
(SUNOS for one) require that a fflush be done
between each read/write of the file
Simon 2022-02-04: for now surrounded with [READ_WRITE_NEEDS_FLUSH]
2020-04-14 Ron Norman <rjn@inglenet.com>
* fileio.c: Fixed to NOT mix I/O to FILE * via putc and 'int fd' via write
'FILE *' is buffered and 'int fd' is NOT so the data
could end up in a very strange sequence in the file
2020-04-11 Simon Sobisch <simonsobisch@gnu.org>
* common.c (print_info) [mpir_version]: fixed string overflow warnings
* numeric.c (cob_decimal_print): use of mpz_get_str in favor of gmp_sprintf
2020-04-01 Simon Sobisch <simonsobisch@gnu.org>
* common.c: changed "FUNCTION/USING parameter" to "FUNCTION/USING argument"
* screenio.c: moved screen initialization from internal to external
called function
2020-03-16 Simon Sobisch <simonsobisch@gnu.org>
* common.c [WITH_CISAM] (print_info): fixed bug #621 missing comma
2020-03-11 Simon Sobisch <simonsobisch@gnu.org>
* Makefile.am: adjusted invocation of help2man, using new defines
HELPSOURCES and HELP2MAN_OPTS
* Makefile.am: honor new conditional MAKE_HAS_PREREQ_ONLY
2020-03-09 Simon Sobisch <simonsobisch@gnu.org>
* common.c, intrinsic.c, numeric.c: FR #372 honor HAVE_GMP_H and HAVE_MPIR_H
2020-02-27 Simon Sobisch <simonsobisch@gnu.org>
* common.h: definition of COB_A_NORETURN for newer HPUX (__HP_cc)
2019-12-27 Ron Norman <rjn@inglenet.com>
* common.h: added cob_file.curkey to record recent file index
* fileio.c: cob_read_next will check for records returned with
a key that has all SUPPRESS character and skip the record.
This will handle old VBISAM which do not support key suppression.
2019-12-11 Simon Sobisch <simonsobisch@gnu.org>
Fix Bug #608, #700
* screenio.c (BUTTON3_DOUBLE_CLICKED): fix value for BUTTON3_DOUBLE_CLICKED
* screenio.c (field_accept): pass mouse position on KEY_MOUSE
* screenio.c (cob_display_formatted_text): fix early return for broken data
* common.c (set_config_val): pass COB_MOUSE_INTERVAL changes to screenio.c
2019-11-18 Ron Norman <rjn@inglenet.com>
* common.h, fileio.c (fextfh.c, fbdb.c): Updates to support
SET ... TO ADDRESS OF FH--FCD OF file and
SET ... TO ADDRESS OF FH--KEYDEF OF file
2019-11-14 Ron Norman <rjn@inglenet.com>
* common.c (get_config_val): fix for display of runtime options
* fileio.c: If bad data in LINE SEQUENTIAL file cause error status 71
instead of 34
2019-10-25 Edward Hart <edward.dan.hart@gmail.com>
* numeric.c (cob_add_int): fixed floating-point case (bug #603)
2019-10-19 Ron Norman <rjn@inglenet.com>
* fisam.c->fileio.c (indexed_read_next): correction for START LESS EQUAL
followed by READ PREVIOUS
* fbdb.c->fileio.c (indexed_open) [WITH_DB]: correction to not return 05
status when OPEN OUTPUT for an optional file
2019-10-15 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c (pass_cursor_to_program): fixed return column being off by -1
* screenio.c (get_cursor_from_program): fixed alphanumeric CURSOR to only
work for size 6
2019-10-01 Edward Hart <edward.dan.hart@gmail.com>
* fileio.c: fixed location of definition of off_t (bug #596)
2019-09-23 Simon Sobisch <simonsobisch@gnu.org>
* common.h: moved alignment defines to cobc/cobc.h
2019-09-03 Ron Norman <rjn@inglenet.com>
* call.c: Initialize valid_char when needed
* numeric.c: Correct the definition of 'isinf'
2019-09-20 Ron Norman <rjn@inglenet.com>
* reportio.c: Table up report for cleanup in cob_exit_reportio
2019-08-25 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c [WITH_DB]: minor refactoring - limit scope of some variables,
extracted (set_dbt) from (lock_record, test_record_lock)
2019-08-17 Simon Sobisch <simonsobisch@gnu.org>
* call.c (cob_resolve_internal): refactored to keep call_entry_buff
and call_entry_buff2 as a local variables instead of dynamic
storage check + allocating + deallocating
* common.h, call.c (cob_encode_program_id): extracted from
cob_resolve_internal and added explicit check for the buffer
size fixing bug #584; externalized for use by cobc
* common.h: new define COB_MAX_LITERAL_LEN, with currently 256k,
used in cobc instead of previous LONG_MAX
2019-07-14 Simon Sobisch <simonsobisch@gnu.org>
* system.def: added CBL_ALARM_SOUND and CBL_BELL_SOUND, both as alias
to cob_sys_sound_bell
2019-07-02 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_sys_oc_nanosleep): fixed by splitting get_sleep_nanoseconds
into an additional function get_sleep_nanoseconds_from_seconds
2019-06-30 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c: split cob_check_pos_status into handle_status and
pass_cursor_to_program
* screenio.c (pass_cursor_to_program): fix bug #483
increment line number by one, pass actual column
* screenio.c (get_cursor_from_program, cob_screen_get_all, field_accept):
fix bug #579 - use CURSOR clause in SPECIAL-NAMES also for positioning
* screenio.c: finished approach to add mouse support via COB_MOUSE_FLAGS
* screenio.c, common.c, coblocal.h: added COB_MOUSE_INTERVAL
2019-06-29 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c: extracted (get_accept_timeout) and removed the artificial
minimal limit FR #196
2019-06-23 Simon Sobisch <simonsobisch@gnu.org>
* mlio.c, move.c, numeric.c, reportio.c, termio.c: fixed possible
arithmetic overflow (especially because of cast errors on x64)
2019-06-10 Simon Sobisch <simonsobisch@gnu.org>
* common.c (gc_conf, set_config_val, get_config_val), coblocal.h:
split ENV_INT to ENV_UINT (all current options) and ENV_UINT (allowing
a negative min_value), actually check for numeric values
2019-06-09 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c: adjustments to fix issues reported by static code analyzer
2019-06-07 Simon Sobisch <simonsobisch@gnu.org>
* common.c (print_runtime_conf): fixed theoretical buffer overflow for bad
translation ("via" translated as very long string)
* common.h: new define MAX_FILE_KEYS (currently at 255) with main purpose
to limit allocation of external provided key definition
2019-05-31 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c (cob_settings_screenio): moved out of COB_GEN_SCREENIO
2019-05-30 Simon Sobisch <simonsobisch@gnu.org>
* Makefile.am (AM_CPPFLAGS): include new substituted LIBCOB_CPPFLAGS
* Makefile.am: handle LOCAL_CJSON by adding cJSON.c to libcob's nodist
sources and cJSON.c + cJSON.h to DISTCLEANFILES
2019-05-26 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_runtime_hint), coblocal.h: new funtion for output additional
information to a warning/error directly called before, especially important
for (cob_runtime_error) which invokes the error handlers,
used for this scenario throughout common.c
* common.c (cob_field_to_string): explicit check for field address
* fileio.c (cob_get_filename_print), coblocal.h: new function to provide a
filename for output with filename, assign and possible file mapping
* fileio.c (cob_exit_fileio), common.c (cob_fatal_error):
use of cob_get_filename_print
* fileio.c (cob_delete_file): check errno after unlink/indexed_file_delete
* reportio.c (cob_report_terminate, cob_report_generate): halt on fatal
error COB_EC_REPORT_INACTIVE
2019-05-19 Simon Sobisch <simonsobisch@gnu.org>
* common.c, mlio.c: check for WITH_XML2/WITH_CJSON before including
the corresponding header files as they showed to sometimes exist but
don't work, still ensure (for config.h not generated by configure)
that necessary headers are available
2019-05-13 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_fatal_error): added statement (if available) for
COB_FERROR_FILE
* common.c, mlio.c: adjusted to handle HAVE_CJSON_H as an alternative
to HAVE_CJSON_CJSON_H
2019-05-11 Simon Sobisch <simonsobisch@gnu.org>
* common.h: increased COB_MAX_WORDLEN to 63 per COBOL 202x
2019-04-19 Simon Sobisch <simonsobisch@gnu.org>
* common.c: fixed some bad/misplaced casts to size_t
* common.c, screenio.c: initial approach to add mouse support
via COB_MOUSE_FLAGS, including exception values
* common.c, screenio.c: adjustments to COB_INSERT_MODE are taken
into account at runtime
2019-04-15 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c (relative_read_next): change only place that did not use
size_t for relsize (which should be no problem as it used cob_s64_t
before)
* fileio.c: adjusted some counters to use size_t instead of casting them
* common.c, coblocal.h (cob_min_int, cob_max_int): moved smaller helper
functions that were defined as both inline and extern as static inline
in coblocal.h
2019-04-14 Ron Norman <rjn@inglenet.com>
* screenio.c: define ALT_DEL, ALT_LEFT, ALT_RIGHT
using \033 for Escape instead of \E to avoid C compiler problems
2019-04-12 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c: define PDC_NCMOUSE to use NCURSES compatible mouse api
2019-04-07 Simon Sobisch <simonsobisch@gnu.org>
* common.c (get_sleep_nanoseconds, internal_nanosleep): new functions;
moved the actual sleep code from cob_sys_oc_nanosleep and cob_sys_sleep
to a common place and finally allow fractions of seconds in C$SLEEP
* common.c, common.h (cob_continue_after): new function for FR #354
2019-04-01 Ron Norman <rjn@inglenet.com>
* fileio.c (cob_file_close): reset internal fd reference on close
* fileio.c (relative_start): fix seek operation for "less"-conditions
2019-03-25 Simon Sobisch <simonsobisch@gnu.org>
* common.c (print_info): output endianess and native EBCDIC
2019-03-23 Simon Sobisch <simonsobisch@gnu.org>
* libcob.h: removed inclusion of gmp.h
* common.h: cob_decimal is now only used if gmp.h / mpir.h / mp.h was
included before libcob.h, otherwise COB_WITHOUT_DECIMAL is defined
* mlio.c: fixed missing include stddef.h
2019-03-19 Simon Sobisch <simonsobisch@gnu.org>
* common.c: definition of COB_MAX_NAMELEN
* common.c: use of COB_MAX_NAMELEN, including sanity check
* mlio.c, numeric.c, coblocal.h: moved duplicated code from mlio.c
to numeric.c as separate function cob_set_field_to_uint
* coblocal.h [COB_WITHOUT_DECIMAL]: allow inclusion without gmp header
2019-03-15 Simon Sobisch <simonsobisch@gnu.org>
* common.c (check_valid_dir): converted from define to inline function
* common.c (print_stat): not-active debug function (grabbed from manpage)
2019-03-12 Simon Sobisch <simonsobisch@gnu.org>
* common.c (print_info): changed msgid for "file handler" and
already output if RTD-version of VB-ISAM is used (even if this
wouldn't work currently), partially after Ron Norman
2019-02-26 Simon Sobisch <simonsobisch@gnu.org>
* common.h: define COB_EXT_EXPORT / COB_EXT_IMPORT
2019-01-29 Simon Sobisch <simonsobisch@gnu.org>
* common.c, termio.c, coblocal.h: added COB_DISPLAY_PUNCH_FILE
* common.c (cob_set_runtime_option, cob_get_runtime_option),
common.h (cob_runtime_option_switch):
added COB_SET_RUNTIME_DISPLAY_PUNCH_FILE
2019-01-27 Simon Sobisch <simonsobisch@gnu.org>
* common.c, mlio.c, screenio.c: fixed compiler warnings
* common.c (print_info): fixed issues if curses is not available,
introduced 2019-01-22
2019-01-22 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c (cob_screen_init): fix background=foreground from terminal
* screenio.c (cob_screen_init, cob_screen_attr): explicit define and use
color_pair 1 as "black on black"
* screenio.c (cob_screen_attr): fix long standing bug in use of
color_set (takes color_pair_number, not a COLOR_PAIR)
* screenio.c (cob_screen_attr): extracted (cob_to_curses_color,
cob_get_color_pair, cob_activate_color_pair)
* screenio.c: fix compiler warnings and correctly use chtype
* common.c (print_info): extensive output of curses library including
size for chtype, wide yes/no and forced UTF-8 for PDCurses
* common.c: use SLASH_CHAR where possible
2019-01-20 Simon Sobisch <simonsobisch@gnu.org>
* common.c (check_valid_env_tmpdir): unset invalid TMPDIRs to prevent
warning/error messages from used tools
* common.c (print_info): added version output for libxml2 + cJSON
* mlio.c (cob_json_generate): fix warning about use of unset var
* mlio.c: fix warnings and issues about defines not set / set to zero
2019-01-05 Edward Hart <edward.dan.hart@gmail.com>
* mlio.c: added JSON GENERATE.
* common.h, common.c: replaced COB_FERROR_* #define's with
cob_fatal_error enum.
2019-01-03 Edward Hart <edward.dan.hart@gmail.com>
* xml.c: renamed file to mlio.c and cob_..._xmlio to cob_..._mlio.
2019-01-01 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c: check for definition of non-portable EDEADLK before using it,
possibly using EDEADLOCK instead
2018-12-31 Simon Sobisch <simonsobisch@gnu.org>
* system.def, common.h: new entry EXTFH / cob_sys_extfh
* fileio.c (cob_sys_extfh): new function used as COBOL wrapper for
EXTFH entry to prevent warnings about FCD3 structure, linking issues
and providing additional checks
* fileio.c (EXTFH): return file code 9/161 for different errors
* fileio.c (EXTFH), common.h: minimal implementation for ORG_DETERMINE
(will only work if the same FCD was already used with the same file)
* common.h (FCD3): adjustment to xfhfcd3.cpy
* common.h (KDB): split KDB_KEY to separate definition
2018-12-30 Ron Norman <rjn@inglenet.com>
* fileio.c (copy_file_to_fcd): Corrected memory allocation of EXTFH
data structs
2018-12-19 Ron Norman <rjn@inglenet.com>
fixing EXTFH bug #561, part II
* fileio.c (lineseq_write): handle EXTFH with write options not set
* fileio.c (copy_file_to_fcd, copy_fcd_to_file): added code for
LINE SEQUENTIAL flags for EXTFH interface
*Note: deactivated until file_features are merged from rw-branch*
2018-12-13 Ron Norman <rjn@inglenet.com>
fixing EXTFH bug #561, part I
* fileio.c (update_file_to_fcd): adjustments for setting openMode
* fileio.c (copy_fcd_to_file): fixed coding error if file has no keys
2018-11-25 Simon Sobisch <simonsobisch@gnu.org>
* intrinsic.c (cob_intr_content_of): fixed unlikely case of empty *srcfield
not raising EC-DATA-PTR-NULL
* intrinsic.c (cob_intr_content_length, cob_intr_content_of):
minor refactoring
* intrinsic.c (decimal_places_for_seconds): changed parameter to
unsigned int as it is enough and keeps the same types in callers
2018-11-22 Ron Norman <rjn@inglenet.com>
* move.c (cob_move_binary_to_binary): fixed to do truncation as required
2018-11-20 Ron Norman <rjn@inglenet.com>
* numeric.c (cob_print_realbin): fixed to call cob_binary_get_uint64
for unsigned field
2018-11-11 Simon Sobisch <simonsobisch@gnu.org>
* common.h [COB_WITHOUT_EXCEPTIONS]: allow include of libcob.h without
any other libcob header
2018-11-01 Simon Sobisch <simonsobisch@gnu.org>
* common.h [COB_WITHOUT_DECIMAL]: allow include of libcob.h without
gmp header
2018-10-28 Simon Sobisch <simonsobisch@gnu.org>
* common.c (print_info): fixed missing periods in GMP/MPIR version number
between minor and patchlevel
* common.c: minor refactoring - separate translate_boolean_to_int()
* common.h [__ORANGEC__]: added to used WIN32 defines
2018-10-21 Simon Sobisch <simonsobisch@gnu.org>
* common.h: exchanged system-specific PTRFILLER define for FCD3 by union
2018-09-30 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c [HAVE_FCNTL]: minor code cleanup
* common.c, common.h: new function cob_common_init to provide
C RTS and library setup, currently binding textdomain and
for [_WIN32] handling unix-lf
* common.c, coblocal.h, cobgetopt.c: activated translated messages
for COBOL runtime
* common.c, screenio.c: fixed to use constant strings for
static char * initialization, postpone msgid translation
* common.c (print_runtime_conf, get_config_val, var_print):
adjusted output of cobcrun -runtime-conf (boolean print as yes/no now)
2018-09-22 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c [WITH_DB]: fix split key access by using the component data
even if there is only one
2018-09-01 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_gettmpdir): check if the specified temporary location
is actually an existing directory; otherwise warn and check the next
environment variable; added check_valid_env_tmpdir, check_valid_dir
* common.c (output_source_location): removed extra space in warnings
if neither source-file nor source-line is set
* common.c (cob_runtime_warning): allow warnings before call to
cob_init()
* xml.c (set_xml_code): partially fix bug #548: don't try to set XML-CODE
if the module has no reference (and therefore no field) for it
2018-08-19 Simon Sobisch <simonsobisch@gnu.org>
* xml.c [!WITH_XML2] (cob_is_valid_uri): added minimal implementation,
as this function is also used from within cobc
* xml.c: explicit check for the non-standard header files instead of
the global WITH_XML definition
* xml.c, common.h: fixed compiler warnings
2018-08-19 Edward Hart <edward.dan.hart@gmail.com>
* xml.c: new file, added for XML GENERATE
2018-08-17 Simon Sobisch <simonsobisch@gnu.org>
* coblocal.h, numeric.c (cob_decimal_init2): fixed compiler warning
2018-06-21 Brian Tiffin <btiffin@gnu.org>
* common.h, intrinsic.c: CONTENTS-OF renamed to CONTENT-OF
2018-07-29 Simon Sobisch <simonsobisch@gnu.org>
* common.h: added defines for not yet implemented standard
I-O status values
2018-07-14 Edward Hart <edward.dan.hart@gmail.com>
* screenio.c (get_screen_item_line_and_col): fixed bug #514, where
length of elementary items with a LINE clause was ignored when
calculating the COL of subsequent items.
2018-07-13 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_check_ref_mod): display maximum size on overflow
2018-07-04 Edward Hart <edward.dan.hart@gmail.com>
* move.c (cob_move_display_to_edited): fixed bug #220 again; this time
where $ would incorrectly float before a string of +/-.
2018-06-24 Simon Sobisch <simonsobisch@gnu.org>
* system.def: bug #527 system call x'91' *always* uses three parameters
2018-06-21 Brian Tiffin <btiffin@gnu.org>
* common.h, intrinsic.c: Added CONTENT-LENGTH and CONTENTS-OF
2018-06-18 Ron Norman <rjn@inglenet.com>
* fileio.c: Updates to the EXTFH logic
You can now actually compile using MF Visual COBOL and include the
GnuCOBOL libcob as follows:
cob -L/usr/local/lib -lcob -C "CALLFH=EXTFH"
2018-06-10 Simon Sobisch <simonsobisch@gnu.org>
* common.h: allow to override COB_EXPIMP, especially for allowing
static builds on _WIN32 via -DCOB_EXPIMP=extern
2018-05-18 Simon Sobisch <simonsobisch@gnu.org>
* common.c [_WIN32]: only define __GMP_LIBGMP_DLL if it is not
defined already, allowing to use a static version by defining
__GMP_LIBGMP_DLL to 0
* Makefile.am (install-data-hook): added missing $(DESTDIR), as
reported by Eric Gallager in bug #73
2018-05-09 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c (cob_file_open): fix for bug #520
check f->fd before using it to prevent SIGSEGV on OPEN OUTPUT
* common.c (cob_sig_handler): minor format adjustment
2018-05-08 Simon Sobisch <simonsobisch@gnu.org>
* termio.c (cob_display): cater for HAVE_POPEN
* common.h, fileio.c [__ORANGEC__]: minor adjustments for
preprocessor defines
* common.c: added OrangeC version info
* reportio.c: removed unneeded header and defines
2018-04-16 Luke Smith <cobcoder@users.sourceforge.net>
* screenio.c:
- HOME and END toggle on current column.
- Backspace beep column 1.
2018-04-10 Luke Smith <cobcoder@users.sourceforge.net>
* screenio.c:
- replace Alt-Home and Alt-End with toggle functions
- fix Insert key at column 1
- fix other alt keys
2018-04-10 Simon Sobisch <simonsobisch@gnu.org>
* reportio.c [_WIN32]: fix redefinition of lseek
2018-04-03 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c (cob_screen_init): fix definition of alt keys
when function keys have negative values
2018-04-02 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_sys_getopt_long_long): fixed free of changed pointer
* move.c (cob_put_u64_compx, cob_put_s64_compx) [!WORDS_BIGENDIAN]:
fixed definition of unused variable
* common.c (cob_gettmpdir): check if environment variables for TEMP
points to usable directory before using it (fallback to ".")
* common.c (cob_init_nomain) [HAVE_READLINK]: fixed strcpy of
unterminated return from (readlink)
* common.c, reportio.c, termio.c: changed occurrences of strcpy
to strncpy to prevent possible buffer overflows
* common.h: moved definition of COB_MAX_SUBSCRIPTS from cobc/tree.h
* termio.c (cob_dump_field): allow longer field names and
number/high values of subscripts
* initrinsic.c (numval, cob_intr_locale_compare): fixed missing free
in cases of input errors
* fileio (cob_fd_file_open): directly set f->fd after open to prevent
possible ressource leaks with file status != 0
* fileio (cob_file_free): check pointer before dereferencing it
2018-04-01 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c (cob_screen_init): escape backslash in key definitions
2018-03-31 Simon Sobisch <simonsobisch@gnu.org>
* common.c (set_cob_time_from_local_time): new function called on
all systems, including code for computing UTC offset (with correct
sign)
* common.c (cob_get_current_date_and_time) [_WIN32]: no longer need
to force of date re-calculation as we always use localtime now
2018-03-29 Simon Sobisch <simonsobisch@gnu.org>
* termio.c (cob_display): added missing handling of cob_unix_lf
* common.c (set_cob_time_offset): recreated for use on all systems,
moved code for computation of UTC there, including adjustment by
daylight saving time (which was missing from _WIN32 until now),
set unknown offset in the unlikely case that computation of
UTC offset does not work
2018-03-21 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c (cob_convert_key): define ALT_DEL, ALT_HOME, ALT_END,
ALT_LEFT, ALT_RIGHT if they aren't defined already and map the
keys that were previously converted to use these defines,
also fixes accepting these keys in all curses implementations
that define these keys directly
* screenio.c (cob_screen_init): fix for bug #503 - based on work of
Luke Smith
add the PDCurses ALT key constants where not available instead of
using the version-dependent numeric values, if possible using
define_key to do this directly (if not this must be done be the users
terminal setting)
2018-03-18 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c (field_accept): fixed bug #498 and ignore
COB_INSERT_MODE for fields with size 1
2018-03-17 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c, common.h: fixed bug #500 CBL_READ_KBD_CHAR not
returning a value and characters being shown instead of hidden
* screenio.c: added missing screenio initializations in external
library routines
2018-03-13 Simon Sobisch <simonsobisch@gnu.org>
* common.c: added Tiny C version info
* termio.c: renamed (clean_nan) to (clean_double) and let it
remove the leading zero from the exponent
2018-03-11 Ron Norman <rjn@inglenet.com>
* common.c: Compute UTC without strftime and adjust for
daylight savings time, removed (set_unknown_offset)
2017-03-08 Ron Norman <rjn@inglenet.com>
* termio.c: standardize DISPLAY of NaN (Not A Number)
2018-02-25 Simon Sobisch <simonsobisch@gnu.org>
* common.c, coblocal.h (cob_get_dump_file): export for internal
call, only use trace file if dump file cannot be opened
* termio.c (cob_dump_field): removed trailing spaces for group
items, get trace file from (cob_get_dump_file)
* common.c, coblocal.h (cob_runtime_warning_external): new function
* call.c: warnings centralized, msgids changed
2018-02-23 Simon Sobisch <simonsobisch@gnu.org>
* common.c: cater for empty module_sources
2018-02-16 Simon Sobisch <simonsobisch@gnu.org>
* reportio.c: adjusted runtime error messages
2018-02-12 Simon Sobisch <simonsobisch@gnu.org>
* common.c, coblocal.h: removed external_display_print_file as
cob_display_print_file is always external
* common.c (cob_open_logfile): moved log file opening handling
code from cob_check_trace_file to new static function
* common.c (cob_debug_open): refactored, allowed debug log to be
opened in append mode
* common.c [COB_DEBUG_LOG]: fixed issues when debug log has same
name as trace file, fixed missing free of cob_debug_file_name
2018-02-09 Simon Sobisch <simonsobisch@gnu.org>
* common.c [!COB_DEBUG_LOG]: adjusted handling of COB_DEBUG_LOG to
minimize active code while still raise a warning (instead of an
error)
2018-01-31 Simon Sobisch <simonsobisch@gnu.org>
* common.h: change all typedef struct/union to be named using
the same name schema
* common.c (explain_field_type): new function,
used texts may be tweaked later
* common.c (cob_check_numeric): set COB_EC_DATA_INCOMPATIBLE if
applicable and use only printable representation int the error
message for numeric items that are actually printable,
otherwise use hex representation
2018-01-28 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c (valid_field_data): bug #491 allow numeric edited
fields to contain all spaces, internally seen as zero
2018-01-23 Ron Norman <rjn@inglenet.com>
* termio.c: standardize display of -NaN and NaN for float/double
2018-01-03 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c [WIN32]: fix missing definition of isnan / isinf
2017-12-31 Ron Norman <rjn@inglenet.com>
* fileio.c (cob_rewrite): BDB fix to allocation record area for
max record size
* common.c (cob_dump_module): flush stderr/stdout to get display output
before dump
2017-12-27 Simon Sobisch <simonsobisch@gnu.org>
* intrinsic.c (cob_mod_or_rem): fix bug #485 don't raise
EC-SIZE-ZERO-DIVIDE but EC-ARGUMENT-FUNCTION
2017-12-26 Ron Norman <rjn@inglenet.com>
* numeric.c: Fix bug #122 COMP-1 / FLOAT-SHORT + COMP-2 / FLOAT-LONG
to check of overflow and set SIZE ERROR condition when requested
2017-12-25 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_check_trace_file): FR #242 allow trace file to be
appended by starting COB_TRACE_FILE with "+"
* common.c: changes to new tracing: distinguish between function and
program, trailing output is not fixed-width, only use specified spacing
* common.c (cob_trace_prep, ): distinguish between function and program
* common.c (set_config_val): FR #242 allow COB_TRACE_FILE
(and COB_CURRENT_DATE) to be changed at runtime (currently untested!)
2017-12-23 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c (cob_decimal_get_field): fix bug #223 don't raise
EC-SIZE-OVERFLOW when EC-SIZE-ZERO-DIVIDE is active
2017-12-22 Ron Norman <rjn@inglenet.com>
* numeric.c: fixes for FLOAT-DECIMAL-16/34 data types to raise
SIZE ERROR condition when out of bounds
2017-12-21 Simon Sobisch <simonsobisch@gnu.org>
* common.c, termio.c, coblocal.h: renamed setting COBPRINTER to
COB_DISPLAY_PRINT_PIPE (with keeping an alias of COBPRINTER) and
COB_DISPLAY_PRINTER to COB_DISPLAY_PRINT_FILE
* common.c (cob_set_runtime_option, cob_get_runtime_option), common.h:
use enum cob_runtime_option_switch instead of anonymous int with
possible values as defines
2017-12-21 Ron Norman <rjn@inglenet.com>
* common.h: add code_is_present flag to cob_report structure
* reportio.c: output CODE value as fixed length field
(do not trim trailing spaces)
2017-12-20 Ron Norman <rjn@inglenet.com>
* common.h: add code_is, code_len to cob_report structure
* reportio.c: output CODE value and chop lines based on
PAGE LIMIT nnn COLUMNS
* numeric.c (cob_decimal_get_ieee64dec): Fix coding error
* numeric.c: Tidy up the cob_decimal_get/set routines
* numeric.c (cob_decimal_get_ieee64dec, cob_decimal_get_ieee128dec):
adjust the scale until the number is within the allowed max number of
digits so only if the scale is out of bounds will you get an OVERFLOW
and then ON SIZE ERROR
2017-12-17 Simon Sobisch <simonsobisch@gnu.org>
* strings.c, common.c, coblocal.h: cob_init_strings gets and stores
cob_global * as all other sources do
* call.c, common.c, fileio.c, intrinsic.c, strings.c: directly set internal
cobglobptr->cob_exception_code = 0 instead of using cob_set_exception,
fixing bug #196
* common.c (cob_get_exception_name), coblocal.h: renamed
cob_get_exception_code / cob_get_exception_name to
cob_get_last exception_code / cob_get_last_exception_name
* common.c (cob_last_exception_is), common.h: new function to check if a
specific error group/value is set
* common.c (cob_field_to_string): check if field has data assigned
* common.c (cob_runtime_error): ensure that registered error handlers
aren't called recursive and don't change error location
* common.c (cob_fatal_error): added COB_STATUS_31_INCONSISTENT_FILENAME
and check that ASSIGN field has a value before using it
2017-12-16 Ron Norman <rjn@inglenet.com>
* numeric.c (cob_decimal_get_ieee64dec): fix bug #470 (coding error)
2017-12-10 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c: adjustments after merge of split/sparse keys from rw-branch
2017-12-06 Simon Sobisch <simonsobisch@gnu.org>
* common.c, common.h, reportio.c: minor adjustments after merge
of reportwriter branch
* coblocal.h, common.h: moved declarations for COB_DEBUG_LOG to common.h
and set to COB_HIDDEN instead of COB_EXTERN
* common.c, coblocal.h: disabled all parts of internal debug log
if COB_DEBUG_LOG is not defined
2017-12-04 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_sys_system) [_WIN32]: FR #153 workaround for CALL 'SYSTEM'
on buggy Woe32 which removes first and last quote from command
2017-11-28 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_get_current_date_and_time_from_os)[!_WIN32]: fixed #469
ACCEPT FROM DAY being one too low
2017-11-15 Simon Sobisch <simonsobisch@gnu.org>
* common.c, common.h, coblocal.h, call.c: added (cob_init_nomain) to start
runtime initialization without setting the main handle (saves time on
each function lookup)
* call.c [COB_BORKED_DLOPEN]: no processing of mainhandle
2017-11-07 Simon Sobisch <simonsobisch@gnu.org>
* common.c, common.h, coblocal.h: added COB_SET_DEBUG as cob_debugging_mode
in local settings / global pointer
* common.c, coblocal.h: added internal configuration status option ENV_RESETS
for "needs additional code on change"
* common.c: added ENV_RESETS to COB_SET_DEBUG changing the externalized value
in cobglobtr when setting changes during runtime
2017-11-05 Simon Sobisch <simonsobisch@gnu.org>
* common.h: suppress C statement not reached warnings for Solaris C,
see bug #456
2017-11-02 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c: fixed bug #457 explicit check for error after all put/write
calls (calls to put were completely unchecked before) and raise correct
fileio status (especially 34 for disk/quota full) instead of status 30
2017-10-24 Simon Sobisch <simonsobisch@gnu.org>
* common.c: changed message format back to old version, see bug #455
2017-10-22 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_sys_fork): bug #451 reset cob_process_id after fork
* Makefile.am: moved include of top_srcdir to AM_CPPFLAGS to prevent
user-specified CPPFLAGS to override own includes, see bug #452
* common.c, common.h: minimal support for DJGGP,
including generation of 8.3 filenames
2017-10-17 Ron Norman <rjn@inglenet.com>
* common.h: add flag_debug_trace to the cob_module
* common.c: check flag_debug_trace to verify module
was compiled with --debug and/or -ftrace[all] and only
record trace information if compiled with the option
2017-10-11 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_check_ref_mod): bug #446 splitted checks for length and
combination of offset and length
* common.c (cob_external_addr): bug #445 added suppressible warning for
EXTERNAL data items that are requested with a smaller size than allocated
* common.c (cob_check_version): FR #239: allow difference in module version
vs. runtime version
FR #239 - adjustments for changed function signatures between 2.0-rc and 2.3:
* common.c (cob_check_odo): adjustments for changed function signature
* common.c (cob_check_subscript, cob_check_version): don't check subscript
max if at least one module is too old for the current function signature
2017-09-28 Edward Hart <edward.dan.hart@gmail.com>
* screenio.c (cob_screen_get_all): changed backspace to emit beep if
entered at start of field, not to act like back-tab (bug #426).
2017-09-21 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_sig_handler, cob_set_signal): added code for SIGFPE
in correspondence to SIGHUP code (+ additional error message);
set LCOV_EXCL markers for most of the signal handling
2017-09-18 Ron Norman <rjn@inglenet.com>
* fileio.c: Check if file ASSIGN field has NULL address and report a
runtime error and return status 31
2017-09-16 Edward Hart <edward.dan.hart@gmail.com>
* screenio.c (field_display): implemented DISPLAY ALL "blah" WITH SIZE
(bug #428).
2017-09-10 Edward Hart <edward.dan.hart@gmail.com>
* screenio.c (field_display, field_accept): fixed SIZE not working if it
was less than the item's length (bug #423).
* screenio.c: fixed naming style.
2017-09-04 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c (cob_screen_get_all, field_accept): beep instead of
wrong-casting characters we currently can't store
* screenio.c (field_accept): beep on insert if field is already full
* screenio.c (cob_screen_init): set cursor depending on insert mode
to vertical bar cursor (on) or square cursor (off)
* screenio.c (cob_screen_get_all): fix for handling BACKSPACE,
added handling for DELETE and INSERT keys and COB_INSERT_MODE
2017-08-29 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_init)[_WIN32]: only use GetUsername if HAVE_GETUSERNAME
is defined (for example in config.h)
2017-08-27 Simon Sobisch <simonsobisch@gnu.org>
* common.c: moved code to cleanup modules to cob_exit_common_modules
and do this only once (after exit handler calls, before call cleanup)
2017-08-26 Ron Norman <rjn@inglenet.com>
* common.c: Free the structs used to track modules on STOP RUN
2017-08-18 Ron Norman <rjn@inglenet.com>
* common.c: Keep list of all active modules for later free of
memory allocated for decimal constants
* common.c: cob_stop_run issue callbacks to free any decimal memory
* common.c: cob_module_enter check for Recursive CALL used in the
wrong place. Add cob_module_global_enter routine.
* common.h: Add cob_module_global_enter routine.
Add cob_stmt_exception to cob_global, used to indicate
the previous statment has ON EXCEPTION clause.
2017-08-15 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_tidy): don't exit if runtime isn't initialized yet
2017-08-13 Simon Sobisch <simonsobisch@gnu.org>
* call.c, common.c, fileio.c, intrinsic.c, screenio.c:
surrounded code parts that cannot be tested by LCOV_EXCP markers
2017-08-12 Ron Norman <rjn@inglenet.com>
* common.c: cob_stop_run issue callbacks to free any decimal memory
* common.c: avoid infinite loop walking COB_MODULE list when RECURSIVE
modules are being used
2017-08-08 Simon Sobisch <simonsobisch@gnu.org>
* common.c: common.h [_MSC_VER]: moved setenv hack to inline function
* common.c, common.h: new environment functions cob_setenv cob_unsetenv
* common.h, coblocal.h: moved declaration of cob_strdup to allow it
to be called like the other memory functions
2017-08-06 Ron Norman <rjn@inglenet.com>
* fileio.c (cob_file_external_addr): fixed bug #404, where the
cob_file_key for a RELATIVE file was not allocated.
2017-07-21 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c: moved cob_sys_get_char and added parts for !COB_GEN_SCREENIO
2017-07-20 Simon Sobisch <simonsobisch@gnu.org>
* common.h [__MINGW32__]: added missing defines
2017-07-18 Simon Sobisch <simonsobisch@gnu.org>
* common.h: increased MAX_FD_RECORD to 64MB and introduced
MAX_FD_RECORD_IDX with the old 64KB limit
2017-07-16 Edward Hart <edward.dan.hart@gmail.com>
* exception.def: update to COBOL 2014 and added finalizer exception.
2017-07-12 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c: checked the now optional sort-return before accessing it
2017-07-07 Edward Hart <edward.dan.hart@gmail.com>
* common.h (COB_REPORT_*): prevent undefined behaviour caused by 1 << 31
and fixed typos.
2017-06-16 Simon Sobisch <simonsobisch@gnu.org>
* Makefile.am: added CODE_COVERAGE parts as provided by AX_CODE_COVERAGE
* general: surrounded exception ABORTs that cannot be tested by
LCOV_EXCP markers
2017-06-04 Ron Norman <rjn@inglenet.com>
* common.c: Improved 'cobcrun -r' display for when
unsetenv is used in runtime.cfg to show environment variable
was removed and runtime.cfg variable was then present
2017-05-31 Ron Norman <rjn@inglenet.com>
* fileio.c (indexed_open) [WITH_DB]: if the first record in the file
has a size larger than the FD has defined then return status 39
2017-05-26 Simon Sobisch <simonsobisch@gnu.org>
* system.def: replaced misleading name C$PRINTABLE (OC-extension,
not a C$ -> ACUCOBOL extension!) by CBL_GC_PRINTABLE (old name
still supported for legacy reasons)
2017-05-24 Edward Hart <edward.dan.hart@gmail.com>
* common.c: fixed minor style issues, mostly missing spaces around
operators.
2017-05-22 Simon Sobisch <simonsobisch@gnu.org>
* common.c: renamed cob_get_current_date_and_time to
cob_get_current_date_and_time_from_os
* common.c, coblocal.c: store datetime from COB_CURRENT_DATE as
cob_time and check for this in cob_get_current_date_and_time
instead of in every function
* common.c: allow partial replace of datetime (including offset only)
by COB_CURRENT_DATE
2017-05-22 Ron Norman <rjn@inglenet.com>
* termio.c (pretty_display_numeric): handle
SIGN_SEPARATE TRAILING & LEADING
2017-05-18 Simon Sobisch <simonsobisch@gnu.org>
* system.def: added maximum call parameters for system library calls
2017-05-14 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c: correctly update file status for DELETE FILE statement
(we always returned 00 until now)
* fileio.c:
2017-05-13 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c (cob_move): return the status returned by (move)
* screenio.c: FR #191 only set flag pending_accept when cob_move
returns no error
2017-05-12 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_sys_oc_nanosleep): prefer HAVE_NANO_SLEEP over _WIN32
2017-05-11 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c (screen_display): FR #191 set flag pending_accept
for DISPLAY screen, too
2017-05-01 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_sig_handler, cob_set_signal): added code for SIGBUS
in correspondence to SIGSEGV code
2017-04-28 Simon Sobisch <simonsobisch@gnu.org>
* common.c (set_value, get_value): using correcting format modifier
for cob_s64_t (CB_FMT_LLD)
2017-04-27 Sergey Kashyrin <ska@kiska.net>
* common.c (set_value, get_value): changed type long to cob_s64_t
as SORT was broken on Windows
2017-04-23 Simon Sobisch <simonsobisch@gnu.org>
* common.h: always use COB_KEYWORD_INLINE (set by configure)
for COB_INLINE
2017-04-19 Ron Norman <rjn@inglenet.com>
* fileio.c (indexed_read) [WITH_DB]: check that the size of a record read
is not larger than what the FD has defined, return status 43 to the READ.
* fileio.c: for the callable EXTFH interface, set f->file_version
to COB_FILE_VERSION
2017-04-18 Ron Norman <rjn@inglenet.com>
* numeric.c, common.c, coblocal.h: define ISFINITE depending on
HAVE_ISFINITE to either use 'isfinite' or 'finite' or '_finite'
2017-04-10 Ron Norman <rjn@inglenet.com>
* move.c, call.c, common.h: C-API
Changed 'len' variables from 'int' to 'size_t' in cob_get_picx,
cob_put_picx, cob_get_picx_param, cob_get_grp_param, cob_put_grp_param
2017-04-10 Brian Tiffin <btiffin@gnu.org>
* common.c, common.h: remove cob_get_prog_pointer in preference to
cob_get_pointer.
2017-04-08 Edward Hart <edward.dan.hart@gmail.com>
* intrinsic.c (in_last_n_chars): fixed underflow when field->size was
less than n, ultimately causing an invalid read.
* fileio.c (indexed_open): fixed minor memory leak.
2017-03-31 Edward Hart <edward.dan.hart@gmail.com>
* intrinsic.c: fixed minor buffer overflows in the formatted-date
functions (see bug #357).
2017-03-19 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_chain_setup): only set field's value if given on
command line, preserve program internal initialization otherwise
2017-03-18 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_module_enter): set cob_call_params from argc
for main programs
* common.c (cob_chain_setup): don't set cob_call_params any more
* common.c [_MSC_VER] (cob_get_current_date_and_time):
silence wrong warning 6011
2017-03-12 Simon Sobisch <simonsobisch@gnu.org>
* common.c: fix minor memory leaks in configuration code
2017-02-07 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c: [!COB_GEN_SCREENIO] fixed zero_line_col_allowed
missing / superfluous in function declarations
2017-02-06 Ron Norman <rjn@inglenet.com>
* common.c, common.h:
added cob_module_free so that structure gets freed within libcob
* fileio.c, common.h:
Added new routines cob_file_external_addr, cob_file_malloc, cob_file_free
so that 'cob_file' is allocated within libcob.
This will allow the stucture have fields added to the end
without forcing a recompile.
2017-02-05 Simon Sobisch <simonsobisch@gnu.org>
* common.c, common.h, call.c: [__MINGW32__] fixes for mixed printf
format modifiers for long long
* common.c: [WIN32] check if PROCESS_QUERY_LIMITED_INFORMATION is
actually defined (not the case for MINGW and old VC versions)
2017-02-01 Ron Norman <rjn@inglenet.com>
* common.c, common.h:
Corrections to routines for handling -ftrace, -ftraceall & -fdump=ALL
2017-01-30 Ron Norman <rjn@inglenet.com>
* termio.c: for -fdump=ALL,IO; Dump FILE STATUS value
2017-01-25 Ron Norman <rjn@inglenet.com>
* common.c, common.h, coblocal.h, termio.c:
New routines for handling -ftrace, -ftraceall & -fdump=<scope>
-fdump=<scope> causes code to be generated that will dump out data
variables in the event of a program abort or abnormal end
New runtime.cfg/env-vars:
COB_DUMP_FILE, COB_DUMP_FORMAT, COB_DUMP_WIDTH
The old trace routines have been kept for backward compatible
2017-01-18 Ron Norman <rjn@inglenet.com>
* call.c (cob_get_param_type): added check for COB_FIELD_REAL_BINARY
2017-01-17 Ron Norman <rjn@inglenet.com>
* call.c: added code to handle default data field types by using cob_move
* move.c: added missing cob_put_s64_compx routine
2017-01-10 Simon Sobisch <simonsobisch@gnu.org>
* common.c: Copyright year 2017
2017-01-10 Ron Norman <rjn@inglenet.com>
* move.c, call.c, common.h: New routines added to provide
application C code access to COBOL data fields.
2017-01-09 Simon Sobisch <simonsobisch@gnu.org>
* common.h, common.c (cob_check_subscript): corrected minimum check
2017-01-05 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c (field_accept): don't write anything on the screen for
ACCEPT OMITTED
2017-01-02 Simon Sobisch <simonsobisch@gnu.org>
* common.c, common.h: new exported function cob_raise to raise a signal,
running both external and internal signal handlers
* termio.c (cob_accept_field): handle input code of ctrl-C as termination
command and cob_stop_run with 128 + 2 (fatal error 2)
* coblocal.h, common.h: move (cob_get_current_date_and_time) and
its data definition cob_time from coblocal.h to common.h
* common.c [_MSC_VER]: moved initialization of function pointer to
(get_function_ptr_for_precise_time), for call in
(cob_get_current_date_and_time)
* common.h: extended cob_time with is_daylight_saving_time and day_of_year
* common.c [_BSD_SOURCE]: get utc_offset directly from tm_gmtoff
2017-01-01 Ron Norman <rjn@inglenet.com>
* fileio.c (cob_read_next): change to return 46 on 2nd read on an optional
missing file, removed some redundant code
* fileio.c [WITH_DB]: moved call to join_environment to indexed_open
2016-12-30 Ron Norman <rjn@inglenet.com>
* fileio.c: [WITH_DB] fixed BDB locking issues by closing BDB cursor as
soon/often as possible as the BDB cursor seems to create some internal
locks
2016-12-27 Simon Sobisch <simonsobisch@gnu.org>
* common.h: added COB_MAX_UNBOUNDED_SIZE
* common.c (cob_allocate): check for COB_EC_STORAGE_IMP
returned when requested to allocate more than the maximum possible size
* common.h, common.c (cob_check_odo, cob_check_subscript): additional
parameters for table name in DEPENDING ON and flag for ODO, additional
runtime error line with the (current) maximum of the table
2016-12-26 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c, common.h: C interface addons including FR #187:
typedef cobchar_t, (cob_set_cursor_pos) / cobmove to set cursor position,
(cob_display_text) / cobaddstrc to display text at current cursor pos.,
(cob_display_formatted_text) / cobprintf to printf to current cursor
position, (cob_get_char) / cobgetch to get a single character or
function key, (cob_get_text) to get a text input and function keys with
a given size from current cursor position
* screenio.c, common.h, system.def: added system routine
CBL_PUT_SCR_POS / cob_sys_put_scr_pos to set the cursor position
and for compatibility: CBL_READ_KBD_CHAR / cob_sys_get_char to get
a single character (better use ACCEPT one-byte-var)
* common.c, common.h, coblocal.h, screenio.c: FR #191 added runtime
configuration COB_EXIT_WAIT and COB_EXIT_MSG for waiting if
extended ACCEPT after last extended DISPLAY (if any) is missing
2016-12-24 Ron Norman <rjn@inglenet.com>
* fileio.c [WITH_DB]: reordered struct indexed_file, adding file_lock_set
and use it to fix multiple unlocking
* fileio.c [WITH_DB]: extracted bdb_open_cursor, bdb_close_cursor,
bdb_close_index, lock_file
* fileio.c [WITH_DB]: added code for BDB < 4.6
2016-12-23 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c (field_accept): changes for ACCEPT OMITTED:
return COB-SCR-KEY-LEFT and COB-SCR-KEY-RIGHT, additional return
the new keycodes COB-SCR-INSERT, COB-SCR-DELETE, COB-SCR-BACKSPACE,
COB-SCR-KEY-HOME, COB-SCR-KEY-END (*only* for ACCEPT OMITTED!)
2016-12-22 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c: include isconfig.h (if not available define DISAM_NO_ISCONFIG)
and don't use isstat1/isstat2 if not available
2016-12-20 Simon Sobisch <simonsobisch@gnu.org>
* common.h: added compatibility define for cobclear and corrected
cobrescanenv to always return zero.
2016-12-18 Ron Norman <rjn@inglenet.com>
* fileio.c (lock_record, test_record_lock): initialize DBT structure
before using it to prevent memory corruption
2016-12-08 Simon Sobisch <simonsobisch@gnu.org>
* common.c (print_info): FR #169 output exact versions of GMP/MPIR and
BDB that were used for building libcob and the versions that are in
the loaded libraries if they differ, add output of curses_version()
* common.c (var_print): fixed empty/zero string
2016-12-05 Simon Sobisch <simonsobisch@gnu.org>
* common.c, coblocal.h (cob_strcat): fixing minor memory leak by adding a
third parameter which should be set if the result is assigned to one of
the original strings
2016-11-19 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_sys_fork, cob_sys_waitpid): don't abort if necessary
functions aren't available on the sysytem or fail, return -1 or
the system specific error code instead
* common.c (cob_sys_waitpid): added [_WIN32] implementation
2016-11-17 Ron Norman <rjn@inglenet.com>
* common.c, common.h, system.def: added cob_sys_fork for CBL_GC_FORK
(fork a new COBOL process) and cob_sys_waitpid for CBL_GC_WAITPID
(wait for completion of another process)
* system.def: Add CBL_GC_xxx as alias for CBL_OC_xxx
2016-11-13 Simon Sobisch <simonsobisch@gnu.org>
* common.c, coblocal.h, fileio.c: moved common code parts of fileio.c as
function (cob_runtime_warning) to common.c ;
reformatted message and include source location, if known
* call.c (cob_call_field): warn and remove leading spaces for CALL
2016-10-31 Simon Sobisch <simonsobisch@gnu.org>
* call.c (cob_call): fr #101 - allow more parameters for CALL:
renamed COB_MAX_FIELD_PARAMS to MAX_CALL_FIELD_PARAMS (set in configure),
allowed additional options 192 and 252, new default: 192
2016-10-29 Simon Sobisch <simonsobisch@gnu.org>
* common.c: check "COB_UNIX_LF" before error COB_FERROR_INITIALIZED
2016-10-27 Simon Sobisch <simonsobisch@gnu.org>
* fileio.c: added COB_UNUSED() for parameters of indexed file functions
when configured --without-db
2016-10-15 Simon Sobisch <simonsobisch@gnu.org>
* common.h: re-fixed COB_ONCE for MSC
* system.def: replaced octal by hex strings for hex-system routines
2016-11-07 Ron Norman <rjn@inglenet.com>
* move.c, common.h: added cob_move_ibm function for 'move-ibm'
2016-10-13 Ron Norman <rjn@inglenet.com>
* numeric.c, common.h: added cob_decimal_align function for 'arithemtic-osvs'
2016-10-02 Ron Norman <rjn@inglenet.com>
* common.c: report time in COB_DEBUG_LOG for performance test
* reportio.c: fixed scan for changed fields to be faster
2016-10-02 Edward Hart <edward.dan.hart@gmail.com>
* common.h: added cob_flags_t typedef for variables made of bit flags.
2016-09-19 Ron Norman <rjn@inglenet.com>
* numeric.c: added cob_decimal_clear
2016-08-24 Edward Hart <edward.dan.hart@gmail.com>
* common.c (cob_get_current_date_and_time): fixed bug where milliseconds
where confused with nanoseconds.
2016-08-20 Simon Sobisch <simonsobisch@gnu.org>
* common.c, common.h: new routine (cob_is_initialized)
* common.c (cob_module_enter): activated storing module call parameters
on module entry
2016-08-16 Edward Hart <edward.dan.hart@gmail.com>
* screenio.c (field_accept): fixed bug #300 (segfault on screen ACCEPT
OMITTED).
2016-08-01 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_runtime_error): reversed the prefix from runtime errors,
always starts with "libcob: " now
* common.c (cob_get_strerror): own reentrant version of strerror
* common.c (cob_load_config_file): use cob_get_strerror instead of
a guessed error message
2016-07-31 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_reg_sighnd): call cob_set_signal() if not done already
2016-07-29 Simon Sobisch <simonsobisch@gnu.org>
* coblocal.h: changed types in config_tbl to unsigned (compiler warnings)
* common.h [_MSC_VER]: added definitions for COB_NOINLINE, COB_A_INLINE
2016-07-17 Edward Hart <edward.dan.hart@gmail.com>
* screenio.c: added support for LINE/COL 0.
* screenio.c: fixed small issues with DISPLAY ALL X"02" and X"07".
2016-06-26 Simon Sobisch <simonsobisch@gnu.org>
* common.h, coblocal.h: moved internal functions to coblocal as COB_HIDDEN
* common.h: added COB_EXPIMP to cob_set_exception
* common.c, coblocal.h: #ifdef 0 for unused helper functions
cob_int_to_string and cob_int_to_formatted_bytestring
2016-06-26 Edward Hart <edward.dan.hart@gmail.com>
* common.c, common.h, move.c, string.c: moved cob_max_int and cob_min_int
to common.c.
2016-06-26 Simon Sobisch <simonsobisch@gnu.org>
* common.c, common.h: minor fixes for compatibility to VC2005
2016-06-20 Ron Norman <rjn@inglenet.com>
* common.h: added some COB_CHAR_xxx to define some characters
* fileio.c: for LINE SEQUENTIAL files with COB_LS_VALIDATE = true
changed bad data error from 30 to 34
Also allow some characters thru such as BS, FF, TAB, ESC, SI
No data validation is done for LINE ADVANCING output files
* coblocal.h, common.c: FR #138 identify config variables which accept
a path list and any which only accept a single directory/file
are checked for the PATH_SEP character and error is given if
that has been used by mistake. Example:
Invalid value '/temp:/tmp' for configuration tag 'COB_TRACE_FILE';
should not contain ':'
2016-06-18 Simon Sobisch <simonsobisch@gnu.org>
* general: revised all message strings
* screenio.c: added (cob_get_scr_cols) and (cob_get_scr_lines) for
providing the C interface with the current COBOL screen cols/lines
* common.h: FR #145: added defines for cobcols, coblines and cobrescanenv
* common.c, common.h: FR #126: renamed (runtime_env) to (runtime_conf)
2016-05-27 Edward Hart <edward.dan.hart@gmail.com>
* move.c (cob_move_display_to_edited): fixed bug #220 - fixed insertion
which float are now distinguished from those which don't.
2016-05-22 Edward Hart <edward.dan.hart@gmail.com>
* common.h, move.c, termio.c: replaced PICTURE strings containing packed
ints with array of (cob_pic_symbol) structs which are easier to use.
2016-05-01 Ron Norman <rjn@inglenet.com>
* common.c fixed incorrect reporting of error for undefined environment variables
2016-04-26 Brian Tiffin <btiffin@gnu.org>
* common.c, common.h: Re-fixed CBL_OC_HOSTED tzname, timezone, daylight
for VC2013 names.
2016-04-25 Brian Tiffin <btiffin@gnu.org>
* common.c: Fixed CBL_OC_HOSTED tzname, timezone, daylight for WIN32 names.
2016-04-23 Brian Tiffin <btiffin@gnu.org>
* common.h, numeric.c: 64bit unsigned treated as signed when long int
same size as long long.
2016-04-22 Ron Norman <rjn@inglenet.com>
* common.h, reportio.c: support features of an IBM REPORT WRITER
PRESENT AFTER & ABSENT AFTER
2016-04-06 Brian Tiffin <btiffin@gnu.org>
* common.c: Updated CBL_OC_HOSTED with tzname, timezone, daylight.
2016-03-29 Edward Hart <edward.dan.hart@gmail.com>
* common.c (cob_set_exception), common.h, coblocal.h: made cob_set_
exception a public function for SET LAST EXCEPTION TO OFF. Also made
argument of 0 reset all exception information.
2016-03-28 Brian Tiffin <btiffin@gnu.org>
* common.c, common.h, system.def: Added CBL_OC_HOSTED
feature-request #49.
2016-03-23 Edward Hart <edward.dan.hart@gmail.com>
* intrinsic.c (numval): added missing NUMVAL-C-specific code I missed in
r793, causing bug #218.
2016-03-21 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_set_location, cob_trace_section, cob_exit_common): fix for
bug #216 - store a duplicate of cob_last_sfile for tracing, free on exit
2016-03-15 Ron Norman <rjn@inglenet.com>
* common.c: display COB_PRE_LOAD as set and as evaluated
* call.c: clear COB_PRE_LOAD value before evaluating
2016-03-13 Simon Sobisch <simonsobisch@gnu.org>
* intrinsic.c (locale_time): consolidation still used sizeof(buff) after
buff changed from char [] to char *, fixed by introducing LOCTIME_BUFSIZE
* intrinsic.c (cob_intr_lcl_time_from_secs) re-added missing exception
2016-03-12 Edward Hart <edward.dan.hart@gmail.com>
* intrinsic.c: consolidated copy-and-pasted code in numerous functions,
including: SUBSTITUTE(-CASE), NUMVAL(-C), VARIANCE and
LOCALE-TIME(-FROM-SECONDS).
* intrinsic.c: renamed "xqtyear" variables to "current_year".
2016-03-07 Ron Norman <rjn@inglenet.com>
* fileio.c: fixed EXTFH to save/restore 'opts' value for some
READ/WRITE operations. Without this it was not writing LF
at end of line sequential records
2016-02-21 Simon Sobisch <simonsobisch@gnu.org>
* common.c (set_config_val): removed use of cob_strcat for output of
possible values
2016-02-17 Edward Hart <edward.dan.hart@gmail.com>
* screenio.c (set_default_line_column): fixed bug #202 where screens
were displayed at the cursor position when no LINE or COL was given.
2016-02-01 Ron Norman <rjn@inglenet.com>
* fileio.c: fixed to call cob_set_exception for the EXTFH interface
2016-01-31 Simon Sobisch <simonsobisch@gnu.org>
* intrinsic.c (split_around_t): fixed stack overflow occuring in wrong
date/datetime format strings for FUNCTION TEST-FORMATTED-DATETIME
* intrinsic.c: changed definition of string lengths for date/time
according to existing ones (COB_xyz_BUFF)
* common.h [_MSC_VER]: adding alias for setenv/unsetenv fixing small memory
leak for calls of (putenv) - MSC duplicates the string, POSIX does not
2016-01-30 Simon Sobisch <simonsobisch@gnu.org>
* general: fixing all warnings generated by msc code analysis
(possible memory related issues)
* common.c (cob_rescan_env_vals): always remove invalid settings from env.
* common.c (cob_realloc): new, combining cob_malloc, cob_free and memcpy
* common.c (cob_get_current_date_and_time) [_MSC_VER]: use fallback
to GetLocalTime if calls to FileTimeToSystemTime or
SystemTimeToTzSpecificLocalTime return an error
* common.c (print_version): changed generation of build stamp
* common.c (cb_config_entry): corrected check for setting without value
and postponed it, doing the check for a valid setting name before
* cobgetopt.c (cob_getopt_long_long): Fix bug #194 and warnings of msc code
analysis (possible memory issues) - switched from alloca to cobc's
internal memory handling (cobc_malloc and cobc_free)
2016-01-24 Edward Hart <edward.dan.hart@gmail.com>
* screenio.c: fixed bug #160 - added support for variable screen origin.
2016-01-23 Edward Hart <edward.dan.hart@gmail.com>
* screenio.c (cob_screen_attr): fixed bug #192 - stopped ERASE and BLANK
being applied in ACCEPT statements.
2016-01-17 Edward Hart <edward.dan.hart@gmail.com>
* screenio.c (get_screen_item_line_and_col): simplified and improved to
make interpretation of LINE and COL clauses more similar to that of
other implementations.
2016-01-08 Simon Sobisch <simonsobisch@gnu.org>
* call.c (cob_call): fr #101 - allow more parameters for CALL
(COB_MAX_FIELD_PARAMS to be one of 16/36/56/76/96)
2016-01-01 Ron Norman <rjn@inglenet.com>
* common.c (cob_set_runtime_option, cob_get_runtime_option), common.h,
coblocal.h, termio.c: added cob_set_runtime_option / cob_get_runtime_option
to allow TRACE and/or DISPLAY UPON PRINTER output to be redirected
to a specific (FILE*)
2015-12-31 Edward Hart <edward.dan.hart@gmail.com>
* common.h: added COB_SCREEN_GRID.
2015-12-30 Edward Hart <edward.dan.hart@gmail.com>
* screenio.c: fixed bug #176 - added code to correctly find the line and
column of a screen item.
* common.h: changed cob_screen to a doubly linked list (to simplify the
algorithm required above).
2015-12-24 Edward Hart <edward.dan.hart@gmail.com>
* intrinsic.c: added SYSTEM-OFFSET and support for unknown offsets for
FORMATTED-(DATE)TIME.
2015-12-24 Edward Hart <edward.dan.hart@gmail.com>
* screenio.c: implemented FULL and REQUIRED clauses.
2015-12-14 Brian Tiffin <btiffin@gnu.org>
* numeric.c (cob_print_realbin): bug #171 - unsigned values fail with high bit set
2015-12-07 Edward Hart <edward.dan.hart@gmail.com>
* common.c (cob_get_current_date_and_time): fixed bug where offset_known
was not set to 1 on Unix systems.
2015-12-07 Edward Hart <edward.dan.hart@gmail.com>
* intrinsic.c: fixed bug #170 - added detection of whether offset_known
is true or not - and added detection of EC-IMP-UTC-UNKNOWN exception.
* exception.def: added EC-IMP-UTC-UNKNOWN.
2015-12-05 Edward Hart <edward.dan.hart@gmail.com>
* intrinsic.c: added support for optional offset parameter for
FORMATTED-(DATE)TIME functions (defaults to zero).
2015-12-03 Edward Hart <edward.dan.hart@gmail.com>
* intrinsic.c: fixed bug #169 - added correct implementation of times
ending with Z (i.e. to return the UTC time).
2015-11-08 Simon Sobisch <simonsobisch@gnu.org>
* intrinsic.c (cob_intr_current_date): bug #164 - offset for CURRENT-DATE
2015-10-28 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_check_linkage): add function for check of linkage items
(currently checking only access to not passed OPTIONAL items)
2015-10-25 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_init)[WIN32]: resolve COB_UNIX_LF before reading runtime
configuration as error messages would have wrong LF otherwise
2015-10-24 Simon Sobisch <simonsobisch@gnu.org>
* common.c (conf_runtime_error): add function for configuration specific
errors and tweaked the messages
* common.c (set_config_val): added possible values for gc_conf.enums
to error messages; added check of maximum values for ENV_SIZE
* common.c (cob_load_config_file): if include file is not found prefix
it with path of current loaded configuration file
* common.c: tweaked output for --runtime-env and added function
(set_config_val_by_name) for overriding default values (used for USERNAME)
2015-10-25 Edward Hart <edward.dan.hart@gmail.com>
* screenio.c: fixed bug #161 - fixed screens terminating when the number
of characters entered equalled the length of the first field.
* screenio.c: added a few comments and shortened some code.
2015-10-17 Edward Hart <edward.dan.hart@gmail.com>
* intrinsic.c: fixed bug #159 - added conversion from 1-based to 0-based
coordinates for case where only LINE clause is given on
ACCEPT/DISPLAY.
2015-10-10 Simon Sobisch <simonsobisch@gnu.org>
* common.c [WIN32][MINGW]: tweaking of additional environment settings
2015-10-10 Ron Norman <rjn@inglenet.com>
* common.c: added code to report additional environment settings
2015-10-06 Edward Hart <edward.dan.hart@gmail.com>
* intrinsic.c: fixed bug #158 - fixed TEST-FORMATTED-DATETIME rejecting
October (month #10). Also fixed unreported bug where
TEST-FORMATTED-DATETIME rejected dates followed by whitespace.
2015-09-21 Simon Sobisch <simonsobisch@gnu.org>
* common.h: cast PATHSEPC PATHSEPS SLASH_INT SLASH_STR with appropriate type
and rename the first three to PATHSEP_CHAR PATHSEP_STR SLASH_CHAR
2015-09-16 Ron Norman <rjn@inglenet.com>
* fileio.c: fixed coding error related to support for EXTFH
It was returning the index number as 1 relative instead of 0 relative
2015-08-21 Edward Hart <edward.dan.hart@gmail.com>
* screenio.c: implemented LOWLIGHT.
2015-08-20 Edward Hart <edward.dan.hart@gmail.com>
* screenio.c: added detection of EC-SCREEN-LINE-NUMBER,
EC-SCREEN-STARTING-COLUMN and EC-SCREEN-ITEM-TRUNCATED.
* screenio.c, common.h: refactored functions implementing ACCEPT and
DISPLAY.
2015-07-25 Simon Sobisch <simonsobisch@gnu.org>
* call.c (cob_init_call): Don't add the current directory "." to resolve_path
if it's already set (either via runtime configuration or default value)
2015-07-07 Ron Norman
* DISPLAY ... UPON PRINTER can be redirected via
the env var COBPRINTER similar to what Micro Focus supports
cob_display will do a popen of whatever COBPRINTER is defined
In addition COB_DISPLAY_PRINTER can be used as a file name and
cob_display will do an fopen "a" and append to that file
termio.c, common.c changed
* fileio.c fixed to avoid core dump when COB_SYNC and using BDB
2015-07-07 Ron Norman <rjn@inglenet.com>
* Accept env var COB_CURRENT_DATE/COB_DATE and runtime.cfg current_date
to specify a date override for the application.
All ACCEPT FROM DATE, DAY, TIME will the use the value defined
rather than the current system time.
This will be a useful feature for application testing.
* common.c (cb_config_entry): keyword "reset": reset data pointer in gc_conf
* common.c (cob_expand_env_string): copy SPACE, LR, CR, HT, VT as spaces,
the first implementation dropped them completely
* fileio.c fixed to avoid core dump when COB_SYNC and using BDB
2015-06-24 Edward Hart <edward.dan.hart@gmail.com>
* intrinsic.c: bug #140 - changed pow to int_pow to avoid rounding
errors. On MinGW, pow (10, 8) rounded to 9999999 instead of 10000000,
for example.
2015-06-22 Luke Smith <cobcoder@users.sourceforge.net>
* screenio.c: Add or enhance special keys to Extended ACCEPT.
Insert, Tab, Shift-Tab, Backspace, Delete, Alt-Delete, End,
Alt-End, Home, Alt-Home, Left-arrow, Alt-Left-arrow,
Right-arrow, Alt-Right-arrow.
2015-06-08 Luke Smith <cobcoder@users.sourceforge.net>
FR #37 - Added WITH SIZE to extended ACCEPT and DISPLAY
* common.h (cob_field_accept, cob_field_display): new signature
* screenio.c (cob_field_accept, cob_field_display):
additional parameter to specify size to use for ACCEPT/DISPLAY
* termio.c (cob_accept, cob_display): adjusted for new signature
of cob_field_accept and cob_field_display
2015-06-21 Edward Hart <edward.dan.hart@gmail.com>
* common.c: fixed segfault caught in updated SWITCH test by extending
cob_switch array by 1.
2015-05-18 Luke Smith <cobcoder@users.sourceforge.net>
* screenio.c (cob_screen_attr): Fix bug #143 WITH BLANK SCREEN / BLANK LINE
has to color the whole screen / line.
2015-05-16 Simon Sobisch <simonsobisch@gnu.org>
* common.c: fr #65 added more switches "SWITCH-16" to "SWITCH-36"
2015-05-14 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cb_config_entry): remove redundant aliases !copy/(un)set/!anything
* common.c: add ACUCOBOL configuration aliases LOGICAL_CANCELS
(= !COB_PHYSICAL_CANCEL) and STRIP_TRAILING_SPACES (= !COB_LS_FIXED)
2015-05-12 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_load_config_file, cob_load_config): respect environment
COB_CONFIG_DIR when loading runtime configuration
2015-05-12 Ron Norman <rjn@inglenet.com>
* common.c: changed to be more specific about acceptable values for
runtime boolean options
2015-05-11 Simon Sobisch <simonsobisch@gnu.org>
* intrinsic.c (cob_intr_current_date): return field with size of 21
and without trailing NULL
2015-05-06 Simon Sobisch <simonsobisch@gnu.org>
* common.h, coblocal.h, call.c, common.c: fixed CALL after physical CANCEL
by moving physical_cancel (defined in call.c and referenced via
runtimeptr) to cobglobptr->cob_physical_cancel for check in COBOL modules
2015-04-29 Ron Norman <rjn@inglenet.com>
* reportio.c: change to allocate larger size data area for temp
fields used for CONTROL breaks. This is a cludge to avoid
something that is clobbering free memory on SUN system.
It did work fine on x86 Linux so watch out for this later.
2015-04-27 Ron Norman <rjn@inglenet.com>
* fileio.c, common.h (cob_file): updated to support line sequential rewrite
* fileio.c, common.c, coblocal.h (cob_settings): new COB_LS_VALIDATE
2015-04-14 Ron Norman <rjn@inglenet.com>
* reportio.c common.c:
updated to include support REPORT COLUMN LEFT/RIGHT/CENTER
Also REPORT: PLUS, STEP on OCCURS and multi COLUMN numbers
Runtime option: col_just_lrc if set to false will disable
justification of LEFT/RIGHT/CENTER data with the field
2015-04-14 Ron Norman <rjn@inglenet.com>
* fileio.c, common.h: updated to include support to a callable
EXTFH interface provided by several compilers including Micro Focus
This allows users to insert an external file handler while retaining
all of the normal COBOL I/O functions.
2015-04-14 Simon Sobisch <simonsobisch@gnu.org>
* cobgetopt.c (_getopt_initialize): re-added support for GNU extensions
'+'/'-' in optstring[0], '+' => forcing POSIX correct behaviour (stop at
first non-option), '-' => report non-options as argument of option code=1
2015-04-02 Edward Hart <edward.dan.hart@gmail.com>
* intrinsic.c: implemented FORMATTED-CURRENT-DATE,
INTEGER-OF-FORMATTED-DATE and TEST-FORMATTED-DATETIME
* intrinsic.c: updated FORMATTED-DATETIME and FORMATTED-TIME to support
fractional number of seconds.
* common.c: refactored (cob_accept_time)
* intrinsic.c: miscellaneous refactoring and deleted precondition
comments which are currently just cluttering the code
2015-04-02 Edward Hart <edward.dan.hart@gmail.com>
* common.h: added new macros COB_USE_VC(2005/2008/2013)_OR_GREATER to
replace _MSC_VER comparison
2015-03-30 Simon Sobisch <simonsobisch@gnu.org>
* common.h: Changed COB_FILE_MODE to 0666
* fileio.c: use COB_FILE_MODE as permission for all cases where
files are possibly created (fixes bug #126)
2015-03-14 Ron Norman <rjn@inglenet.com>
* common.c: new code for table driven processing of runtime.cfg
(runtime configuration) file and environment variables
New cob_settings structure used to store all run-time options
The old runtime_env was removed
call.c cobgetopt.c fileio.c intrinsic.c move.c numeric.c screenio.c
all updated to work with the new cob_settings structure
2015-03-10 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_load_config, cob_load_config_file, cb_config_entry): new
functions for loading a runtime configuration file
* call.c, common.c, intrinsic.c, numeric.c: fix segfault on early exit
during runtime initialisation
2015-03-03 Ron Norman
* common.c (cob_sys_getopt_long_long): fix ENDIAN problem with CBL_GC_GETOPT
* fileio.c (cob_sys_create_file, cob_sys_open_file):
fix ENDIAN problem with CBL_CREATE_FILE, CBL_OPEN_FILE
2015-03-01 Ron Norman <rjn@inglenet.com>
* fileio.c updated to return correct status codes for WRITE/REWRITE
related to duplicate keys being detected
This was tested with BDB, D-ISAM and VB-ISAM 2.1.1
2015-02-26 Simon Sobisch <simonsobisch@gnu.org>
* cobgetopt.c (cob_getopt_long_long): List all ambiguous possibilities,
applied patch of Ulrich Drepper (see glibc's BZ #7101 - 2011-05-15)
* cobgetopt.c: removed \n from msgids, converted all backtick to apostrophe
2015-02-26 Edward Hart <edward.dan.hart@gmail.com>
* screenio.c: fixed buffer overflow in screen section ACCEPT
2015-02-26 Ron Norman <rjn@inglenet.com>
* fileio.c [WITH_VBISAM, VB_RTD]: updated to handle VB-ISAM 2.1.1
* fileio.c [WITH_DB]: handle sparse and split keys for BDB
This was tested with BDB, D-ISAM, VB-ISAM 2.0 and VB-ISAM 2.1.1
2015-02-23 Ron Norman <rjn@inglenet.com>
Implemented INDEXED file support for sparse and split keys FR #23 + FR #281
* fileio.c: updated to handle sparse and split keys
This was tested with D-ISAM and VB-ISAM 2.0
2015-02-18 Ron Norman <rjn@inglenet.com>
* common.c (cob_debug_logger): if fmt starts with '~' then force print of line#
* reportio.c: Fix spacing problems related to CONTROL FOOTING
2015-02-16 Ron Norman <rjn@inglenet.com>
Implemented DEBUG logging for Compiler developers
* common.h: added DEBUG_xxx macros
* common.c: added cob_debug_xxx subroutines
* reportio.c: updated to use this new COB_DEBUG_LOG feature
2015-02-12 Ron Norman <rjn@inglenet.com>
* Merged Report Writer code into 2.0 code base to create a new 2.0
with all collective features
2015-01-31 Edward Hart <edward.dan.hart@gmail.com>
* common.h, intrinsic.c: updated (cob_valid_time_format) and
(cob_valid_datetime_format) to take the decimal point as a parameter
to handle DECIMAL-POINT IS COMMA
2015-01-12 Sergey Kashyrin <ska@kiska.net>
* intrinsic.c: Fix for Bug #120 - Function CURRENT-DATE
2014-12-11 Ron Norman <rjn@inglenet.com>
* reportio.c: Corrected to handle processing of a single DETAIL line
(It had been incorrectly processing all DETAIL lines of report)
2014-12-11 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c (cob_exit_screen): check cobglobptr for early errors,
especially in case of runtime error "cob_init() has not been called"
2014-11-17 Philipp Böhme <phi.boehme@googlemail.com>
* call.c (do_cancel_module): bugfix for cancel,
The bug was a crash in some situations, if the same module
is cancelled more than once. (Solution as suggested by Sergey)
2014-09-17 Edward Hart <edward.dan.hart@gmail.com>
* intrinsic.c: implemented (cob_intr_formatted_date),
(cob_intr_formatted_datetime) and (cob_intr_formatted_time)
* intrinsic.c: moved common date/time checks into functions
(valid_integer_date), (valid_year) and (valid_time)
* intrinsic.c: split main algorithms of (cob_intr_day_of_integer) and
(cob_intr_date_of_integer) into (day_of_integer) and (date_of_integer)
* common.c, common.h: added date/time format validation functions
(cob_valid_date_format), (cob_valid_datetime_format) and
(cob_valid_time_format)
2014-09-12 Simon Sobisch <simonsobisch@gnu.org>
* numeric.c, intrinsic.c, common.h: use cob_gmp_free in intrinsics, too
2014-09-09 Philipp Böhme <phi.boehme@googlemail.com>
* numeric.c: new static function cob_gmp_free
* numeric.c (cob_decimal_set_double, cob_decimal_get_packed,
cob_decimal_get_display): use cob_gmp_free() to free memory allocated in
mpir/gmp
2014-09-04 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_check_env_false): new pendant to cob_check_env_true,
currently used only for disabling COB_BELL
2014-08-24 Simon Sobisch <simonsobisch@gnu.org>
* common.c (cob_sys_getopt_long_long): make params lo_size(1), so_size(0)
and opt_val_size(5) optional (can be OMITTED in CALL 'CBL_OC_GETOPT')
2014-09-03 Philipp Böhme <phi.boehme@googlemail.com>
* common.c, common.h: added cob_free() function (as suggested by
Sergey Kashyrin)
* changed all free() to cob_free() (Own freeing function for debugging
purposes. (e.g. to locate heap crashes caused by malloc/free))
* numeric.c: use free function (passed by mp_get_memory_functions) (Bug #91)
2014-08-05 Louis Krupp <lkrupp@users.sf.net>
* screenio.c: compilation fails if configured without curses (bug #90)
2014-07-09 Philipp Böhme <phi.boehme@googlemail.com>
* fileio.c (cob_file_sort_giving): initialize record buffer size before
cob_copy_check, solving bug #66
2014-06-30 Simon Sobisch <simonsobisch@gnu.org>
* common.c, common.h (cob_temp_name): new function, moved from
cobc (cobc_temp_name)
* common.c (cob_temp_name) [_WIN32]: Use direct calls to getenv instead of
additional calling WINAPI for temporary folder (GetTempPath);
use identical logic as in non-win environments to build the name instead
of calling WINAPI (GetTempFileName+DeleteFile)
* fileio.c: renaming (cob_tmpfile) to (cob_srttmpfile) and
(cob_get_temp_file) to (cob_get_sort_tempfile)
* fileio.c (cob_srttmpfile): using new (cob_temp_name) to get the name
* common.c: use (cob_sys_getpid) everywhere instead of (getpid);
use (setenv) if available
2014-06-17 Ron Norman <rjn@inglenet.com>
* parser.y, tree.c, codegen.c: Added check to verify PAGE LIMITS of report
2014-06-14 Ron Norman <rjn@inglenet.com>
* parser.y: Fixes for LINE|COL 0 to get error message
2014-06-04 Eric Gallager <cooljeanius@users.sourceforge.net>
Makefile.am (install-data-hook): removed [merged 2020-09-23]
2014-05-20 Philipp Böhme <phi.boehme@googlemail.com>
* call.c: inverted preload list for WIN32 builds
* common.c, move.c, screenio.c, fileio.c: Set runtime switch
from environment to true on "1", "Y", "YES", "TRUE", "ON"
2014-05-13 Ron Norman <rjn@inglenet.com>
* numeric.c: added cob_cmp_float with tolerance for equality comparison
2014-05-07 Ron Norman <rjn@inglenet.com>
* move.c: replaced memcpy by memmove
2014-05-06 Philipp Böhme <phi.boehme@googlemail.com>
* common.c, common.h: Added print_runtime_env showing all environment values
along with resolved variables used in libcob
New string helper functions: cob_int_to_string, cob_strcat, cob_strjoin,
cob_int_to_formatted_bytestring
* call.c: Remove duplicates when resolving COB_LIBRARY_PATH
2014-04-25 Ron Norman <rjn@inglenet.com>
* move.c: fixed bug in cob_move_fp_to_fp()
* numeric.c: Fixed errors in cob_add_int() when computing with floats.
2014-04-14 Philipp Böhme <phi.boehme@googlemail.com>
* common.c, common.h, system.def: Added cob_sys_getopt_long_long
* makefile.am: Added cobgetopt.c, cobgetopt.h
2014-03-10 Simon Sobisch <simonsobisch@gnu.org>
* common.c: support for user-defined LOCALEDIR via environment
2014-03-03 Simon Sobisch <simonsobisch@gnu.org>
* common.c, common.h: Rewriting cob_sig_handler, printing signal caught
to stderr, adding cob_reg_sighnd for registration of external signal
handling
2014-01-17 Ron Norman <rjn@inglenet.com>
* intrinsic.c: Change cob_intr_random to correctly compute RANDOM number
2013-12-26 Luke Smith <cobcoder@users.sourceforge.net>
* strings.c: Fix Unstring delimited by all delimiter size > 1 issue,
see bug #54.
2013-11-18 Ron Norman <rjn@inglenet.com>
* Report Writer Module initial development
2013-??-?? Sergey Kashyrin <ska@kiska.net>
* fileio.c: Bugfix in cob_sys_copy_file (now using file_open_buff)
201?-??-?? Sergey Kashyrin <ska@kiska.net>
* fileio.c (cob_new_item): cleanup
2012-06-21 Sergey Kashyrin <ska@kiska.net>
* numeric.c: Workaround optimizer bug
2010-10-18 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c (!COB_GEN_SCREENIO): Make cob_sys_sound_bell usable via
cob_speaker_beep
* common.c: Add possibility to disable the bell via
COB_BELL=NO/NONE/0/OFF (currently only the first char is checked)
2010-09-03 Simon Sobisch <simonsobisch@gnu.org>
* screenio.c: Added cob_convert_key for converting keys according to used
libraries (especially fix for PDCurses + numpad support)
2010-06-28 Roger While <simrw@sim-basis.de>
* MARK - Version 2.0
* Move to GPL/LGPL 3
2010-05-18 Simon Sobisch <simonsobisch@gnu.org>
* strings.c: Fixing cob_unstring_into bug (#139)
2010-03-10 Simon Sobisch <simonsobisch@gnu.org>
* common.c, screenio.c: New env var COB_BELL for controlling WITH BEEP,
possible values (standard BEEP):
BEEP (curses beep on soundcard/pc-speaker, fallback terminal flash)
FLASH (curses terminal flash, fallback beep on soundcard/pc-speaker)
SPEAKER (printf("\a"))
20??-??-?? Roger While <simrw@sim-basis.de>
* fileio.c: Implement COB_VARSEQ_FORMAT to override default format
for variable length sequential files.
20??-??-?? Roger While <simrw@sim-basis.de>
* fileio.c: used fdcobsync for sync, defined depending on configuration
* fileio.c (cob_sync): droped synch mode for COB_SYNCH (Y=P), moved
calls of cob_sync to (save_status)
20??-??-?? Roger While <simrw@sim-basis.de>
* fileio.c: dropped support for BDB < 4.1
20??-??-?? Roger While <simrw@sim-basis.de>
* call.c (cob_init_call): Change to COB_PRE_LOAD: if an entry is not
found in COB_LIBRARY_PATH try the full name
20??-??-?? Sergey Kashyrin <ska@kiska.net>
* common.c: nanosleep for 370
2009-12-25 Roger While <simrw@sim-basis.de>
* strings.c: Added check for COB_EC_RANGE_INSPECT_SIZE and
NULL extension to cob_inspect_converting
2009-10-07 Simon Sobisch <simonsobisch@gnu.org>
* common.c, common.h, system.def: Added new system routine C$GETPID
2009-08-28 Roger While <simrw@sim-basis.de>
* strings.c: Fix for UNSTRING with multiple variable length fields
2009-08-03 Sergey Kashyrin <ska@kiska.net>
* common.c: cob_accept_day_of_week corrected
2009-08-03 Gary Cutler <CutlerGL@gmail.com>
* common.c: cob_accept_day_of_week corrected
2009-07-25 Gary Cutler
* screenio.c: Fix PDCurses bug with COLOR_PAIRS
2009-06-09 Roger While <simrw@sim-basis.de>
* move.c: Fix editing symbol moves
2009-06-01 Roger While <simrw@sim-basis.de>
* fileio.c: Revise memory algo for SORT - Introduce COB_SORT_CHUNK
2009-05-25 Roger While <simrw@sim-basis.de>
* General: Remove the following extraneous include files:
byteswap.h, call.h, fileio.h, intrinsic.h, move.h, numeric.h,
screenio.h, strings.h, termio.h by integration into common.h
as first step
2009-05-16 Roger While <simrw@sim-basis.de>
* General: Changes to remove lib local symbols
* common.c, fileio.c: Fix to enable running test suite under Win
2009-05-11 Roger While <simrw@sim-basis.de>
* fileio.c, fileio.h: Implement file status 24 for relative files
* termio.c, screenio.c: Implement ACCEPT OMITTED
* fileio.c, fileio.h: Change all I/O except L/S to file descriptor basis
2009-05-01 Roger While <simrw@sim-basis.de>
* General: Code clean/sanitize
2009-04-10 Roger While <simrw@sim-basis.de>
* General: Support for icc
* fileio.c: Sanitize / remove BDB < 4.1 support
* fileio.c, fileio.h: Support LOCK clause on OPEN
2009-02-23 Roger While <simrw@sim-basis.de>
* screenio.c: Fix up accept without lines parameter
2009-02-03 Roger While <simrw@sim-basis.de>
* intrinsic.c: Fix Cygwins busted rand function
2009-01-27 Roger While <simrw@sim-basis.de>
* call.c: Change hyphen interpretation
2009-01-22 Roger While <simrw@sim-basis.de>
* intrinsic.c, intrinsic.h: Functions CONCATENATE and SUBSTITUTE-CASE
2009-01-20 Roger While <simrw@sim-basis.de>
* screenio.c, screenio.h: Minimal support for value occurs
2009-01-17 Roger While <simrw@sim-basis.de>
* common.c, screenio.c, screenio.h: Save/restore screen over SYSTEM call
* General: Sanitize headers. Do not use names in prototypes
2009-01-15 Roger While <simrw@sim-basis.de>
* screenio.c, screenio.h, termio.c - SCROLL for ACCEPT/DISPLAY
2009-01-14 Roger While <simrw@sim-basis.de>
* screenio.c, screenio.h: ACCEPT ... FROM LINES/COLUMNS
2008-12-20 Roger While <simrw@sim-basis.de>
* intrinsic.c, intrinsic.h: Implement SUBSTITUTE function
2008-12-10 Roger While <simrw@sim-basis.de>
* screenio.c: Add inter-field cursor movement for screen input
2008-12-08 Roger While <simrw@sim-basis.de>
* General: More stack reducing
* common.h: Constify attribute pointer in cob_field
2008-12-03 Roger While <simrw@sim-basis.de>
* General: More stack reducing
Clean up dangling varargs
2008-11-20 Roger While <simrw@sim-basis.de>
* General: Reduce stack usage
2008-11-15 Roger While <simrw@sim-basis.de>
* fileio.c: Fix SORT GIVING when output is line sequential
* common.c, common.h, call.c, call.h: C routines for calling COBOL
2008-11-14 Roger While <simrw@sim-basis.de>
* common.c: Always activate SIGSEGV handler
2008-10-17 Roger While <simrw@sim-basis.de>
* common.c, common.h: cob_check_based - Check BASED items
2008-09-22 Roger While <simrw@sim-basis.de>
* fileio.c, fileio.h: Evaluate FILE STATUS for SORT files
* General: More constification
2008-08-20 Roger While <simrw@sim-basis.de>
* common.h: Change macro for __builtin_expect
2008-08-16 Roger While <simrw@sim-basis.de>
* coblocal.h, termio.c, screenio.c: Change global name screen_initialized
2008-08-01 Roger While <simrw@sim-basis.de>
* byteswap.h: Do not rely on gcc doing the right thing for short
2008-07-21 Roger While <simrw@sim-basis.de>
* screenio.c: Do not display SECURE items
* General: Cleanup, do early malloc initializations
2008-07-19 Roger While <simrw@sim-basis.de>
* General: Tidy up syntax
* intrinsic.c: Optimize field generation
2008-07-18 Roger While <simrw@sim-basis.de>
* common.c: Win does not have nanosleep
2008-07-14 Roger While <simrw@sim-basis.de>
* termio.c, move.c: Preliminary changes for zero-length fields
2008-07-11 Roger While <simrw@sim-basis.de>
* strings.c: Handle special replacement correctly
2008-07-09 Roger While <simrw@sim-basis.de>
* screenio.c, screenio.h: Fix up SCREEN handling
2008-07-05 Roger While <simrw@sim-basis.de>
* screenio.c: Extend SCREEN processing
2008-07-01 Roger While <simrw@sim-basis.de>
* termio.c: Revert '.' display of non-displayable characters
2008-06-29 Roger While <simrw@sim-basis.de>
* common.c, common.h, system.def: Implement CBL_OC_NANOSLEEP
* coblocal.h, move.c: support routines for the above
2008-06-25 Roger While <simrw@sim-basis.de>
* screenio.c, screenio.h: Define input fields for SCREEN section
2008-06-23 Roger While <simrw@sim-basis.de>
* screenio.c: New env COB_SCREEN_EXCEPTIONS to retrun extended
exception codes on ACCEPT
2008-06-17 Roger While <simrw@sim-basis.de>
* fileio.c: Fix return from ISAM (not BDB) from OPEN
* common.c: redirect to stderr when necessary
* screenio.c: More support
2008-06-10 Roger While <simrw@sim-basis.de>
* screenio.c, screenio.h, termio.c: More Screen changes
2008-06-05 Roger While <simrw@sim-basis.de>
* coblocal.h, common.c, fileio.c, fileio.h: Cleanup, prepare for linptr
reuse
2008-06-04 Roger While <simrw@sim-basis.de>
* fileio.c: Cleanup /simplification
2008-06-03 Roger While <simrw@sim-basis.de>
* fileio.c, fileio.h: Support UNLOCK statement
2008-06-01 Roger While <simrw@sim-basis.de>
* coblocal.h, move.c, numeric.c: Localize cob_binary_get/set routines
* common.c, move.c: Cater for spaces in numeric fields
* termio.c: Display '.' for invalid characters
2008-05-31 Roger While <simrw@sim-basis.de>
* fileio.c: Allow VARYING on LINE SEQUENTIAL
2008-05-23 Roger While <simrw@sim-basis.de>
* common.h, termio.c: Better display of POINTER items
2008-05-19 Roger While <simrw@sim-basis.de>
* screenio.c, screenio.h: More support for SCREEN
2008-05-14 Roger While <simrw@sim-basis.de>
* common.c: Fix C$NARG for chaining syntax
* common.c, common.h: Simplify accept from environment
2008-05-12 Roger While <simrw@sim-basis.de>
* screenio.c: Fix some screen displays
2008-04-17 Roger While <simrw@sim-basis.de>
* common.c, common.h, system.def: Implement MF call X"91",
subfunctions 11, 12, 16
2008-04-02 Roger While <simrw@sim-basis.de>
* intrinsic.c, intrinsic.h: Implement FUNCTION COMBINED-DATETIME
2008-03-31 Roger While <simrw@sim-basis.de>
* intrinsic.c, intrinsic.h: Implement LOCALE-TIME-FROM-SECONDS
More refmodding for functions
2008-03-29 Roger While <simrw@sim-basis.de>
* General: Fix up sparse warnings
2008-03-24 Roger While <simrw@sim-basis.de>
* intrinsic.c, intrinsic.h: Refmodding for some FUNCTIONS
2008-03-11 Roger While <simrw@sim-basis.de>
* call.c: New environment variable to control case conversion on
dynamic program loads.
COB_LOAD_CASE=UPPER|LOWER
2008-03-05 Roger While <simrw@sim-basis.de>
* fileio.c: New environment variables to control LINE SEQUENTIAL
files.
COB_LS_NULLS - Equivalent to MF's -N switch.
Bytes less than ASCII space are preceded by a null
byte on write.
COB_LS_FIXED - Write the record without trailing space
removal.
2008-03-01 Roger While <simrw@sim-basis.de>
* fileio.c: BDB CLOSE must close secondary files first
2008-02-19 Roger While <simrw@sim-basis.de>
* fileio.c: Clean up and comment
2008-02-14 Roger While <simrw@sim-basis.de>
* fileio.c: Fix ifdef's for variable sequential files
2008-02-12 Roger While <simrw@sim-basis.de>
* common.c, common.h: Rationalize some previously exported variables
New function - cob_set_location for line debugging
2008-01-07 Roger While <simrw@sim-basis.de>
* common.c, common.h: DISPLAY .. UPON COMMAND-LINE
2008-01-03 Roger While <simrw@sim-basis.de>
* move.h: Remove own_memxxx routines
* General: Remove references to own_memxxx routines
2007-12-27 Roger While <simrw@sim-basis.de>
** Mark 1.0 RELEASE
2007-12-15 Roger While <simrw@sim-basis.de>
* common.c: Change exception structure definition to optimize
64 bit allocation
2007-11-21 Roger While <simrw@sim-basis.de>
* fileio.c: Add C/D/VB-ISAM code
2007-11-20 Roger While <simrw@sim-basis.de>
* fileio.c: Cater for 02 return status
Put in hooks for C/D/VB-ISAM
2007-11-09 Roger While <simrw@sim-basis.de>
* numeric.c: Use 64-bit when available
2007-11-01 Roger While <simrw@sim-basis.de>
* numeric.c: Fix 64-bit unsigned problem
2007-10-27 Roger While <simrw@sim-basis.de>
* strings.c: Fix figurative constant handling in INSPECT
2007-10-24 Roger While <simrw@sim-basis.de>
* numeric.c, numeric.h: New routine cob_cmp_uint
2007-10-22 Roger While <simrw@sim-basis.de>
* numeric.c: Fix 36 digit numerics
2007-10-20 Roger While <simrw@sim-basis.de>
* call.c: Clean up
* codegen.h: Fix up signed/unsigned comparison
2007-10-17 Roger While <simrw@sim-basis.de>
* common.c: User defined exit routines must be called before
the OC clean up routines.
Fix missing call to user defined error routines.
2007-10-10 Roger While <simrw@sim-basis.de>
* fileio.c, fileio.h: Change delete to fdelete (C++)
2007-09-18 Roger While <simrw@sim-basis.de>
* screenio.c: Check for mvgetnstr in curses lib
2007-09-12 Roger While <simrw@sim-basis.de>
* fileio.h: Add in CHANNEL definition
2007-09-07 Roger While <simrw@sim-basis.de>
* General: unistd.h is not availiable on native Win
* move.c, termio.c: Cater for changed pic string representation
2007-08-31 Roger While <simrw@sim-basis.de>
* fileio.c, fileio.h: Move defines, change EXTFH interface
Linage is reduced to a pointer in the fileio struct
2 local defines moved from fileio.c to fileio.h for EXTFH
2007-08-23 Roger While <simrw@sim-basis.de>
* General: Remove ASCII 10/20, fix up ascii/ebcdic on target
Note changes to module and file structures
2007-08-14 Roger While <simrw@sim-basis.de>
* fileio.c: Implement method to use an external SEQ/RAN file handler
* fileio.h: Use spare byte in file struct as file version
2007-08-12 Roger While <simrw@sim-basis.de>
* numeric.c: Fix for EBCDIC machines
2007-08-09 Roger While <simrw@sim-basis.de>
* fileio.c: Implement method to use an external ISAM file handler
2007-08-01 Roger While <simrw@sim-basis.de>
* call.c: Implement cob_c_cancel
* General: More constification
2007-07-26 Roger While <simrw@sim-basis.de>
* common.c, fileio.c: (un)likely optimizations
* byteswap.h: For i386, let gcc work out the 2 byte case
2007-07-24 Roger While <simrw@sim-basis.de>
* fileio.c: Do not use locks if filename begins with "/dev/"
2007-07-21 Roger While <simrw@sim-basis.de>
* common.c: Use calloc instead of malloc
2007-07-11 Roger While <simrw@sim-basis.de>
* fileio.c: Fix a memory leak in the I/S close code
2007-07-02 Roger While <simrw@sim-basis.de>
* call.c: Previously we were trying to detect if dlopen(NULL)
works in configure and ifdef'ing in call.c
This does not work in all circumstances.
For borked systems this now has to be changed by hand
in call.c. The comments at the top of call.c -
/* NOTE - The following variable should be uncommented when
it is known that dlopen(NULL) is borked.
This is known to be true for some PA-RISC HP-UX 11.11 systems.
This is fixed with HP patch PHSS_28871. (There are newer
but this fixes dlopen/dlsym problems)
*/
/* #define COB_BORKED_DLOPEN */
2007-07-01 Roger While <simrw@sim-basis.de>
* codegen.h: Further optimizations
2007-06-28 Roger While <simrw@sim-basis.de>
* codegen.h: Tweak for non-alignment-tolerant architectures
* intrinsic.c: DST hack for ports that do not have "%z"
Note - This needs to be properly fixed
2007-06-26 Roger While <simrw@sim-basis.de>
* intrinsic.c: For specific ports, fix TZ in CURRENT-DATE
Add use of strftime for timezone if configure detected
2007-06-06 Roger While <simrw@sim-basis.de>
* fileio.c, fileio.h: LOCK on WRITE/REWRITE
2007-05-22 Roger While <simrw@sim-basis.de>
* fileio.c, fileio.h: Implement IGNORING LOCK.
Fix a WRITE/REWRITE problem with duplicate keys.
2007-05-17 Roger While <simrw@sim-basis.de>
* screenio.c: Use normal curses when available
2007-05-10 Roger While <simrw@sim-basis.de>
* fileio.c: Fix positioning with START,READ NEXT/PREVIOUS on duplicate
records.
2007-05-08 Roger While <simrw@sim-basis.de>
* common.c, common.h: Fix incompatible param definitions on CBL_EXIT_PROC
and CBL_ERROR_PROC
2007-05-04 Roger While <simrw@sim-basis.de>
* fileio.c, fileio.h: Preliminary support for record locking
2007-04-28 Roger While <simrw@sim-basis.de>
* numeric.c: Remove duplicated code.
Set up variables for binary > 64 bits
2007-04-26 Roger While <simrw@sim-basis.de>
* numeric.c: Fix incorrect value when signed bit set in an
eight byte binary value.
* numeric.c, numeric.h: Remove unused routine. Make 2 routines static.
2007-04-17 Roger While <simrw@sim-basis.de>
* intrinsic.c: Fix a Cygwin compile failure
2007-04-11 Roger While <simrw@sim-basis.de>
* common.c, common.h: Define cob_one for screen display
2007-04-10 Roger While <simrw@sim-basis.de>
* strings.c, strings.h: Dynamically allocate for unstring
2007-03-27 Roger While <simrw@sim-basis.de>
* common.c: Fix 64-bit warning
2007-03-16 Roger While <simrw@sim-basis.de>
* common.c, intrinsic.c: Provide fractional seconds on Win platform
2007-03-13 Roger While <simrw@sim-basis.de>
* intrinsic.c: Provide fractional seconds for CURRENT-DATE if
supported on the platform
* common.c: Provide fractional seconds for ACCEPT .. FROM TIME
if supported on the platform
* fileio.h: Align file structure
* fileio.c: When filename mapping, allow underline in varibale name
2007-03-05 Roger While <simrw@sim-basis.de>
* intrinsic.c: Windows/Cygwin implementation of LOCALE-DATE/TIME
2007-03-03 Roger While <simrw@sim-basis.de>
* General: Use COB_FIELD_xxx macros
2007-03-01 Roger While <simrw@sim-basis.de>
* intrinsic.c, intrinsic.h: Change params for LOCALE-DATE/TIME
2007-02-26 Roger While <simrw@sim-basis.de>
* intrinsic.c: Fix for not defined LANGINFO
2007-02-25 Roger While <simrw@sim-basis.de>
* fileio.c: Fix Indexed-Sequential rewrite
2007-02-13 Roger While <simrw@sim-basis.de>
* All: Change initialization of fields/attributes
2007-02-11 Roger While <simrw@sim-basis.de>
* coblocal.h: New file, contains prototypes that should only
be known to the library
* All: Implement above header file
2007-02-09 Roger While <simrw@sim-basis.de>
* fileio.c, fileio.h: Implement SORT-RETURN
2007-02-07 Roger While <simrw@sim-basis.de>
* intrinsic.c, intrinsic.h: Implement LOCALE-DATE, LOCALE-TIME
* fileio.c, fileio.h: Fix a READ PREVIOUS problem
2007-01-24 Roger While <simrw@sim-basis.de>
* fileio.c, fileio.h: Implement new SORT routines
Note these do not need the ISAM handler
2007-01-17 Roger While <simrw@sim-basis.de>
* common.c, common.h: Add cob_is_omitted, check for NULL parameter
2007-01-16 Roger While <simrw@sim-basis.de>
* intrinsic.c, intrinsic.h: Implement FUNCTION's
SECONDS-PAST-MIDNIGHT, SECONDS-FROM-FORMATTED-TIME
* All: Remove COB_SET_EXCEPTION define
* intrinsic.c: Set COB_EC_ARGUMENT_FUNCTION exception code where
appropriate
2007-01-15 Roger While <simrw@sim-basis.de>
* common.c, common.h, fileio.c, fileio.h: Change sort comparison routines
to not overwrite collating sequence. Also optimize.
Note, this fixes a problem with a (file) SORT with COLLATING and
INPUT and/or OUPUT procedures. Previously, this would
incorrectly change alphanumeric tests in the
INPUT/OUTPUT procedures.
* fileio.c, fileio.h: Allow special ASSIGN [TO] DISPLAY processing
2007-01-12 Roger While <simrw@sim-basis.de>
* fileio.c: Fix miscompile on WIN64
2007-01-10 Roger While <simrw@sim-basis.de>
* intrinsic.c, intrinsic.h: Allow special ASSIGN [TO] KEYBOARD processing
2007-01-08 Roger While <simrw@sim-basis.de>
* call.c, call.h: Implement new CANCEL processing
2006-12-17 Roger While <simrw@sim-basis.de>
* intrinsic.c, intrinsic.h: Correct the NUMVAL-C function
2006-12-12 Roger While <simrw@sim-basis.de>
* fileio.c: Fix secondary key access
2006-12-07 Roger While <simrw@sim-basis.de>
* intrinsic.c, intrinsic.h: Implement TRIM function
2006-11-28 Roger While <simrw@sim-basis.de>
* move.c: Small optimization
* numeric.c: New routines cob_cmp_long_numdisp,
cob_cmp_long_signed_numdisp
2006-11-12 Roger While <simrw@sim-basis.de>
* codegen.h: Remaining integer cmp/add/sub optimizations
2006-10-23 Roger While <simrw@sim-basis.de>
* Makefile.am: Remove gcc options
General: Constify some stuff
2006-10-16 Roger While <simrw@sim-basis.de>
* codegen.h: Fix 3 byte compare
2006-10-15 Roger While <simrw@sim-basis.de>
* codegen.h: This is now the place for optimization
Duplication in numeric.c is not necessary
Add in optimization for 3/5/6/7 byte compares
Add in 3 byte add optimization
* numeric.c: Delete duplicated code from codegen.h
Constify
2006-10-14 Roger While <simrw@sim-basis.de>
* common.c, fileio.c, fileio.h, move.c, move.h: const defintions
2006-09-30 Roger While <simrw@sim-basis.de>
* common.c, common.h: Implement CBL_EXIT_PROC
* General: tidy up
2006-08-31 Roger While <simrw@sim-basis.de>
* call.c: Alternate ifdef'd algo for call list
2006-08-28 Roger While <simrw@sim-basis.de>
* General: Check for COB_PARAM_CHECK
* numeric.c: Experimental code
2006-08-26 Roger While <simrw@sim-basis.de>
* fileio.c: Implement COB_FILE_PATH variable for default
path prefix on files that do not have any other assignment
2006-08-09 Roger While <simrw@sim-basis.de>
* system.def, common.c, common.h: More MF/ACU system routines
2006-08-01 Roger While <simrw@sim-basis.de>
* common.c, common.h, call.c: Change cob_field_to_string to type void
2006-07-31 Roger While <simrw@sim-basis.de>
* system.def, fileio.c, fileio.h, call.c, common.c, common.h: New MF
system routines - see system.def
2006-07-26 Roger While <simrw@sim-basis.de>
* All: General clean up and fix gcc 4 warnings
* New file system.def
* call.c, common.c, common.h: System routines
2006-07-19 Roger While <simrw@sim-basis.de>
* All: General clean up
2006-07-14 Roger While <simrw@sim-basis.de>
* codegen.h, numeric.c: Fix optimization for HP compiler
* intrinsic.c: Fix bug in NUMVAL routines
2006-07-12 Roger While <simrw@sim-basis.de>
* common.c, common.h: Implement ALLOCATE/FREE
* strings.c: Clean up
2006-07-07 Roger While <simrw@sim-basis.de>
* codegen.h, numeric.c: More optimizations
* fileio.c: Further BDB fixes
2006-07-06 Roger While <simrw@sim-basis.de>
* fileio.c: BDB >= 4.1 fixes
2006-07-04 Roger While <simrw@sim-basis.de>
* fileio.c: BDB >= 4.1 fixes
2006-06-22 Roger While <simrw@sim-basis.de>
* call.c: Set cob_exception_code for not found calls
2006-06-21 Roger While <simrw@sim-basis.de>
* fileio.c: Fix typo for cob_sort_output_cache
2006-06-06 Roger While <simrw@sim-basis.de>
* move.h: Remove generic memcpy/memset for non (GNUC && i386)
2006-06-05 Roger While <simrw@sim-basis.de>
* fileio.c, fileio.h: Implement PREVIOUS for IS files
2006-05-27 Roger While <simrw@sim-basis.de>
* common.c, common.h: Implement cob_fatal_error
2006-05-20 Roger While <simrw@sim-basis.de>
* Fixes for extended ACCEPT/DISPLAY
2006-05-18 Roger While <simrw@sim-basis.de>
* common.c, common.h, intrinsic.c, intrinsic.h: Implement FUNCTIONs
EXCEPTION-FILE, EXCEPTION-STATEMENT, EXCEPTION-LOCATION, EXCEPTION-STATUS
2006-05-12 Roger While <simrw@sim-basis.de>
* common.c, exception.def: Exceptions for ACCEPT/DISPLAY
2006-05-10 Roger While <simrw@sim-basis.de>
* common.h: Preliminary support for CURSOR IS and CRT STATUS IS
* intrinsic.c, intrinsic.h: Implement STORED-CHAR-LENGTH (Fujitsu)
2006-05-08 Roger While <simrw@sim-basis.de>
* common.c, common.h: cob_chain_setup - setup CHAINING params from
command line
* strings.c, strings.h: implement TRAILING syntax in INSPECT clause
2006-05-05 Roger While <simrw@sim-basis.de>
* strings.c: Avoid memory bloat with INSPECT
2006-05-04 Roger While <simrw@sim-basis.de>
* common.h: Define likely/unlikely macros
* call.c, move.c: Use above macros
2006-05-03 Roger While <simrw@sim-basis.de>
* screenio.c, screenio.h: Change structures
2006-05-01 Roger While <simrw@sim-basis.de>
* General: Changes for native EBCDIC machines
* codegen.h, numeric.c: Further optimization for cob_cmp_xxx,
cob_add_xxx, cob_sub_xxx
* common.c, common.h: Support for sign-ebcdic and sign-ascii20
(Note ascii20 is not correct)
Implement SET ENVIRONMENT (ACU)
2006-04-17 Roger While <simrw@sim-basis.de>
* codegen.h, numeric.c: Optimized cob_cmp_xxx, cob_add_xxx,
cob_sub_xxx
2006-04-06 Roger While <simrw@sim-basis.de>
* common.h, common.c: Define new function cob_strdup
common.c, call.c, fileio.c: Use cob_strdup
fileio.c: Fix size_t mistake
2006-04-02 Roger While <simrw@sim-basis.de>
* codegen.h: Fix up a bunch of mistakes
2006-03-25 Roger While <simrw@sim-basis.de>
* common.c: Although not currently used, update the
ASCII/EBCDIC tables
2006-03-23 Roger While <simrw@sim-basis.de>
* numeric.c: Fix a stack corruption in the fast C-3 compare
2006-03-22 Roger While <simrw@sim-basis.de>
* common.c, common.h: Implement COLLATING SEQUENCE for table SORT
2006-03-21 Roger While <simrw@sim-basis.de>
* move.c: More edited field fixes from Hans Martin Rasch
2006-03-16 Roger While <simrw@sim-basis.de>
* move.c: Fix edited field with +/- and currency
2006-03-10 Roger While <simrw@sim-basis.de>
* All: Reduce compile warnings under Win
* common.c: setlocale depends on HAVE_SETLOCALE
We must do a setlocale for LC_NUMERIC
as languages with a comma separator change
the operation of string functions which bork
specfically FP operations
2006-03-09 Roger While <simrw@sim-basis.de>
* numeric.c: Fix remainder problem
Fix returning functions which return void
2006-03-04 Roger While <simrw@sim-basis.de>
* common.c: Don't do cob_put_sign for PACKED fields
in the cob_cmp_xxx routines
2006-02-21 Roger While <simrw@sim-basis.de>
* new include: codegen.h
This contains inlines that only relate to code
generation
Implemented are cob_cmp_xxx_binary and cob_addsub_xxx_binary
where xxx is u8, s8, u16, s16 etc.
* call.c: Fix a preload problem under Cygwin
2006-02-18 Roger While <simrw@sim-basis.de>
* move.h: Take out x86 memcpy optimization
2006-02-08 Roger While <simrw@sim-basis.de>
* common.c, common.h, numeric.c, numeric.h: Optimize COMP/COMP-3
2006-02-01 Roger While <simrw@sim-basis.de>
* fileio.h, fileio.c: Changes for FILE STATUS
We have to pass the FILE STATUS as a parameter
to the I/O call. This is required for EXTERNAL FD's.
2006-01-29 Roger While <simrw@sim-basis.de>
* call.c: Implement COB_PRE_LOAD
2006-01-27 Roger While <simrw@sim-basis.de>
* Tweak COMP-3
2006-01-26 Roger While <simrw@sim-basis.de>
* strings.c: Rip out regex use. It cannot handle
a low-value (null byte) in RE.
call.c: Native WIN MSC needs path separator of ';'
common.h, common.c: Implement CBL_ERROR_PROC
2006-01-25 Roger While <simrw@sim-basis.de>
* fileio.h, fileio.c: signed to unsigned for file_status
2006-01-17 Roger While <simrw@sim-basis.de>
* fileio.c: Print assign name when erroring
2006-01-07 Roger While <simrw@sim-basis.de>
* fileio.c: 64-bit fixes
2006-01-05 Roger While <simrw@sim-basis.de>
* General: Bootstrap up to new libtool / automake
MS VS/VC changes
fileio.c: Fix relative postioning and incorrectly
returned relative record number
2005-12-30 Roger While <simrw@sim-basis.de>
* Change ifdef's on MINGW to WIN32 (Also defined on 64-bit Win)
intrinsic.c: ifdef's for strftime (CURRENT-DATE)
fileio.c: Basic platform changes
2005-12-28 Roger While <simrw@sim-basis.de>
* General: Further fixes for non-gcc
2005-12-27 Roger While <simrw@sim-basis.de>
* General: Change occurrences of "char[variable]"
move.c: Change code for "MOVE ALL '98' TO binary/packed/edited"
This is still not completely correct
2005-12-23 Roger While <simrw@sim-basis.de>
* termio.c, common.c: Move extended accept/display from
termio to common. Define cobc_argc/argv as static.
2005-12-21 Roger While <simrw@sim-basis.de>
* fileio.c - Cater for various format of the record
length field in variable length sequential files
(WITH_VARSEQ)
2005-12-18 Roger While <simrw@sim-basis.de>
* All: Cleanup "shadowed" variables
Start generalizing code for large numbers
common.c: Take out Ebcdic table, now genned by codegen
2005-12-09 Roger While <simrw@sim-basis.de>
* move.c: Fix display of large unsigned numbers.
termio.c: Change number of displayed digits.
2005-12-08 Roger While <simrw@sim-basis.de>
* common.h: New defines - COB_SMALL_BUFF, COB_MEDIUM_BUFF,
COB_LARGE_BUFF.
Replace all occurrences of FILENAME_MAX/BUFSIZ.
2005-12-04 Roger While <simrw@sim-basis.de>
* intrinsic.c: Fix strftime for MingW
2005-12-04 Roger While <simrw@sim-basis.de>
* byteswap.h: Take out typedefs. They are likely to
clash with standard includes.
2005-12-03 Roger While <simrw@sim-basis.de>
* common.c: Do not gen signals for Ming
* fileio.c: Ming / typing changes
2005-11-25 Roger While <simrw@sim-basis.de>
* common.c: Extended signal handling
fileio.c: Don't use mkstemp on non-Win
2005-11-16 Roger While <simrw@sim-basis.de>
* call.c: Fix wrong cached handle
fileio.c: Fix spacing in LS read
2005-11-15 Roger While <simrw@sim-basis.de>
* fileio.c: Allow COB_SYNC=P (Paranoid)
This will try even harder to sync.
2005-11-15 Roger While <simrw@sim-basis.de>
* common.c, fileio.h, fileio.c: Check open files
at run-unit termination. Implement sync'ing
with enviroment variable COB_SYNC=Y.
Catch signals QUIT, INT and HUP.
2005-11-08 Roger While <simrw@sim-basis.de>
* fileio.c: Tweaks for LS files
2005-11-04 Roger While <simrw@sim-basis.de>
* call.c: Don't repeatedly call (lt_)dlopen on
NULL (main program); Do it once at startup.
2005-11-01 Roger While <simrw@sim-basis.de>
* screenio.c: Cater for include in ncurses/ncurses.h
* fileio.c: ferror under Cygwin doesn't like a
void * parameter - Cast it.
Fix line-sequential reads when input has carriage-returns.
2005-10-26 Roger While <simrw@sim-basis.de>
* fileio.c: Remove HAVE_DB ifdef, fix warnings
* move.c: Fix warnings
2005-10-25 Roger While <simrw@sim-basis.de>
* move.h, move.c, numeric.c, fileio.c, strings.c
memcpy/memset optimizations
move.c: Fix a mpz_ call (optimization)
2005-10-14 Roger While <simrw@sim-basis.de>
* All: More GCC 4 fixes
2005-10-13 Roger While <simrw@sim-basis.de>
* common.h, common.c: Fix function type (GCC 4)
2005-08-07 Roger While <simrw@sim-basis.de>
* All .c: indent, braces
* call.c: Dynamically allocate areas, const allocation
2005-08-04 Roger While <simrw@sim-basis.de>
* fileio.c: Harden I/O error checking
Replace fputc with putc
* screenio.c,h: Rename cob_screen_clear to cob_screen_terminate
* common.c,h: Call cob_screen_terminate in cob_stop_run
Define cob_stop_run as noreturn (gnuc)
* All: Change occurrences of exit to cob_stop_run
2005-07-31 Roger While <simrw@sim-basis.de>
* intrinsic.c, intrinsic.h: Add SIGN, FRACTION-PART, clean up
* common.c, common.h: cob_check_version - Program versioning
* move.c, numeric.c: Some preliminary assembler stuff
2005-07-14 Roger While <simrw@sim-basis.de>
* fileio.c: Dummy routines for read,write, etc.
Always generate the function jump table, even if
DB not configured. Jumps to the dummy routines
result in status 30.
* All: Do malloc's through own new routine cob_malloc
This will produce an error and terminate if memory
cannot be acquired.
2005-07-02 Roger While <simrw@sim-basis.de>
* common.h: cob_module bit fields to char
* intrinsic.c: Clean up and fixes
* move.c, numeric.c: Experiment with own_mem(cpy,set)
* fileio.c: Cast fseek offsets to off_t
Return correctly if DB not defined
2005-06-28 Roger While <simrw@sim-basis.de>
* New files: intrinsic.h, intrinsic.c
* Fix cob_add/sub_int
2005-06-13 Roger While <simrw@sim-basis.de>
* common.c: Handle new COB_SWITCH_n=ON/OFF
screenio.c: Handle pdcurses
2005-06-11 Roger While <simrw@sim-basis.de>
* strings.c: Fix INSPECT
fileio.c: Mistake in LINAGE
2005-06-09 Roger While <simrw@sim-basis.de>
* call.c: Fix memory leak in drop function.
2005-06-01 Roger While <simrw@sim-basis.de>
* Makefile*, fileio.c, common.c: Hacks for MinGW
move.c: Include math.h
2005-05-31 Roger While <simrw@sim-basis.de>
* common.h, common.c, numeric.c, move.c, termio.c :
Rough implementation of COMP-1/2 fields.
2005-05-27 Roger While <simrw@sim-basis.de>
* byteswap.h: u_int16_t etc. are not necessarily defined
in sys/types.h (e.g. MinGW). So ifndef on __BIT_TYPES_DEFINED__
and typedef them.
fileio.c: Cater for extended DB headers db4/ db4.1/ db4.2/ db4.3/
2005-05-23 Roger While <simrw@sim-basis.de>
* call.h, call.c: New functions cob_resolve_1
cob_call_resolve_1.
These are wrappers for optimized dynamic
calls.
2005-05-21 Roger While <simrw@sim-basis.de>
* call.h, call.c: Cater for call.def
Cater for --with-dl
Restructure code slightly
Take out check for cob_initialized
2005-05-03 Roger While <simrw@sim-basis.de>
* Mak*: Due to autoreconf
common.c: Slight restructure.
cob_exp10 must be int not long.
common.h: extern definitions.
fileio.c: Force SORT to put duplicates in order.
move.c: Performance.
numeric.c: Remove unused function.
Change long to int (64-bitters where long = 8 bytes).
2005-04-15 Keisuke Nishida <knishida@opencobol.org>
* Makefile.am (libcob_la_CFLAGS): Add -fsigned-char.
2005-04-13 Keisuke Nishida <knishida@opencobol.org>
* byteswap.h: #include <sys/types.h>. Use u_int16_t, u_int32_t, and
u_int64_t instead of unsigned short, etc.
2005-03-03 Roger While <simrw@sim-basis.de>
* fileio.h, fileio.c :
LINAGE
2005-02-11 Roger While <simrw@sim-basis.de>
* common.h, common.c, termio.c :
Reorder struct cob_module.
Fixes for ARGUMENT-VALUE/NUMBER -
discovered by Franklin Ankum.
Fix possible too small buffer.
2005-02-09 Roger While <simrw@sim-basis.de>
* I must be going senile. Finally fix
cob_external_addr.
2005-02-08 Roger While <simrw@sim-basis.de>
* Fix my cob_external_addr routine
2005-02-07 Roger While <simrw@sim-basis.de>
* common.h, common.c: new routine cob_external_addr
Dynamically cater for EXTERNAL items at runtime
2005-02-04 Roger While <simrw@sim-basis.de>
* termio.h, termio.c :
implement DISPLAY .. UPON ENVIRONMENT-VALUE
implement DISPLAY .. UPON ARGUMENT-NUMBER
implement ACCEPT .. FROM ARGUMENT-NUMBER
implement ACCEPT .. FROM ARGUMENT-VALUE
2005-01-07 Roger While <simrw@sim-basis.de>
* move.c: Fix incorrect truncation when !binary_trunc
and moving binary to packed or edited fields
* numeric.c: Fix arithmetic with numeric display
fields when !binary_trunc
2004-11-19 Roger While <simrw@sim-basis.de>
* move.c: Fix incorrect truncation when !binary_trunc
2004-11-05 Roger While <simrw@sim-basis.de>
* numeric.c: Handle arithmetic for !binary_trunc.
2004-11-04 Roger While <simrw@sim-basis.de>
* move.c: Fix regression for NIST suite
2004-11-04 Bernard Giroud <bgiroud@opencobol.org>
* numeric.c (cob_decimal_get_binary): reverted:
NIST test suite is no more working.
2004-11-02 Bernard Giroud <bgiroud@opencobol.org>
* numeric.c (cob_decimal_get_binary) :
Worked around what I consider a bug in Gmp for getting
a long signed value.
* Added checks for option binary-truncate from a
suggestion of Roger While.
2004-10-31 Roger While <simrw@sim-basis.de>
* fileio.h: For I/O exceptions, has_status flag and slight
rearrangement of fields in cob_file structure.
2004-10-30 Roger While <simrw@sim-basis.de>
* call.c, common.c, move.c: Replace back-tick "'" with
quote "'"
* move.c: Fix to handle PIC ***B***B**9.
* byteswap.h: Always generate optimum code, not just with -O
* fileio.c: Tidy up file error messages.
In the ENOENT return for OPEN OUTPUT/EXTEND, return status 30.
Note this will not have any effect until we activate error
handling for the OPEN. (Coming up soon)
2004-09-17 Keisuke Nishida <knishida@opencobol.org>
* numeric.h (COB_STORE_TRUNC_ON_OVERFLOW): Define as 0x04, not 0x02.
(Thanks to Roger While)
2004-07-06 Keisuke Nishida <knishida@opencobol.org>
* numeric.h (COB_STORE_ROUND, COB_STORE_KEEP_ON_OVERFLOW)
(COB_STORE_TRUNC_ON_OVERFLOW): New macros.
* numeric.h, numeric.c (cob_decimal_get_display)
(cob_decimal_get_binary, cob_decimal_get_field, cob_add, cob_sub)
(cob_div_quotient, cob_div_remainder): New arg 'opt'.
* numeric.c (cob_decimal_get_field_round): Removed.
Integrated into 'cob_decimal_get_field'.
(cob_display_add_int): Renamed from cob_add_int_to_display.
(cob_add_round, cob_sub_round): Removed.
2004-07-05 Keisuke Nishida <knishida@opencobol.org>
* fileio.c (sort_read): Set field size for varying records.
(Thanks to Roger While!)
2004-06-12 Keisuke Nishida <knishida@opencobol.org>
* termio.c (display): Display full digits of binary item
when pretty-display is off, not when binary-truncate is off.
2004-05-21 Keisuke Nishida <knishida@opencobol.org>
* move.c (cob_binary_get_int64): Reimplemented using memcpy.
(cob_binary_get_int): Call cob_binary_get_int64.
(cob_binary_set_int): Call cob_binary_set_int64.
2004-05-16 Keisuke Nishida <knishida@opencobol.org>
* common.c (cob_cmp): Compare non-display numeric and alphanumeric
correctly.
2004-05-04 Keisuke Nishida <knishida@opencobol.org>
* termio.c (display_numeric): Leading sign for binary.
2004-05-04 Keisuke Nishida <knishida@opencobol.org>
* byteswap.h (COB_BSWAP_32_IA32): Always use bswap.
(We no longer support i386.)
2004-05-04 Keisuke Nishida <knishida@opencobol.org>
* fileio.c (cob_default_error_handle): Set error for status 35.
2004-05-04 Keisuke Nishida <knishida@opencobol.org>
* common.c (cob_runtime_error): Flush buffer at the end.
2004-04-07 Keisuke Nishida <knishida@opencobol.org>
* common.h, common.c (cob_table_sort_init, cob_table_sort_init_key)
(cob_table_sort): New functions.
2004-04-07 Keisuke Nishida <knishida@opencobol.org>
* strings.c (cob_inspect_converting): Do not convert repeatedly.
(Thanks to Richard Smith <rich@theforest.plus.com>)
2004-03-12 Keisuke Nishida <knishida@wind.sannet.ne.jp>
* screenio.c: #include <ncurses.h>
2004-03-12 Keisuke Nishida <knishida@wind.sannet.ne.jp>
* fileio.c (file_close): FILE *fp = f->file;
2004-03-10 Keisuke Nishida <knishida@wind.sannet.ne.jp>
* fileio.c (cob_sort_init): Use temporary sort file.
(cob_sort_finish): Delete sort file.
(cob_open): No filename mapping for SORT files.
2004-03-09 Keisuke Nishida <knishida@wind.sannet.ne.jp>
* move.c (cob_binary_set_int, cob_binary_set_int64): Reimplemented.
(Thanks to Roger While)
2004-03-06 Keisuke Nishida <knishida@wind.sannet.ne.jp>
* fileio.c (file_open): Open files in the text mode for line
sequential files.
2004-03-06 Keisuke Nishida <knishida@wind.sannet.ne.jp>
* fileio.c (file_open, file_close): Use fcntl for file locking.
2003-10-01 Keisuke Nishida <kxn30@yahoo.co.jp>
* common.h (cob_module): New member 'flag_pretty_display'.
* termio.c (display): Updated.
2003-09-29 Keisuke Nishida <kxn30@yahoo.co.jp>
* common.c (cob_is_numeric): Test packed decimal.
2003-08-30 Keisuke Nishida <kxn30@yahoo.co.jp>
* common.h (cob_module): Replace 'flag_binary_print_full' by
'flag_binary_truncate'. Related functions updated.
2003-08-29 Keisuke Nishida <kxn30@yahoo.co.jp>
* termio.h (COB_SYSIN, COB_SYSOUT, COB_SYSERR): Removed.
* termio.h, termio.c (cob_display_error): New function.
(cob_newline_error): New function.
2003-08-27 Keisuke Nishida <kxn30@yahoo.co.jp>
* fileio.c: Compile indexed and sort i/o only when either of
HAVE_DBOPEN or WITH_DB is defined.
2003-08-26 Keisuke Nishida <kxn30@yahoo.co.jp>
* common.h (cob_module): New member 'flag_filename_mapping'.
* fileio.c (cob_open): filename mapping.
2003-08-26 Keisuke Nishida <kxn30@yahoo.co.jp>
* common.h, common.c (cob_a2e, cob_e2a): New variables.
2003-08-25 Keisuke Nishida <kxn30@yahoo.co.jp>
* fileio.c (sort_read): Bug fix of first read.
2003-08-25 Keisuke Nishida <kxn30@yahoo.co.jp>
* fileio.h, fileio.c (cob_sort_init): 3rd argument 'sequence'.
(cob_sort_finish): New function.
2003-08-22 Keisuke Nishida <kxn30@yahoo.co.jp>
* Don't use run-time config file.
* common.h, common.c (cob_config_lookup, cob_config_compare): Removed.
* call.c (cob_init_call): Handle env "COB_DYNAMIC_RELOADING".
2003-08-21 Keisuke Nishida <kxn30@yahoo.co.jp>
* common.h (cob_module): New member 'flag_binary_print_full'.
* termio.c (cob_display): Binary full print.
2003-08-21 Keisuke Nishida <kxn30@yahoo.co.jp>
* common.h (cob_display_sign): New enum.
(cob_module): New entry 'display_sign'.
* common.c (cob_real_get_sign, cob_real_put_sign): Check display_sign.
2003-08-19 Keisuke Nishida <knishida@netlab.jp>
* termio.c (cob_accept_command_line): Omit the program name (argv[0]).
2003-08-17 Keisuke Nishida <knishida@netlab.jp>
* termio.h, termio.c (cob_display_environment): New function.
(cob_accept_environment): Remove the second argument.
2003-08-12 Keisuke Nishida <knishida@netlab.jp>
* byteswap.h: New file.
* byteorder.h: Removed.
2003-08-12 Keisuke Nishida <knishida@netlab.jp>
* common.h, common.c (cob_return_code): Removed.
2003-08-10 Keisuke Nishida <knishida@netlab.jp>
* common.h (COB_FLAG_BINARY_SWAP): New macro.
* move.h, move.c (cob_binary_get_int): New function.
(cob_binary_get_int64): New function.
(cob_binary_set_int): New function.
(cob_binary_set_int64): New function.
* common.h (COB_TYPE_NUMERIC_NATIVE): Removed.
* common.h, common.c (cob_binary_convert): Removed.
* move.c (cob_move_display_to_native): Removed.
(cob_move_native_to_display): Removed.
* numeric.c (cob_decimal_set_native): Removed.
(cob_decimal_get_native): Removed.
2003-08-09 Keisuke Nishida <knishida@netlab.jp>
* call.c (cob_call_error): Exit with status 1.
2003-08-07 Keisuke Nishida <knishida@netlab.jp>
* byteorder.h: New file.
* common.h (COB_TYPE_NUMERIC_NATIVE): New macro.
* common.h, common.c (cob_binary_convert): New function.
* move.c (cob_move_display_to_native): New function.
(cob_move_native_to_display): New function.
* numeric.c (cob_decimal_set_native): New function.
(cob_decimal_get_native): New function.
2003-08-05 Keisuke Nishida <knishida@netlab.jp>
* fileio.h (COB_WRITE_MASK, COB_WRITE_LINES, COB_WRITE_PAGE)
(COB_WRITE_AFTER, COB_WRITE_BEFORE): New macros.
* fileio.h, fileio.c (cob_write_page, cob_write_lines): Removed.
(cob_write): Take third argument.
* fileio.c (file_write_opt): New function.
(FILE_WRITE_AFTER, FILE_WRITE_BEFORE): New macros.
2003-07-28 Keisuke Nishida <knishida@netlab.jp>
* common.h, common.c (cob_exception): Removed.
2003-06-29 Keisuke Nishida <knishida@netlab.jp>
* fileio.h, fileio.c (cob_sort_init): Removed the 3rd argument.
(cob_sort_init_key): New function.
2003-06-28 Keisuke Nishida <knishida@netlab.jp>
* common.h, common.c (cob_cmp_result): Removed.
2003-06-25 Keisuke Nishida <knishida@netlab.jp>
* termio.c (cob_accept): Do not use readline.
2003-06-19 Keisuke Nishida <knishida@netlab.jp>
* common.c, common.h (cob_check_odo): New function.
(cob_check_subscript_depending): Removed.
2003-06-18 Keisuke Nishida <knishida@netlab.jp>
* fileio.c (relative_rewrite): Refer to the relative key unless
the access mode is sequential.
2003-06-12 Keisuke Nishida <knishida@netlab.jp>
* fileio.c (SEEK_INIT): New macro.
2003-06-07 Keisuke Nishida <knishida@netlab.jp>
* numeric.c, numeric.h: No longer use gmp.
(cob_decimal_init, cob_decimal_clear): Removed.
2003-06-07 Keisuke Nishida <knishida@netlab.jp>
* common.h (cob_module): New member 'collating_sequence'.
* common.c (CMP): New macro.
(cmp_char, cmp_all, cmp_alnum): Use CMP.
2003-05-29 Keisuke Nishida <knishida@netlab.jp>
* common.h (cob_switch): Removed.
* common.c (cob_set_switch, cob_get_switch): New function.
2003-05-27 Keisuke Nishida <knishida@netlab.jp>
* common.h (cob_module): Renamed from cob_environment.
(cob_current_module): Renamed from cob_env.
(cob_module_enter): Renamed from cob_push_environment.
(cob_module_leave): Renamed from cob_pop_environment.
(cob_module_init): Removed.
* call.c (cob_resolve): Do not call cob_module_init.
2003-05-20 Keisuke Nishida <knishida@netlab.jp>
* strings.c (cob_string_delimited): New function.
(cob_string_append): Take only one argument.
2003-05-18 Keisuke Nishida <knishida@netlab.jp>
* common.c (ding_on_error): Removed.
2003-05-18 Keisuke Nishida <knishida@netlab.jp>
* fileio.c: Large file system support.
(_LFS64_LARGEFILE) [WITH_LFS64]: Defined.
(_LFS64_STDIO) [WITH_LFS64]: Defined.
(_FILE_OFFSET_BITS) [WITH_LFS64]: Defined.
(_LARGEFILE64_SOURCE) [WITH_LFS64]: Defined.
2003-05-18 Keisuke Nishida <knishida@netlab.jp>
* common.h (cob_d2i, cob_i2d): New macros.
2003-05-15 Keisuke Nishida <knishida@netlab.jp>
* move.c (COPY_COMMON_REGION): Removed.
(store_common_region): New function.
(cob_display_to_int): New function.
(cob_binary_to_int): New function.
(cob_get_int): Optimized.
2003-05-13 Keisuke Nishida <knishida@netlab.jp>
* fileio.c (INITIAL_FLAGS): Set to O_BINARY when _WIN32 is defined
rather than __MINGW32__.
(file_open): Open in binary mode.
(cob_open): Make sure that errno == ENOENT after stat.
2003-05-06 Keisuke Nishida <knishida@netlab.jp>
* exception.def (COB_EC_ALL): Added.
* common.h (COB_SET_EXCEPTION): New macro.
(cob_exception_table): New variable.
(cob_exception_id): New enum.
(cob_exception_code): Removed.
2003-05-04 Keisuke Nishida <knishida@netlab.jp>
* numeric.c: Optimized cob_add_int/cob_sub_int for DISPLAY.
(digit_table): New variable.
(init_digit_table): New function.
(display_add_int, display_sub_int): New functions.
(cob_add_int_to_display): New function.
(cob_add_int): Call 'cob_add_int_to_display'.
(cob_sub_int): Call 'cob_add_int'.
(Thanks to David Korn <dgk@research.att.com>)
2003-05-04 Keisuke Nishida <knishida@netlab.jp>
* common.h (cob_get_sign, cob_put_sign): Redefined as macros.
* common.c (cob_real_get_sign, cob_real_put_sign): Called from
the above macros.
2003-05-03 Keisuke Nishida <knishida@netlab.jp>
* fileio.h (COB_OPEN_NONE, COB_OPEN_LOCKED): New macros.
(COB_CLOSE_REEL, COB_CLOSE_REEL_REMOVAL): Removed.
(COB_FILE_CLOSED_WITH_LOCK): New macro.
* fileio.c (sequential_close): Close with lock.
(sequential_open): Seek to the end for extend file.
(cob_open): Return COB_FILE_CLOSED_WITH_LOCK when file is locked.
2003-05-03 Keisuke Nishida <knishida@netlab.jp>
* common.h, common.c (cob_linage_counter): New variable.
2003-04-26 Keisuke Nishida <knishida@netlab.jp>
* common.h, common.c (cob_uint_attr, cob_sint_attr): Removed.
(cob_ubin_attr, cob_sbin_attr): Removed.
* move.c: Do not use them.
2003-04-03 Keisuke Nishida <knishida@netlab.jp>
* move.c (cob_get_int): Renamed from cob_to_int.
2003-03-30 Keisuke Nishida <knishida@netlab.jp>
* numeric.c (cob_decimal_set_int): Remove the 3rd argument 'decimals'.
(cob_decimal_set_int64): Removed.
2003-03-25 Keisuke Nishida <knishida@netlab.jp>
* exception.def: New file.
2003-03-06 Keisuke Nishida <knishida@netlab.jp>
* common.c (cob_field_to_string): Search for ' ' from backward.
2003-02-25 Keisuke Nishida <knishida@netlab.jp>
* common.c (cob_push_environment, cob_pop_environment): New functions.
2003-01-23 Keisuke Nishida <knishida@netlab.jp>
* fileio.h (cob_file): Break out flags.
* fileio.c: Updated.
* fileio.h, fileio.c (cob_dummy_status): Removed.
* fileio.c (save_status): Check file_status before setting status.
2003-01-20 Keisuke Nishida <knishida@netlab.jp>
* common.h (COB_FLAG_HAVE_SIGN): New macro.
(COB_FLAG_SIGN_SEPARATE): New macro.
(COB_FLAG_SIGN_LEADING): New macro.
(COB_FLAG_BLANK_ZERO): New macro.
(COB_FLAG_JUSTFIED): New macro.
(COB_FIELD_HAVE_SIGN): New macro.
(COB_FIELD_SIGN_SEPARATE): New macro.
(COB_FIELD_SIGN_LEADING): New macro.
(COB_FIELD_BLANK_ZERO): New macro.
(COB_FIELD_JUSTIFIED): New macro.
(cob_field_attr): Remove members 'have_sign', 'sign_separate',
'sign_leading', 'blank_zero', and 'justified'. New member
'flags'. All files updated.
2003-01-20 Keisuke Nishida <knishida@netlab.jp>
* numeric.h (cob_decimal): Rename 'number' to 'data'.
2003-01-15 Keisuke Nishida <knishida@netlab.jp>
* move.c (cob_move_all): New function.
(cob_move): Call cob_move_all.
2002-12-10 Keisuke Nishida <knishida@netlab.jp>
* common.h (cob_environment, cob_env): New.
(cob_decimal_point, cob_currency_symbol, cob_numeric_separator):
Replaced by cob_env. All files updated.
* common.c (cob_decimal_point, cob_currency_symbol): Removed.
2002-12-05 Keisuke Nishida <knishida@netlab.jp>
* common.c (cob_index, cob_index_depending): Exit when index is
out of range.
2002-11-25 Keisuke Nishida <knishida@netlab.jp>
* numeric.c (cob_decimal_get, cob_decimal_get_r): Copy decimal
before modifying it.
2002-11-25 Keisuke Nishida <knishida@netlab.jp>
* strings.h (cob_inspect_init): Take second argument 'replacing'.
(cob_inspect_characters): New function.
(cob_inspect_all): New function.
(cob_inspect_leading): New function.
(cob_inspect_first): New function.
2002-11-25 Keisuke Nishida <knishida@netlab.jp>
* common.h, common.c (cob_cmp_int): New function.
2002-11-24 Keisuke Nishida <knishida@netlab.jp>
* move.h, move.c (cob_memcpy): Renamed from cob_mem_move.
* fileio.h (COB_ASCENDING, COB_DESCENDING): Moved from common.h.
* common.h (cob_field_attr): Remove member 'all'.
(COB_TYPE_*): New macros.
(COB_FIELD_IS_NUMERIC): New macro.
* numeric.h (cob_d1, cob_d2, cob_d3, cob_d4, cob_dt): Removed.
(cob_decimal_set_int64): Removed.
* numeric.h, numeric.c (cob_numeric_cmp): New function.
* common.c (cob_cmp): Call 'cob_numeric_cmp' for numeric comparison.
* fileio.c (sort_compare): Always call cob_cmp.
2002-11-23 Keisuke Nishida <knishida@netlab.jp>
* numeric.h, numeric.c (cob_add_r, cob_sub_r): New functions.
(cob_decimal_get_r): Renamed from 'cob_decimal_get_rounded'.
2002-11-22 Keisuke Nishida <knishida@netlab.jp>
* fileio.h, fileio.c (cob_sort_init): Take 3 arguments.
2002-11-22 Keisuke Nishida <knishida@netlab.jp>
* common.h, common.c (cob_uint_attr, cob_sint_attr): New constants.
* common.h, common.c (cob_ubin_attr, cob_sbin_attr): New constants.
2002-11-21 Keisuke Nishida <knishida@netlab.jp>
* numeric.h, numeric.c (cob_add, cob_sub, cob_add_int, cob_sub_int):
Don't take parameter 'round'. All caller updated.
2002-11-19 Keisuke Nishida <knishida@netlab.jp>
* fileio.c (lineseq_read): Not do anything special with '\0'.
2002-11-19 Keisuke Nishida <knishida@netlab.jp>
* strings.h, strings.c: Divide string functions.
(cob_inspect, cob_string, cob_unstring): Removed.
(cob_inspect_init): New function.
(cob_inspect_start): New function.
(cob_inspect_before): New function.
(cob_inspect_after): New function.
(cob_inspect_tallying_characters): New function.
(cob_inspect_tallying_all): New function.
(cob_inspect_tallying_leading): New function.
(cob_inspect_replacing_characters): New function.
(cob_inspect_replacing_all): New function.
(cob_inspect_replacing_leading): New function.
(cob_inspect_replacing_first): New function.
(cob_inspect_converting): New function.
(cob_inspect_finish): New function.
(cob_string_init): New function.
(cob_string_append): New function.
(cob_string_finish): New function.
(cob_unstring_init): New function.
(cob_unstring_delimited): New function.
(cob_unstring_init): New function.
(cob_unstring_tallying): New function.
(cob_unstring_finish): New function.
* strings.h (COB_INSPECT_*, COB_STRING_*, COB_UNSTRING_*): Removed.
2002-11-13 Keisuke Nishida <knishida@netlab.jp>
* common.h, common.c (cob_all_attr): New variable.
(cob_just_attr): Renamed from 'cob_alnum_justified_attr'.
(cob_cmp): New function.
(cob_cmp_zero, cob_cmp_space, cob_cmp_low): Removed.
(cob_cmp_high, cob_cmp_quote, cob_cmp_field): Removed.
* common.c (cmp_char): Renamed from 'cmp_figurative'.
(cob_cmp_alnum): Renamed from 'cmp_field'.
* fileio.c (sort_compare): Updated.
2002-11-13 Keisuke Nishida <knishida@netlab.jp>
* common.h (cob_status): Removed.
(cob_error_code): New variable.
(COB_STATUS_SUCCESS, COB_STATUS_OVERFLOW): Removed.
(COB_EC_*): New macros.
All files updated.
* strings.h (COB_STRING_WITH_POINTER): Removed.
(COB_UNSTRING_WITH_POINTER): Removed.
* strings.h, strings.c (cob_string, cob_unstring): Take second
argument 'ptr'.
* strings.c (set_int, add_int): Removed.
2002-11-11 Keisuke Nishida <knishida@netlab.jp>
* fileio.h (COB_FILE_OUT_OF_KEY_RANGE): New macro.
* fileio.c (relative_read_next): Use COB_FILE_OUT_OF_KEY_RANGE.
(cob_default_error_handle): Add COB_FILE_OUT_OF_KEY_RANGE.
2002-11-08 Keisuke Nishida <knishida@netlab.jp>
* common.h (cob_field_attr): New member 'all'.
* common.c, common.h (cob_cmp_str, cob_cmp_all): Removed.
* common.c (cob_cmp_field): Integrate comparison functions.
2002-11-08 Keisuke Nishida <knishida@netlab.jp>
* support.h: Removed.
* Makefile.am: Remove support.h.
2002-11-07 Keisuke Nishida <knishida@netlab.jp>
* numeric.c, numeric.h (cob_add_int, cob_sub_int): Do not take
argument 'decimals'. All callers updated.
2002-10-21 Keisuke Nishida <knishida@netlab.jp>
* common.c (cmp_figurative): New function.
* common.c, common.h (cob_cmp_zero, cob_cmp_space): New functions.
(cob_cmp_low, cob_cmp_high, cob_cmp_quote): New functions.
2002-10-18 Keisuke Nishida <knishida@netlab.jp>
* numeric.h, numeric.c (cob_add_int64, cob_sub_int64): Removed.
2002-10-13 Keisuke Nishida <knishida@netlab.jp>
* fileio.h (cob_file): New member 'record', replacing
'record_size' and 'record_data'.
(cob_file): Rename 'record_depending' to 'record_size'.
* fileio.c: Updated.
2002-10-13 Keisuke Nishida <knishida@netlab.jp>
* common.h (cob_field_attr, cob_field): New typedef.
* fileio.h (cob_file_key, cob_file, cob_fileio_funcs): New typedef.
* numeric.h (cob_decimal): New typedef.
* screenio.h (cob_screen): New typedef.
(cob_screen_type, cob_screen_data, cob_screen_position): New typedef.
* support.h (cob_frame): New typedef.
2002-10-08 Keisuke Nishida <knishida@netlab.jp>
* Use 'struct cob_field *' instead of 'struct cob_field'
for all function prototypes. All files updated.
* common.h (COB_FIELD_IS_VALID): Removed.
* common.h (cob_field_attr): Renamed from cob_field_desc.
All files updated.
* common.c, common.h (cob_group_attr): New variable.
(cob_alnum_justified_attr): New variable.
* support.h (cob_ref, cob_ref_rest): Removed.
2002-09-30 Keisuke Nishida <knishida@netlab.jp>
* cobconfig.h.in: Removed.
2002-09-29 Keisuke Nishida <knishida@netlab.jp>
* fileio.h (cob_file): Restructured.
* fileio.c: Updated for new cob_file scheme.
* fileio.h, fileio.c (cob_sort_init): Renamed from cob_sort_keys.
* cobconfig.h.in (HAVE_DB1_DB_H, HAVE_DB_H): Removed.
2002-09-24 Keisuke Nishida <knishida@netlab.jp>
* support.h: Do not support non-computed-goto jump.
* cobconfig.h.in: Use AM_CONFIG_HEADER scheme.
(COB_HAVE_COMPUTED_GOTO): Removed.
(HAVE_DB1_DB_H, HAVE_DB_H): Added.
* fileio.h: #include <libcob/cobconfig.h>
Include <db1/db.h> or <db.h> which exists.
2002-09-23 Keisuke Nishida <knishida@netlab.jp>
* strings.c (cob_unstring): Don't use alloca.
2002-09-12 Keisuke Nishida <knishida@netlab.jp>
* numeric.h (cob_decimal): Use exponent instead of decimals.
* numeric.c: Related functions updated.
2002-09-12 Keisuke Nishida <knishida@netlab.jp>
* fileio.c (sequential_open): Set f->file.fd to 0 on error.
2002-09-06 Keisuke Nishida <knishida@netlab.jp>
* fileio.h, fileio.c: INDEXED files has been reimplemented using db1.
2002-08-05 Keisuke Nishida <knishida@netlab.jp>
* fileio.c (sort_compare): Prototype for db-3.1.x.
2002-08-02 Keisuke Nishida <knishida@netlab.jp>
* common.h, common.c (cob_cmp_all): Unify the former cob_cmp_all
and cob_cmp_all_str.
* common.c (cmp_internal): New function.
(cob_cmp_str, cob_cmp_field): Use it.
2002-08-01 Keisuke Nishida <knishida@netlab.jp>
* fileio.h (COB_ORG_SORT, COB_ORG_MAX): New macros.
(cob_file): New member 'sort_nkeys' and 'sort_keys'.
* fileio.c (sort_file): New variable.
(sort_compare, sort_open, sort_close, sort_read, sort_write):
New functions.
(sort_funcs): New variable.
(cob_sort_keys, cob_sort_using, cob_sort_giving): New functions.
(cob_init_fileio): Init sort functions.
2002-08-01 Keisuke Nishida <knishida@netlab.jp>
* common.h (COB_ASCENDING, COB_DESCENDING): New macros.
2002-07-31 Keisuke Nishida <knishida@netlab.jp>
* common.c (cob_init_config): New function.
(cob_init): Updated. Load the config file first.
2002-07-30 Keisuke Nishida <knishida@netlab.jp>
* fileio.c (indexed_write_internal): New function.
(indexed_write, indexed_rewrite): Updated.
2002-07-30 Keisuke Nishida <knishida@netlab.jp>
* fileio.c (lineseq_read): Check for EOF.
2002-07-30 Keisuke Nishida <knishida@netlab.jp>
* fileio.h (cob_fileio_funcs): 'write' takes only one argument.
(sequential_write, lineseq_write, relative_write, indexed_write): Ditto.
(cob_write): Updated.
2002-07-30 Keisuke Nishida <knishida@netlab.jp>
* screenio.c: Check configuration.
2002-07-24 Keisuke Nishida <knishida@netlab.jp>
* numeric.h (cob_decimal): Removed.
* numeric.c, numeric.h: Relace 'cob_decimal' by 'struct cob_decimal *'.
2002-07-14 Keisuke Nishida <knishida@netlab.jp>
* move.c (cob_set_int): Moved from numeric.c.
Reimplemented using 'cob_move'.
2002-07-13 Keisuke Nishida <knishida@netlab.jp>
* numeric.c (cob_decimal_get_double): Bug fix in calculation.
(cob_decimal_set_double): Take effect of decimal figures.
2002-07-08 Keisuke Nishida <knishida@netlab.jp>
* fileio.h (cob_file): New field 'assign'.
* fileio.c, fileio.h (cob_open): Do not take file name. Use 'assign'.
2002-07-05 Keisuke Nishida <knishida@netlab.jp>
* screenio.c, screenio.h (cob_screen_attr): New function.
* screenio.h (COB_SCREEN_TYPE_ATTRIBUTE): New type.
(cob_screen_data): New entry 'dummy'.
2002-07-05 Keisuke Nishida <knishida@netlab.jp>
* fileio.h (cob_file): Renamed from cob_file_desc.
* fileio.c: Updated.
2002-07-01 Keisuke Nishida <knishida@netlab.jp>
* screenio.c, screenio.h: New files.
* Makefile.am: Add them.
2002-06-17 Keisuke Nishida <knishida@netlab.jp>
* call.c (cob_call_resolve): Don't set cob_status.
2002-06-11 Keisuke Nishida <knishida@netlab.jp>
* call.c (cob_resolve): Use COB_MODULE_EXT.
2002-06-11 Keisuke Nishida <knishida@netlab.jp>
* common.c, common.h (cob_alnum_desc): New variable.
* common.c (cob_zero, cob_space, cob_high, cob_low, cob_quote): Use it.
* move.c (cob_mem_move): Use it.
2002-06-11 Keisuke Nishida <knishida@netlab.jp>
* Allow cob_field.desc to be NULL.
* common.h, common.c, move.c, numeric.c: Updated.
2002-06-11 Keisuke Nishida <knishida@netlab.jp>
* common.h (COB_FIELD_IS_VALID): New macro.
* fileio.c, strings.c: Use 'COB_FIELD_IS_VALID'.
2002-06-11 Keisuke Nishida <knishida@netlab.jp>
* common.h (cob_field): Field 'size' moved from 'cob_field_desc'.
(COB_FIELD_SIZE, COB_FIELD_DATA): Removed.
* common.c, fileio.c, move.c, numeric.c, strings.c, termio.c: Updated.
2002-06-04 Keisuke Nishida <knishida@netlab.jp>
* common.c, common.h (cob_config_compare): New function.
* call.c (cob_init_call): Use 'cob_config_compare'.
* common.c (ding_on_error): New variable.
(cob_init): Set ding_on_error from option "ding-on-error".
(cob_runtime_error): Ring a bell only when "ding-on-error" is "yes".
2002-06-04 Keisuke Nishida <knishida@netlab.jp>
* support.h (cob_perform): Enclosed by do ... while (0).
2002-06-04 Keisuke Nishida <knishida@netlab.jp>
* Makefile.am (libcob_la_CFLAGS): -I$(top_srcdir).
* call.c, common.c, fileio.c, move.c: Updated.
2002-05-31 Keisuke Nishida <knishida@netlab.jp>
* numeric.c, numeric.h (cob_div_remainder): Renamed from
'cob_div_reminder' (typo fix).
2002-05-31 Keisuke Nishida <knishida@netlab.jp>
* common.c, common.h (cob_index, cob_index_depending): Take 'name'.
Display index name with the error message.
* support.h (COB_INDEX, COB_INDEX_DEPENDING): Take 'name'.
2002-05-31 Keisuke Nishida <knishida@netlab.jp>
* Makefile.am (libcob_la_DEPENDENCIES): Removed.
2002-05-30 Keisuke Nishida <knishida@netlab.jp>
* common.c (cob_check_numeric): Takes the field name as an argument.
* common.h (cob_field_desc): Remove member 'name'.
2002-05-30 Keisuke Nishida <knishida@netlab.jp>
* numeric.c (cob_decimal_pow): Handle decimals.
(cob_decimal_set_double, cob_decimal_get_double): New functions.
* numeric.h (cob_decimal_set_double, cob_decimal_get_double): Exported.
2002-05-29 Keisuke Nishida <knishida@netlab.jp>
* Keep field names at run-time.
* common.h (cob_field_desc): New member 'name'.
* common.c (cob_check_numeric): Display filed name on error.
* Makefile.am (libcob_la_DEPENDENCIES): Add defaults.h.
2002-05-29 Keisuke Nishida <knishida@netlab.jp>
* termio.c (cob_init_termio): #include <string.h>
2002-05-29 Keisuke Nishida <knishida@netlab.jp>
* Support run-time config file: libcob.conf.
* common.c (config_load, config_insert, cob_config_lookup):
New functions.
(cob_init): Call 'config_load'.
* common.h (cob_config_lookup): Declared.
* call.c (dynamic_reloading): Renamed from cob_dynamic_reloading.
(cob_init_call): Initialize 'dynamic_reloading'.
2002-05-23 Keisuke Nishida <knishida@netlab.jp>
* call.c, common.c, move.c, Makefile.am: gettextized
Copyright 2002-2023 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification, are
permitted provided the copyright notice and this notice are preserved.
|