File: hercconf.html

package info (click to toggle)
hercules 3.13-9
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 14,392 kB
  • sloc: ansic: 175,124; sh: 8,792; makefile: 760; perl: 149
file content (3661 lines) | stat: -rw-r--r-- 157,480 bytes parent folder | download | duplicates (5)
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
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN" "html.dtd">
<HTML>
<HEAD><TITLE>
Hercules Version 3: Configuration File</TITLE>
<LINK REL=STYLESHEET TYPE="text/css" HREF="hercules.css">
</HEAD>
<BODY BGCOLOR="#ffffcc" TEXT="#000000" LINK="#0000A0"
      VLINK="#008040" ALINK="#000000">
<h1>Hercules Version 3: Configuration File</h1>
<p>
This page describes the configuration file for the Hercules S/370,
ESA/390, and z/Architecture emulator.
<p>
The configuration file <b><i>hercules.cnf</b></i> contains the
processor and device layout.  It is roughly equivalent to the IOCDS on
a real System/390.  The configuration file is an ASCII text file.
<h3>Example configuration file</h3>
<p>
Please note that the below example configuration file should not
be considered a good example of what an actual configuration file
looks like. It is only meant to illustrate what some
of the supported configuration file statements look like
and how they are used.
<p><br>
<center>
<table border=1><tr><td>
<pre><code>

    ####################################################################
    #                HERCULES EMULATOR CONTROL FILE                    #
    #             (Note: not all parameters are shown)                 #
    ####################################################################


    #
    #     <a href="#system_parameters">System parameters</a>
    #


    <a href="#ARCHMODE">ARCHMODE</a>   ESA/390
    <a href="#OSTAILOR">OSTAILOR</a>   OS/390
    <a href="#LOADPARM">LOADPARM</a>   0120....

    <a href="#CPUSERIAL">CPUSERIAL</a>  000611
    <a href="#CPUMODEL">CPUMODEL</a>   3090
    <a href="#CPUVERID">CPUVERID</a>   FD
    <a href="#LPARNAME">LPARNAME</a>   HERCULES
    <a href="#LPARNUM">LPARNUM</a>    21
    <a href="#MODEL">MODEL</a>      EMULATOR
    <a href="#PLANT">PLANT</a>      ZZ
    <a href="#MANUFACTURER">MANUFACTURER</a> HRC
    <a href="#MAINSIZE">MAINSIZE</a>   64
    <a href="#XPNDSIZE">XPNDSIZE</a>   0
    <a href="#NUMCPU">NUMCPU</a>     1
    <a href="#NUMVEC">NUMVEC</a>     1
    <a href="#MAXCPU">MAXCPU</a>     8
    <a href="#ENGINES">ENGINES</a>    CP
    <a href="#SYSEPOCH">SYSEPOCH</a>   1900
    <a href="#YROFFSET">YROFFSET</a>   -28
    <a href="#TZOFFSET">TZOFFSET</a>   -0500

    <a href="#HTTPROOT">HTTPROOT</a>   /usr/local/share/hercules/
    <a href="#HTTPPORT">HTTPPORT</a>   8081 NOAUTH

    <a href="#CCKD">CCKD</a>       RA=2,RAQ=4,RAT=2,WR=2,GCINT=10,GCPARM=0,NOSTRESS=0,TRACE=0,FREEPEND=-1
    <a href="#SHRDPORT">SHRDPORT</a>   3990

    <a href="#PANTITLE">PANTITLE</a>   "My own private MAINFRAME!"
    <a href="#PANRATE">PANRATE</a>    FAST
    <a href="#LOGOPT">LOGOPT</a>     TIMESTAMP
    <a href="#CODEPAGE">CODEPAGE</a>   default
    <a href="#CNSLPORT">CNSLPORT</a>   3270
    <a href="#CONKPALV">CONKPALV</a>   (3,1,10)
    <a href="#LEGACYSENSEID">LEGACYSENSEID</a>   OFF

    <a href="#HERCPRIO">HERCPRIO</a>   0
    <a href="#TODPRIO">TODPRIO</a>    -20
    <a href="#DEVPRIO">DEVPRIO</a>    8
    <a href="#CPUPRIO">CPUPRIO</a>    15

    <a href="#TIMERINT">TIMERINT</a>   DEFAULT
    <a href="#TODDRAG">TODDRAG</a>    1.0
    <a href="#DEVTMAX">DEVTMAX</a>    8

    <a href="#DIAG8CMD">DIAG8CMD</a>   disable
    <a href="#SHCMDOPT">SHCMDOPT</a>   disable

    <a href="#DEFSYM">DEFSYM</a>     TAPEDIR   "<a href="#subs">$(HOME)</a>/tapes"
    <a href="#AUTOMOUNT">AUTOMOUNT</a>  $(TAPEDIR)
    <a href="#AUTOMOUNT">AUTOMOUNT</a>  +/tapes
    <a href="#AUTOMOUNT">AUTOMOUNT</a>  -/tapes/vault

    <a href="#MODPATH">MODPATH</a>    /usr/local/hercules
    <a href="#LDMOD">LDMOD</a>      dyncrypt

    <a href="#PGMPRDOS">PGMPRDOS</a>   restricted
    <a href="#ECPSVM">ECPSVM</a>     no
    <a href="#ASN_AND_LX_REUSE">ASN_AND_LX_REUSE</a>  disable

    <a href="#AUTO_SCSI_MOUNT">AUTO_SCSI_MOUNT</a>      no
    <a href="#MOUNTED_TAPE_REINIT">MOUNTED_TAPE_REINIT</a>  allow

    <a href="#INCLUDE">INCLUDE</a>    mydevs.cfg
    <a href="#IGNORE">IGNORE</a>     INCLUDE_ERRORS
    <a href="#INCLUDE">INCLUDE</a>    optdevs.cfg


    #
    #     <a href="#device_stmts">Device statements</a>
    #


    0009      <a href="#consysc">3215-C</a>  /

    000A      <a href="#1442">1442</a>    adrdmprs.rdr
    000C      <a href="#3505">3505</a>    jcl.txt     ascii  trunc
    000D      <a href="#3525">3525</a>    pch00d.txt  ascii
    000E      <a href="#1403">1403</a>    prt00e.txt  noclear
    001E      <a href="#1403">1403</a>    192.168.200.1:1403 sockdev

    001F      <a href="#3270">3270</a>    * 192.168.0.1
    0200.4    <a href="#3270">3270</a>    * 192.168.0.0  255.255.255.0
    0220.8    <a href="#3270">3270</a>    GROUP1  192.168.100.0  255.255.255.0
    0228.8    <a href="#3270">3270</a>    GROUP2
    0230.16   <a href="#3270">3270</a>

    0000      <a href="#SYSG">SYSG</a>    SYSGCONS

    0120      <a href="#3380">3380</a>    <a href="#ENHSYMINC">${DASD_PATH=dasd/}</a>mvsv5r.120
    0121      <a href="#3380">3380</a>    <a href="#ENHSYMINC">${DASD_PATH=dasd/}</a>mvsv5d.121
    0122      <a href="#3380">3380</a>    <a href="#ENHSYMINC">${DASD_PATH=dasd/}</a>mvswk1.122
    0123      <a href="#3380">3380</a>    192.168.1.100

    0140      <a href="#3370">3370</a>    dosres.140
    0141      <a href="#3370">3370</a>    syswk1.141
    0300      <a href="#3370">3370</a>    sysres.300

    0400      <a href="#CTCT">CTCT</a>    30880  192.168.100.2  30880  2048 &nbsp; &nbsp; &nbsp;
    0401      <a href="#CTCT">CTCT</a>    30881  192.168.100.2  30881  2048
    0420.2    <a href="#CTCI">CTCI</a>    192.168.200.1  192.168.200.2
    0440.2    <a href="#LCS">LCS</a>     -n   /dev/net/tun   192.168.200.2
    0E40      <a href="#CTCE">CTCE</a>    31880  192.168.1.202  32880
    0E41      <a href="#CTCE">CTCE</a>    31882  192.168.1.202  32882

    0580      <a href="#3420">3420</a>    /dev/nst0   # SCSI  (Linux or Windows)
    0581      <a href="#3420">3420</a>    \\.\Tape0   # SCSI  (Windows only)
    0582      <a href="#3420">3420</a>    ickdsf.aws  <a href="#noautomount">noautomount</a>
    0583      <a href="#3420">3420</a>    /cdrom/tapes/uaa196.tdf
    0584-0587 <a href="#3420">3420</a>    <a href="#subs">$(TAPEDIR)</a>/volumes.<a href="#subs">$(CUU)</a> maxsizeM=170 eotmargin=131072

    0590      <a href="#3420">3480</a>    /dev/nst0 <a href="#Quantum">--no-erg</a> <a href="#Quantum">--blkid-32</a>   # <a href="#Quantum">Quantum DLT SCSI</a>

    0023      <a href="#comline">2703</a>    lport=3780 rhost=localhost rport=3781 dial=no
    00C3      <a href="#remtty">2703</a>     lport=32003 dial=IN tty=1


</pre></code>
</td></tr></table>
</center>

<h3>Comment lines</h3>
<p>
    Blank lines, and lines beginning with a &#035; sign
    or an asterisk, are treated as comments.
    <p>

<hr><!-- ---------------------------------------------------------------------------- -->

<a name="system_parameters"></a>
<h3>System parameters</h3>
<p>
    System parameters may appear in any order but they must precede all
    device statements.  Each system parameter must be on a separate line.
    The following system parameters may be specified:

<dl>

<a name="ARCHMODE"></a>
<dt><code>ARCHMODE &nbsp; S/370 &#124; ESA/390 &#124; z/Arch &#124; ESAME</code>
<dd><p>
    specifies the initial architecture mode:
    <ul compact>
    <li>use <code>S/370</code> for OS/360, VM/370, and MVS 3.8.
    <li>use <code>ESA/390</code> for MVS/XA, MVS/ESA, OS/390, VM/ESA, VSE/ESA,
    Linux/390, and ZZSA.
    <li>use <code>z/Arch</code> or <code>ESAME</code> for z/OS and zLinux.
    </ul>
    <p><code>ESAME</code> is a synonym for <code>z/Arch</code>.
    When <code>z/Arch</code> or <code>ESAME</code> is specified,
    the machine will always IPL in ESA/390 mode,
    but is capable of being switched into z/Architecture mode after IPL.
    This is handled automatically by all z/Architecture operating systems.
    <p>

<a name="ASN_AND_LX_REUSE"></a>
<dt><code>ASN_AND_LX_REUSE &nbsp; DISABLE &#124; ENABLE</code>
<dd><p>
    specifies that the ASN-and-LX-Reuse Facility (ALRF) is to be disabled
    or enabled. The default is disabled. This is a z/Architecture-only
    feature (it is always disabled for S/390 or ESA/390). Set this
    to <code>ENABLE</code>&nbsp; if the operating system supports
    this z/Architecture feature and the use of this feature is desired.
    Set it to <code>DISABLE</code>&nbsp; or do not specify anything
    if the operating system doesn't support this feature, and it
    inadvertently sets CR0 bit 44 to 1, usually leading to unexpected
    program interrupt when instructions such as LASP are issued.
    <p>
    <code>ASN_AND_LX_REUSE</code> may be abbreviated as <code>ALRF</code>
    <p>

<a name="AUTOMOUNT"></a>
<dt><code>AUTOMOUNT &nbsp; <em>[&plusmn;]directory</em></code>
<dd><p>
    specifies the host system directory where the guest is allowed
    or not allowed to automatically load virtual tape volumes from.
    Prefix allowable directories with a '+' plus sign and unallowable
    directories with a '-' minus sign. The default prefix if neither is
    specified is the '+' plus sign (i.e. an allowable directory).
    <p>
    <i><b>Caution:</b> &nbsp;Enabling this feature may have security
    consequences depending on which allowable host system directories you
    specify as well as how your guest operating system enforces
    authorized use of the Set Diagnose (X'4B') channel command code.
    </i>
    <p>
    All host system virtual tape volumes to be "automounted" by the guest
    must reside within one of the specified allowable host system directories
    or any of its subdirectories while not also being within any of the
    specified unallowable directories or any of their subdirectories,
    in order for the guest-invoked automount to be accepted.
    <p>
    Note: specifying a disallowed automount directory does not preclude the
    Hercules operator from manually mounting any desired file via the
    <code>devinit</code> panel command -- even one in a currently defined
    "disallowed" automount directory. The AUTOMOUNT statement only controls
    guest-invoked automatic tape mounts and not manual tape mounts performed
    by the Hercules operator.
    <p>
    All directories must be specified on separate statements, but as many
    statements as needed may be specified in order to describe the desired
    allowable/unallowable directories layout. For convenience, an
    <code>automount</code> panel command is also provided to dynamically
    add/remove new/existing allowable/unallowable automount
    directories at any time.
    <p>
    The automount feature is activated whenever you specify at least
    one allowable or unallowable directory. If only
    unallowable directories are specified, then the current directory
    becomes the only defined allowable automount directory by default.
    <p>
    All specified directories are always resolved to fully-qualified
    absolute directory paths before being saved.
    <p>
    Refer to the description of the virtual tape device
    '<a href="#noautomount">noautomount</a>' option for more information.
    <p>

<a name="AUTO_SCSI_MOUNT"></a>
<dt><code>AUTO_SCSI_MOUNT &nbsp; NO &#124; YES &#124; <em>nn</em></code>
<dd><p>
    specifies whether automatic detection of SCSI tape mounts are to be
    enabled or not.
    <p>
    Specifying <code>NO</code> or 0 seconds (the default) indicates
    the option is disabled, forcing all SCSI tape mounts to be done
    manually via an appropriate <code>devinit</code> command.
    <p>
    A value from 1 to 99 seconds inclusive enables the option
    and causes periodic queries of the SCSI tape drive to automatically
    detect when a new tape is mounted. Specifying <code>YES</code>&nbsp;
    is the same as specifying 5 seconds, the current default interval.
    <p>
    The <code>scsimount</code> panel command may also be used to display
    and/or modify this value on demand once Hercules has been started. Note
    too that the <code>scsimount</code> panel command also lists any mounts
    and/or dismounts that may still be pending on the drive, as long as
    you've defined your tape drive as a model that has an LCD "display"
    (such as a model 3480, 3490 or 3590).
    <p>
    <i>
    <b>Note:</b> &nbsp;enabling this option may cause Hercules to take
    longer to shutdown depending on the value specified for this option
    as well as how the host operating system (Windows, Linux, etc) and
    associated hardware (SCSI adapter) behaves to drive status queries
    for drives which do not have any media currently mounted on them.
    </i>
    <p>

<a name="CCKD"></a>
<dt><code>CCKD &nbsp; <em>cckd-parameters</em></code>
<dd><p>
    The CCKD command and initialization statement can be used to affect
    cckd processing. The CCKD initialization statement is specified as
    a Hercules configuration file statement and supports the same options
    as the cckd panel command. Refer to the
    <a href="cckddasd.html#cckdcommand">Compressed Dasd Emulation</a>
    web page for more information.
    <p>

<a name="CODEPAGE"></a>
<dt><code>CODEPAGE &nbsp; <em>mapping</em></code>
<dd><p>
    specifies the codepage conversion mapping table used for ASCII/EBCDIC translation.
    <p>

    <code>default</code> specifies traditional Hercules codepage mapping.
    <p>

    Other supported codepage mappings are:
    <p>

    <table border=1 cellpadding=3>
        <tr>
          <th rowspan=2>Mapping</th>
          <th colspan=2>Description</th>
        </tr>
        <tr>
          <th>ASCII</th>
          <th>EBCDIC</th>
        </tr>
        <tr><td align="center"><code>437/037</code></td>
            <td>437 PC United States</td>
            <td>037 United States/Canada</td>
        <tr><td align="center"><code>437/500</code></td>
            <td>437 PC United States</td>
            <td>500 International</td>
        </tr>
        <tr><td align="center"><code>437/1047</code></td>
            <td>437 PC United States</td>
            <td>1047 Open Systems Latin 1</td>
        </tr>
        <tr><td align="center"><code>819/037</code></td>
            <td>819 ISO-8859-1</td>
            <td>037 United States/Canada</td>
        </tr>
        <tr><td align="center"><code>819/037v2</code></td>
            <td>819 ISO-8859-1</td>
            <td>037 United States/Canada version 2</td>
        </tr>
        <tr><td align="center"><code>819/273</code></td>
            <td>819 ISO-8859-1</td>
            <td>273 Austria/Germany</td>
        </tr>
        <tr><td align="center"><code>819/277</code></td>
            <td>819 ISO-8859-1</td>
            <td>277 Denmark/Norway</td>
        </tr>
        <tr><td align="center"><code>819/278</code></td>
            <td>819 ISO-8859-1</td>
            <td>278 Finland/Sweden</td>
        </tr>
        <tr><td align="center"><code>819/280</code></td>
            <td>819 ISO-8859-1</td>
            <td>280 Italy</td>
        </tr>
        <tr><td align="center"><code>819/284</code></td>
            <td>819 ISO-8859-1</td>
            <td>284 Spain</td>
        </tr>
        <tr><td align="center"><code>819/285</code></td>
            <td>819 ISO-8859-1</td>
            <td>285 United Kingdom</td>
        </tr>
        <tr><td align="center"><code>819/297</code></td>
            <td>819 ISO-8859-1</td>
            <td>297 France</td>
        </tr>
        <tr><td align="center"><code>819/500</code></td>
            <td>819 ISO-8859-1</td>
            <td>500 International</td>
        </tr>
        <tr><td align="center"><code>819/1047</code></td>
            <td>819 ISO-8859-1</td>
            <td>1047 Open Systems Latin 1</td>
        </tr>
        <tr><td align="center"><code>850/273</code></td>
            <td>850 PC Latin 1</td>
            <td>273 Austria/Germany</td>
        </tr>
        <tr><td align="center"><code>850/1047</code></td>
            <td>850 PC Latin 1</td>
            <td>1047 Open Systems Latin 1</td>
        </tr>
        <tr><td align="center"><code>1252/037</code></td>
            <td>1252 Windows Latin 1</td>
            <td>037 United States/Canada</td>
        </tr>
        <tr><td align="center"><code>1252/037v2</code></td>
            <td>1252 Windows Latin 1</td>
            <td>037 United States/Canada version 2</td>
        </tr>
        <tr><td align="center"><code>1252/1047</code></td>
            <td>1252 Windows Latin 1</td>
            <td>1047 Open Systems Latin 1</td>
        </tr>
        <tr><td align="center"><code>1252/1140</code></td>
            <td>1252 Windows Latin 1</td>
            <td>1140 United States/Canada with Euro</td>
        </tr>
    </table>
    <p>

    Iconv single byte codepages may also be used (e.g. <code>UTF8/EBCDIC-CP-NL</code>)
    if the host environment supports iconv.
    <p>

    If no codepage is specified then the environment variable HERCULES_CP
    will be inspected. The default codepage mapping is <code>default</code>.

    <p>

<a name="CNSLPORT"></a>
<dt><code>CNSLPORT &nbsp; <i>nnnn</i></code>
<dd><p>
    specifies the port number (in decimal) to which tn3270 and
    telnet clients will connect.
    <p>

    The CNSLPORT statement may also have the form of host:port, where
    the telnet console server will bind to the specified address.
    <p>

<a name="CONKPALV"></a>
<dt><code>CONKPALV &nbsp; <i>(idle,intv,count)</i></code>
<dd><p>
    specifies the tn3270 console and telnet clients keep-alive option
    values that control automatic detection of disconnected tn3270/telnet
    client sessions.
    <p>
    <code><i>idle</i></code> &nbsp; specifies the number of seconds
    of inactivity until the first keep-alive probe is
    sent (idle time until first probe, or probe frequency).
    <br><code><i>intv</i></code> &nbsp;
    specifies the interval in seconds between when successive
    keep-alive packets are sent if no acknowledgement is received from
    the previous one (i.e. the timeout value of the probes themselves).
    <br><code><i>count</i></code> &nbsp; specifies the number of unacknowledged
    keep-alive packets sent before the connection is considered to have
    failed.
    <p>
    The default values are 3, 1, and 10. That is, send the initial probe
    3 seconds after the line goes idle and then wait no more than one
    second for it to be responded to. Do this 10 times before considering
    the client as having died.
    <p>
    <i><b>Note:</b></i>
    This is a built-in feature of TCP/IP and allows detection of
    unresponsive TCP/IP <i>connections</i> and not idle clients.
    That is to say, your connection will <i>not</i> be terminated
    after 3 seconds of idle time. Your 3270 session can remain idle for
    many minutes without any data being transmitted.
    If the TCP/IP <i>stack</i> at the other end of the connection --
    not your 3270 client itself -- fails to respond to the
    internal keep-alive probe packets, then it means that the
    TCP/IP stack is down or there has been a break in the
    connection. Thus, even if your 3270 client
    is completely idle, your system's TCP/IP stack itself should still respond
    to the keep-alive probes sent by the TCP/IP stack at the Hercules end
    of the link. If it doesn't, then TCP/IP will terminate the tn3270/telnet
    session which will cause Hercules to disconnect the terminal.
    <p>
    The three values can also be modified on-demand via the <code>conkpalv</code>
    panel command, which has the exact same syntax. Note that the
    syntax is very unforgiving: no spaces are allowed anywhere within the
    parentheses and each value must be separated from the other with a
    single comma.
    <p>
    <i><b>Note:</b></i>
    On Windows platforms the <code><i>count</i></code> value is ignored and
    cannot be changed from its default value of 10.
    Also, some older platforms may ignore all of the values specified
    and use platform default values instead.
    <p>

<a name="CPUMODEL"></a>
<dt><code>CPUMODEL &nbsp; <em>xxxx</em></code>
<dd><p>
    specifies the 4 hexadecimal digit CPU machine type number
    stored by the STIDP instruction
    <i>Note: Prior to ESA/390 this was known as the CPU model number</i>
    <p>

<a name="CPUPRIO"></a>
<dt><code>CPUPRIO &nbsp; <em>nn</em></code>
<dd><p>
    specifies the priority of the CPU thread.  Default is a nice value
    of 15, which means a low priority such that I/O can be scheduled and
    completed in favour of CPU cycles being burned. On Multi-CPU
    systems, a real CPU can be "dedicated" to Hercules, by giving the
    CPU thread a very high dispatching priority (-20).
    See <a href="#thread_priorities">"Thread Priorities"</a>
    below for more information.
    <p>

    <i><b>Caution:</b> &nbsp; CPUPRIO should not have a higher dispatching
    priority than the TOD Clock and timer thread.</i>
    </ol>
    <p>

<a name="CPUSERIAL"></a>
<dt><code>CPUSERIAL &nbsp; <em>xxxxxx</em></code>
<dd><p>
    specifies the 6 hexadecimal digit CPU serial
    number stored by the STIDP instruction
    <p>

<a name="CPUVERID"></a>
<dt><code>CPUVERID &nbsp; <em>xx</em></code>
<dd><p>
    specifies the 2 hexadecimal digit CPU version code
    stored by the STIDP instruction.
    The default version code is FD when ARCHMODE S/370 or ARCHMODE ESA/390
    is specified.  For the z/Architecture mode, the version code is always
    stored as 00 and the value specified here is ignored.
    <p>

<a name="DEFSYM"></a>
<dt><code>DEFSYM &nbsp; <em>symbol</em> <em>value</em></code>
<dd><p>
    Defines symbol <em>symbol</em> as to contain value <em>value</em>. The
    symbol can then be the object of a substitution later in the configuration
    file or for panel commands. If <em>value</em> contains blanks or spaces, then
    it should be enclosed in double quotation marks (&quot;). See
    <a href="#subs">substitutions</a> for a more in-depth discussion
    on this feature.
    <p>
    Substitution is available even in configuration statements,
    meaning it is possible to perform substitution in the <em>DEFSYM</em> statement itself.
    However, symbols are always defined as the last step in the process, so attempting
    to self define a symbol will result in an empty string:
    <code><pre>
    DEFSYM FOO $(FOO)</pre></code>
    Will set symbol FOO to &quot;&quot;
    <p>

<a name="DEVPRIO"></a>
<dt><code>DEVPRIO &nbsp; <em>nn</em></code>
<dd><p>
    specifies the priority of the device threads.  The default value is 8.
    See <a href="#thread_priorities">"Thread Priorities"</a>
    below for more information.
    <p>

    <i><b>Caution:</b> &nbsp; DEVPRIO should not have a higher dispatching
    priority than the TOD Clock and timer thread.</i>
    <p>

<a name="DEVTMAX"></a>
<dt><code>DEVTMAX &nbsp; -1 &#124; 0 &#124; <em>nnn</em></code>
<dd><p>
    specifies the maximum number of device threads allowed.
    <p>Specify <code>-1</code> to cause 'one time only' temporary threads to be
    created to service each I/O request to a device. Once the I/O request is
    complete, the thread exits. Subsequent I/O to the same device will cause
    another worker thread to be created again.
    <p>Specify <code>0</code> to cause an unlimited number of 'semi-permanent'
    threads to be created on an 'as-needed' basis. With this option, a thread
    is created to service an I/O request for a device if one doesn't already
    exist, but once the I/O is complete, the thread enters an idle state waiting
    for new work. If a new I/O request for the device arrives before the timeout
    period expires, the existing thread will be reused. The timeout value is
    currently hard coded at 5 minutes. Note that this option can cause one thread
    (or possibly more) to be created for each device defined in your
    configuration. Specifying <code>0</code> means there is no limit to the
    number of threads that can be created.
    <p>Specify a value from <code>1</code> to <code><em>nnn</em></code> &nbsp;to set an upper limit
    to the number of threads that can be created to service any I/O request to
    any device. Like the <code>0</code> option, each thread, once done servicing
    an I/O request, enters an idle state. If a new request arrives before the
    timeout period expires, the thread is reused. If all threads are busy when
    a new I/O request arrives however, a new thread is created <i>only</i> if the
    specified maximum has not yet been reached. If the specified maximum number
    of threads has already been reached, then the I/O request is placed in a queue
    and will be serviced by the first available thread (i.e. by whichever thread
    becomes idle first). This option was created to address a threading issue
    (possibly related to the cygwin Pthreads implementation) on Windows systems.
    <p>The default for Windows is <code>8</code>. The default for all other systems
    is <code>0</code>.
    <p>

<a name="DIAG8CMD"></a>
<dt><code>DIAG8CMD &nbsp; DISABLE &#124; ENABLE [ECHO &#124; NOECHO]</code>
<dd><p>
    When <code>ENABLE</code> is specified, commands issued through the Diagnose 8 interface
    will be executed by Hercules as Hercules commands.  When set to <code>DISABLE</code>,
    commands issued through the Diagnose 8 interface will generate a Specification
    Exception program interrupt on the issuing CPU.
    <p>An optional second argument can be given to request whether the commands
    issued using the Diagnose 8 interface will be traced at the console. This may be
    useful for programs that routinely issue panel commands using the Diagnose 8 interface.
    When <code>ECHO</code> is specified, a message is issued as the panel is about to issue
    the command, the command is redisplayed as if it was entered through the panel input
    line, and a final message is issued to indicate the command completed. When <code>NOECHO</code>
    is specified, no such messages are displayed and the command completes silently.
    <p>The value of <code>ECHO</code> or <code>NOECHO</code> has no effect on
    command output being placed into a response buffer if the Diagnose 8 interface
    requested one.
    <p>The default is <code>DISABLE NOECHO</code>
    <p>

    <i><b>Caution:</b> &nbsp; Enabling this feature may have security consequences.</i>
    <p>

    When this feature is enabled it is possible for guest operating systems
    running under Hercules to issue commands directly to the host operating system
    by means of the Hercules <code>sh</code> (shell) command. This ability may be
    disabled via the <a href="#SHCMDOPT">SHCMDOPT</a> statement.
    <p>

<a name="ECPSVM"></a>
<dt><code>ECPSVM &nbsp; YES &#124; NO &#124; LEVEL <em>nn</em></code>
<dd><p>
    specifies whether ECPS:VM (Extended Control Program Support : Virtual Machine)
    support is to be enabled. If <code>YES</code> is specified, then the support
    level reported to the operating system is <code>20</code>. The purpose of
    ECPS:VM is to provide to the VM/370 Operating system a set of shortcut
    facilities to perform hypervisor functions (CP Assists) and virtual
    machine simulation (VM Assists). Although this feature does not affect
    VM Operating system products operating in XA, ESA or z/Architecture mode,
    it will affect VM/370 and VM/SP products running under VM/XA, VM/ESA or z/VM.
    Running VM/370 and VM/SP products under VM/XA, VM/ESA or z/VM should be
    done with ECPS:VM disabled. ECPS:VM should not be enabled in an AP or MP
    environment. ECPS:VM has no effect on non-VM operating systems. It is
    however recommended to disable ECPS:VM when running native non-VM operating
    systems. If a specific LEVEL is specified, this value will be reported
    to the operating system when it issues a Store ECPS:VM level, but it
    doesn't otherwise alter the ECPS:VM facility operations. This is a partial
    implementation.
    <p>

<a name="ENGINES"></a>
<dt><code>ENGINES &nbsp; [<em>nn</em>*]CP&#124;IL&#124;AP&#124;IP[,...]</code>
<dd><p>
    specifies the type of engine for each installed processor.
    The default engine type is CP.
    <p>
    <em>nn</em>* is an optional repeat count.
    Spaces are not permitted.
    <p>
    Examples:
    <p>
    <code>ENGINES CP,CP,AP,IP</code>
    <br>specifies that processor engines 0 and 1 are of type CP, engine 2 is
    type AP, and engine 3 is type IP.
    <p>
    <code>ENGINES 4*CP,2*AP,2*IP</code>
    <br>specifies that the first four processor engines (engines 0-3) are of
    type CP, the next two (engines 4-5) are of type AP, and the next two
    (engines 6-7) are of type IP.
    <p>
    The number of installed processor engines is determined by the
    <a href="#MAXCPU">MAXCPU</a> statement.
    If the ENGINES statement specifies more than MAXCPU engines, the excess
    engines are ignored. If fewer than MAXCPU engines are specified, the
    remaining engines are set to type CP.
    <p>

<a name="HERCPRIO"></a>
<dt><code>HERCPRIO &nbsp; <em>nn</em></code>
<dd><p>
    specifies the process priority for Hercules.  The default is 0.
    See <a href="#process_priorities">"Process Priorities"</a>
    below for more information.
    <p>

<a name="HTTPPORT"></a>
<dt><code>HTTPPORT &nbsp; <em>nnnn</em> [AUTH &#124; NOAUTH] [ <em>userid password</em> ]</code>
<dd><p>
    specifies the port number (in decimal) on which the HTTP server
    will listen. The port number must either be 80
    or within the range 1024 - 65535 inclusive. If no HTTPPORT statement is
    present or an invalid port number is specified, then the HTTP server thread
    will not be activated.<br>
    <tt>AUTH</tt> indictates that a userid and password are required to access
    the HTTP server, whereas <tt>NOAUTH</tt> indicates that a userid and password
    are not required. The userid and password may be any valid string.
    <p>

<a name="HTTPROOT"></a>
<dt><code>HTTPROOT &nbsp; <em>directory</em></code>
<dd><p>
    specifies the root directory where the HTTP server's files reside.
    If not specified, the default value for Win32 builds of Hercules is the
    directory where the Hercules executable itself is executing out of, and for
    non-Win32 builds it is the directory specified as the default package
    installation directory when the Hercules executable was built (which can
    vary depending on how the Hercules package was built, but is usually
    <tt>/usr/local/share/hercules/</tt>).
    <p>

<a name="IGNORE"></a>
<dt><code>IGNORE &nbsp; INCLUDE_ERRORS</code>
<dd><p>
    Indicates that errors caused by subsequent
    <code><a href="#INCLUDE">INCLUDE</a></code> statements
    for files which do not exist should instead be ignored rather
    than causing startup to be aborted (as would otherwise normally
    occur).
    <p>

<a name="INCLUDE"></a>
<dt><code>INCLUDE &nbsp; <em>filepath</em></code>
<dd><p>
    An <code>INCLUDE</code> statement tells Hercules configuration file
    processing to treat the contents of the file specified by <em>filepath</em>
    as if its contents had appeared in the configuration file at the point
    where the <code>INCLUDE</code> statement appears.
    <p>
    Note that the included file may itself contain yet another
    <code>INCLUDE</code> statement as long as the maximum nesting depth
    (current 8) is not exceeded.
    <p>

<a name="IODELAY"></a>
<dt><code>IODELAY &nbsp; <em>usec</em> [NOWARN]</code>
<dd><p>
    specifies the amount of time (in microseconds) to wait after
    an I/O interrupt is ready to be set pending.  This value can also be
    set using the Hercules console.  The purpose of this parameter is to
    bypass a bug in the <b>Linux/390</b> and <b>zLinux</b> <code>dasd.c</code>
    device driver. The problem is more apt to happen under Hercules than
    on a real machine because we may present an I/O interrupt sooner than a
    real machine.
    <p>
    If the IODELAY value is non-zero a warning message (HHCCF037W) will be
    issued unless <code>NOWARN</code> is specified.
    <p>
    NOTE : <a href="#OSTAILOR"><code>OSTAILOR LINUX</code></a> no longer sets
    IODELAY to 800 since the problem described above is no longer present in
    recent versions of the Linux kernel.
    <p>

<a name="LDMOD"></a>
<dt><code>LDMOD &nbsp; <em>module list</em></code>
<dd><p>
    specifies additional modules that are to be loaded by the Hercules dynamic loader.
    The default search order is with the hercules directory in the default DLL search
    path. Most systems also support absolute filenames (ie names starting with '/'
    or '.') in which case the default search path is not taken.
    <p>
    Multiple LDMOD statements may be used.
    <p>

<a name="LEGACYSENSEID"></a>
<dt><code>LEGACYSENSEID &nbsp; OFF &#124; DISABLE &#124; ON &#124; ENABLE</code>
<dd><p>
    specifies whether the SENSE ID CCW (X'E4') will be honored for
    the devices that originally didn't support that feature. This
    includes (but may not be limited to) 3410 and 3420 tape drives,
    2311 and 2314 direct access storage devices,
    and 2703 communication controllers.
    <p>

    Specify <code>ON</code> or <code>ENABLE</code> if your guest
    operating system needs the Sense ID support to dynamically
    detect those devices. Note that most current operating systems
    will not detect those devices even though Sense ID is enabled
    because those devices never supported the Sense ID in the first
    place. So this mainly applies to custom built or modified versions
    of guest operating systems that are aware of this specific Hercules
    capability.
    <p>

    Because those legacy devices didn't originally support this command,
    and for compatibility reasons, the default is <code>OFF</code>
    or <code>DISABLE</code>.
    <p>

<a name="LOADPARM"></a>
<dt><code>LOADPARM &nbsp; <em>xxxxxxxx</em></code>
<dd><p>
    specifies the eight-character IPL parameter which is used
    by some operating systems to select system parameters.
    <p>

<a name="LOGOPT"></a>
<dt><code>LOGOPT &nbsp; TIMESTAMP &#124; NOTIMESTAMP</code>
<dd><p>
    sets Hercules log options. TIMESTAMP causes messages to the log
    to be time stamped.  NOTIMESTAMP prevents time stamping of log
    messages.    TIMESTAMP and NOTIMESTAMP may be abbreviated as
    TIME and NOTIME respectively.  The current resolution of the
    stamp is one second.
    <p>
    The default is TIMESTAMP.
    <p>

<a name="LPARNAME"></a>
<dt><code>LPARNAME &nbsp; <em>name</em></code>
<dd><p>
    specifies the LPAR name returned by DIAG X'204'.  The default is
    <code>HERCULES</code>.
    <p>

<a name="LPARNUM"></a>
<dt><code>LPARNUM &nbsp; <em>xx</em></code>
<dd><p>
    specifies the one- or two-digit hexadecimal LPAR identification number
    stored by the STIDP instruction.
    If a one-digit number is specified then STIDP stores a format-0 CPU ID.
    If a two-digit number is specified then STIDP stores a format-1 CPU ID.
    If LPARNUM is not specified, then STIDP stores a basic-mode CPU ID.
    <p>

<a name="MAINSIZE"></a>
<dt><code>MAINSIZE &nbsp; <em>nnnn</em></code>
<dd><p>
    specifies the main storage size in megabytes, where
    <code><em>nnnn</em></code>&nbsp; is a decimal number. The lower limit is 2.
    The actual upper limit is determined by your host system's architecture
    and operating system, and (on some systems) the amount of physical
    memory and paging space you have available.
    <p>

<a name="MANUFACTURER"></a>
<dt><code>MANUFACTURER &nbsp; <em>name</em></code>
<dd><p>
    specifies the MANUFACTURER name returned the STSI instruction.  The default is
    <code>HRC</code>.
    <p>

<a name="MAXCPU"></a>
<dt><code>MAXCPU &nbsp; <em>nn</em></code>
<dd><p>
    specifies the number of installed processor engines.
    The <a href="#NUMCPU">NUMCPU</a> statement specifies the number of
    engines which will be configured online at startup time.
    All processors are CP engines unless otherwise specified by the
    <a href="#ENGINES">ENGINES</a> statement.
    <p>
    The value of MAXCPU cannot exceed the value of <code>MAX_CPU_ENGINES</code>.
    If MAXCPU is not specified then the default value is the value of
    <code>MAX_CPU_ENGINES</code>.
    <p>
    <code>MAX_CPU_ENGINES</code> is a compile-time variable which sets
    an upper limit on the value of MAXCPU.
    The value of <code>MAX_CPU_ENGINES</code> is displayed in the
    Build information message on the Hercules control panel at startup time.
    To change the value of <code>MAX_CPU_ENGINES</code> you must rebuild
    Hercules.
    For Unix builds, specify
    <tt>./configure --enable-multi-cpu=<em>nn</em></tt>
    before performing make.
    For Windows builds, specify
    <tt>SET MAX_CPU_ENGINES=<em>nn</em></tt>
    before performing nmake.
    <p>
    <code>MAX_CPU_ENGINES</code> may be up to 128 on 64-bit Linux platforms.
    On Windows, and on all 32-bit platforms, the maximum value is 64.
    For performance reasons,
    values above 32 are not recommended for 32-bit platforms.
    If <code>MAX_CPU_ENGINES</code> is set to 1 then multiprocessing is disabled.
    See also <a href="#NUMCPU">NUMCPU</a> for a discussion of the performance
    implications of <code>MAX_CPU_ENGINES</code>.
    <p>

<a name="MODEL"></a>
<dt><code>MODEL &nbsp; <em>hardware_model</em>
    [ <em>capacity_model</em> ]
    [ <em>perm_capacity_model</em> ]
    [ <em>temp_capacity_model</em> ]
    </code>
<dd><p>
    specifies the MODEL names returned by the STSI instruction.
    <p>
    If two operands are supplied, the first is the hardware model name (CPC
    ND model) and the second is the capacity model name (CPC SI model).
    If only one operand is supplied, it is used as both the hardware model
    name and the capacity model name.
    The optional third and fourth operands specify the permanent capacity
    model name and the temporary capacity model name respectively.
    <p>
    The default is <code>EMULATOR</code>.
    <p>

<a name="MODPATH"></a>
<dt><code>MODPATH &nbsp; <em>path</em></code>
<dd><p>
    specifies the path where dynamic modules are loaded from. When a modpath
    statement is specified, the path on the modpath statement is searched before
    the default path is searched. When a relative path is specified is interpreted
    as a relative path within the default search path, if an absolute path is
    specified is interpreted as such.
    <p>
    The default MODPATH is hercules, which means modules are loaded from the
    directory hercules within the default LD_LIBRARY_PATH.
    <p>

<a name="MOUNTED_TAPE_REINIT"></a>
<dt><code>MOUNTED_TAPE_REINIT &nbsp; DISALLOW &#124; ALLOW</code>
<dd><p>
    specifies whether reinitialization of tape drive devices (via the
    <code>devinit</code> command, in order to mount a new tape) should
    be allowed if there is already a tape mounted on the drive.
    <p>
    Specifying <code>ALLOW</code> (the default) indicates new tapes may
    be mounted (via <code>'devinit <i>nnnn</i> <i>new-tape-filename</i>'</code>)
    irrespective of whether or not there is already a tape mounted on the drive.
    <p>
    Specifying <code>DISALLOW</code> prevents new tapes from being mounted
    if one is already mounted. When <code>DISALLOW</code> is specified
    and a tape is already mounted on the drive, it must first be unmounted
    (via the command <code>'devinit <i>nnnn</i> *'</code>) before
    the new tape can be mounted. Otherwise the devinit attempt to mount
    the new tape is rejected.
    <p>
    This option is meant as a safety mechanism to protect against
    accidentally dismounting a tape from the wrong drive as a result of
    a simple typo (thereby cancelling a potentially important tape job)
    and was added by user request.
    <p>
    Also note that for SCSI tape drives the <code>'devinit <i>nnnn</i> *'</code>
    command has no effect as the tape must be unmounted manually (since it is
    a real physical device and not one emulated via a disk file like .AWS tapes).
    <p>

<a name="NUMCPU"></a>
<dt><code>NUMCPU &nbsp; <em>nn</em></code>
<dd><p>
    specifies the number of emulated processor engines
    which will be configured online at startup time.
    NUMCPU cannot exceed the value of <a href="#MAXCPU">MAXCPU</a>.
    If NUMCPU is less than <a href="#MAXCPU">MAXCPU</a>
    then the remaining engines can be configured online later.

    <p>
    Multiprocessor emulation works best
    if your host system actually has more than one physical CPU, but you can
    still emulate multiple CPUs nervertheless  even on a uniprocessor system
    (and you might even achieve a small performance benefit when you do).
    There is little point, however, in specifying <tt>NUMCPU</tt> greater
    than 1 unless your guest operating system (running under Hercules) is
    actually able to support multiple CPUs (and if you do not actually need
    multiprocessor emulation, then setting <tt>MAX_CPU_ENGINES</tt> to 1 at
    compile time might even produce a slight performance advantage too).
    <p>

<a name="NUMVEC"></a>
<dt><code>NUMVEC &nbsp; <em>nn</em></code>
<dd><p>
    specifies the number of emulated vector facilities. Default is one per
    CPU. Only available by default in ESA/390 mode.
    <p>

<a name="OSTAILOR"></a>
<dt><code>OSTAILOR &nbsp; OS/390 &#124; z/OS &#124;
    VM &#124; VSE &#124; LINUX &#124; QUIET &#124; NULL</code>
<dd><p>
    specifies the intended operating system.  The effect of this
    parameter is to reduce control panel message traffic by
    selectively suppressing trace messages for program checks
    which are considered normal in the specified environment.
    <code>QUIET</code> discards all exception messages.
    <code>NULL</code> allows all exception messages to be logged.
    <p>
    Optionally prefix any value except <code>QUIET</code> or
    <code>NULL</code> with '+' to cause the suppressions for that
    environment to be combined (added) to those already specified,
    or with '-' to remove such suppressions (i.e. to allow them).
    <p>
    If the <code>OSTAILOR</code>
    statement is omitted, exception messages for program checks
    10, 11, 16, and 1C are suppressed.
    <p>
    Use the <code>ostailor</code> or <code>pgmtrace</code> panel
    commands to display or alter the current settings.
    <p>

<a name="PANRATE"></a>
<dt><code>PANRATE &nbsp; SLOW &#124; FAST &#124; <em>nn</em></code>
<dd><p>
    specifies the panel refresh rate, in milliseconds between refreshes. SLOW
    is the same as 500, and FAST is the same as 50. A value less than the
    Linux system clock tick interval (10 on Intel, 1 on Alpha), or more than
    5000, will be rejected. SLOW is the default.
    <p>

<a name="PANTITLE"></a>
<dt><code>PANTITLE &nbsp; <em>"title-string"</em></code>
<dd><p>
    specifies an optional console window title-bar string to be used
    in place of the default supplied by the windowing system. If the value
    contains any blanks it must be enclosed within double-quotes.
    <p>
    This option allows one to distinguish between different Hercules
    sessions when running more than one instance of Hercules on the same
    machine.
    <p>
    This option takes effect only when the Hercules console is displayed
    on an xterm terminal (commonly used on Unix systems), or
    in a Windows command prompt window.
    Note that this option has no effect when Hercules is run under control
    of the Hercules GUI since Hercules's console window is hidden in favor
    of using the GUI's window instead.
    <p>

<a name="PGMPRDOS"></a>
<dt><code>PGMPRDOS &nbsp; RESTRICTED &#124; LICENSED</code>
<dd><p>
    specifies whether or not Hercules will run licensed program product ESA
    or z/Architecture operating systems. If <code>RESTRICTED</code> is
    specified, Hercules will stop all CPUs when a licensed program product
    operating system is detected.  Specify
    <code>LICENSED</code> to allow these operating systems to run normally.
    This parameter has no effect on Linux/390, Linux for z/Series, or any
    370-mode OS.
    <p>

    <p class="warning">
    <b>NOTE: &nbsp;It is <u>YOUR</u> responsibility to comply with
    the terms of the license for the operating system you intend to run on
    Hercules. If you specify LICENSED and run a licensed operating system in
    violation of that license, then don't come after the Hercules developers
    when the vendor sends his lawyers after you.</b>
    <p>

    <code>RESTRICTED</code> is the default. Specifying
    <code>LICENSED</code> will produce a message when a licensed operating
    system is detected to remind you of your responsibility to comply with
    software license terms.
    <p>

<a name="PLANT"></a>
<dt><code>PLANT &nbsp; <em>name</em></code>
<dd><p>
    specifies the PLANT name returned by the STSI instruction.  The default is
    <code>ZZ</code>.
    <p>

<a name="SHCMDOPT"></a>
<dt><code>SHCMDOPT &nbsp; DISABLE &#124; NODIAG8</code>
<dd><p>
    When set to <code>DISABLE</code>, <code>sh</code> (shell) commands are globally disabled, and will result
    in an error if entered either directly via the Hercules hardware console or
    programmatically via the <a href="#DIAG8CMD">DIAG8CMD</a> interface.
    <p>
    When set to <code>NODIAG8</code> only the programmatic execution of shell commands via the
    the Diagnose 8 interface is disabled, but <code>sh</code> (shell) commands entered directly
    via the Hercules hardware console will still work.
    <p>
    <b>NOTE:</b> &nbsp;<i>"entered directly via the Hercules hardware console"</i>
    also pertains to both commands entered via the
    <a href="#HTTPROOT">HTTP server facility</a>
    as well as commands entered via
    <a href="hercinst.html#RCFILE">.rc "run command"</a> scripts.
    <p>

<a name="SHRDPORT"></a>
<dt><code>SHRDPORT &nbsp; <em>nnnn</em></code>
<dd><p>
    specifies the port number (in decimal) on which the <a href="shared.html">Shared Device server</a>
    will listen.  Specifying SHRDPORT will allow other Hercules instances
    to access devices on this instance.  (Currently only DASD devices may
    be shared).  By default, the other Hercules instances (clients) will
    use port 3990.  If you specify a different port number, then you will
    have to specify this port number on the device statement for the other
    Hercules clients.
    If no SHRDPORT statement is present then the Shared Device server thread
    will not be activated.<br>
    <p>

<a name="SYSEPOCH"></a>
<dt><code>SYSEPOCH &nbsp; <em>yyyy</em> [&plusmn;<em>years</em>]</code>
<dd><p>
    specifies the base date for the TOD clock.  Use the default value
    (<code>1900</code>) for all systems except OS/360. Use <code>1960</code>
    for OS/360.  Values other than these were formerly used to offset the
    TOD clock by a number of years to move the date before the year 2000 for
    non-Y2K-compliant operating systems. This use is deprecated, and support
    will be removed in a future release; at that time, only values of
    <code>1900</code> or <code>1960</code> will be accepted. Other values
    will produce a warning message with the equivalent values to specify in
    the SYSEPOCH statement.<br>
    An optional year offset may be specified, and will be treated as though
    it had been specified on a <a href="#YROFFSET"><code>YROFFSET</code></a>
    statement.
    <p>

<a name="TIMERINT"></a>
<dt><code>TIMERINT &nbsp; DEFAULT &#124; <em>nnnn</em></code>
<dd><p>
    specifies the internal timers update interval, in microseconds.  This
    parameter specifies how frequently Hercules's internal timers-update thread
    updates the TOD Clock, CPU Timer, and other architectural related
    clock/timer values.  The default interval is 50 microseconds, which
    strikes a reasonable balance between clock accuracy and overall host
    performance. The minimum allowed value is 1 microsecond and the maximum
    is 1000000 microseconds (i.e. one second).
    <p>
    <i><b>Caution:</b> &nbsp; While a lower TIMERINT value may help
    increase the accuracy of your guest's TOD Clock and CPU Timer values,
    it could also have a severe negative impact on the overall performance
    of your host operating system. This is especially true when a low TIMERINT
    value is coupled with a high <a href="#HERCPRIO">HERCPRIO</a> and
    <a href="#TODPRIO">TODPRIO</a> priority setting. Exercise extreme caution
    when choosing your desired TIMERINT in relationship to your chosen
    <a href="#HERCPRIO">HERCPRIO</a> and <a href="#TODPRIO">TODPRIO</a>
    priority settings.
    </i>
    <p>

<a name="TODDRAG"></a>
<dt><code>TODDRAG &nbsp; <em>nn</em></code>
<dd><p>
    specifies the TOD clock drag factor.  This parameter can be used
    to slow down or speed up the TOD clock by a factor of <em>nn</em>.
    A significant slowdown can improve the performance of some operating
    systems which consume significant amounts of CPU time processing
    timer interrupts.
    A drag factor of 2.0 slows down the clock by 50%. A drag factor of
    0.5 doubles the speed of the clock. A drag factor of 1.01 slows
    down the clock by 1%, and 0.99 speeds up the clock by 1%.
    <p>

<a name="TODPRIO"></a>
<dt><code>TODPRIO &nbsp; <em>nn</em></code>
<dd><p>
    specifies the priority of the TOD Clock and timer thread.  The
    default value is -20.  See
    <a href="#thread_priorities">"Thread Priorities"</a>
    below for more information.
    <p>

    <i><b>Caution:</b> &nbsp; TODPRIO should be given a dispatching
    priority equal to or higher than any other thread within Hercules.</i>
    <p>

<a name="TRACEOPT"></a>
<dt><code>TRACEOPT &nbsp; TRADITIONAL &#124; REGSFIRST &#124; NOREGS</code>
<dd><p>
    sets the Hercules instruction tracing display option.
    <code>TRADITIONAL</code> (the default), displays the registers following
    the instruction about to be executed such that pressing enter (to execute
    the displayed instruction) then shows the next instruction to be executed
    followed by the updated registers display.
    <p>
    <code>REGSFIRST</code> displays the current register contents followed by
    the instruction about to be executed such that pressing enter (to execute
    the displayed instruction) then shows the updated registers followed by
    the next instruction to be executed.
    <p>
    <code>NOREGS</code> suppresses the registers display altogether
    and shows just the instruction to be executed.
    <p>
    In addition to the <code>TRACEOPT</code> configuration file statement
    there is also a corresponding <code>traceopt</code> panel command to
    dynamically display and/or update the current setting at any time.
    <p>

<a name="TZOFFSET"></a>
<dt><code>TZOFFSET &nbsp; &plusmn;<em>hhmm</em></code>
<dd><p>
    specifies the hours and minutes by which the TOD clock will
    be offset from the current system time.  For GMT, use the
    default value (+0000).  For timezones west of Greenwich, specify
    a negative value (example: <code>-0500</code> for US Eastern Standard
    Time, <code>-0800</code> for US Pacific Standard Time).
    For timezones east of Greenwich, specify a positive value
    (example: <code>+0100</code> for Central European Time,
    <code>+0930</code> for South Australian Time).
    <p>

<a name="XPNDSIZE"></a>
<dt><code>XPNDSIZE &nbsp; <em>nnnn</em></code>
<dd><p>
    specifies the expanded storage size in megabytes, where
    <code><em>nnnn</em></code> is a decimal number. The lower limit is 0.
    The actual upper limit is determined by your host system's architecture
    and operating system, and (on some systems) the amount of physical
    memory and paging space you have available.
    <p>

<a name="YROFFSET"></a>
<dt><code>YROFFSET &nbsp; &plusmn;<em>years</em></code>
<dd><p>
    specifies a number of years to offset the TOD clock from the actual
    date. Positive numbers will move the clock forward in time, while
    negative numbers will move it backward. A common value for
    non-Y2K-compliant operating systems is <code>YROFFSET -28</code>, which
    has the advantage that the day of the week and the presence or absence
    of February 29 is the same as the current year. This value may not be
    specified as greater than &plusmn;142 years, the total range of the TOD
    clock. Specifying a value that causes the computed TOD clock year to be
    earlier than the value of <a href="#SYSEPOCH"><code>SYSEPOCH</code></a>
    or more than 142 years later than that value will produce unexpected
    results.
    <p>

</dl>

<p>
    A comment preceded by a &#035; sign may be appended to any system
    parameter statement.
<p>

<hr><!-- ---------------------------------------------------------------------------- -->

<a name="subs"></a>
<h3>Symbol substitutions</h3></a>
<p>
    In configuration and device statements, as well as in panel commands and OAT files,
    symbols may be substituted for text.

<h4>Syntax</h4>
<p>
    To substitute symbol <em>symbol</em> with its contents, the symbol should be enclosed
    within parenthesis and preceded by a $ sign. For example, if symbol <em>FOO</em> contains
    the text string <em>&quot;BAR&quot;</em> then <em>$(FOO)</em> will be substituted with the
    string <em>&quot;BAR&quot</em>;. Symbol names are case sensitive.

<h5>Example</h5><code><pre>
        DEFSYM  TAPEDIR  &quot;/home/hercules/tapes&quot;

        ...

        0380  3420  $(TAPEDIR)/scratch.aws

        ...</pre></code>
<p>
    In this example, device 0380 will be a 3420 loaded with the AWS tape file in /home/hercules/tapes/scratch.aws
<h4>Special symbols</h4>
    <h5>Device group symbols</h5>
    <p>
        When multiple devices are defined with a single device definition statement, then the symbols<P>
            <TABLE BORDER=0>
                <ul compact>
                    <TR><TD><LI>&nbsp; CUU  &nbsp; </TD><TD> &nbsp; (3 digits device number, upper case hexadecimal digits)</TD></TR>
                    <TR><TD><LI>&nbsp; CCUU &nbsp; </TD><TD> &nbsp; (4 digits device number, upper case hexadecimal digits)</TD></TR>
                    <TR><TD><LI>&nbsp; cuu  &nbsp; </TD><TD> &nbsp; (3 digits device number, lower case hexadecimal digits)</TD></TR>
                    <TR><TD><LI>&nbsp; ccuu &nbsp; </TD><TD> &nbsp; (4 digits device number, lower case hexadecimal digits)</TD></TR>
                </ul>
            </TABLE>
        <p>
        are defined to contain for each device the relevant device address. For example:
        <p>
<code><pre>
    0200,0201  3340  /home/hercules/dasds/myvols.$(CUU)
</pre></code>
        <p>
        will define two 3340 packs, with device 0200 being loaded with the file myvols.200 and
        device 0201 defined with myvols.201.
    <h5>Environment variables</h5>
    <p>
        If a symbol is not explicitly defined by a DEFSYM statement and an environment
        variable by the same name exists, the string contents of that environment variable
        will be used for substitution.
    <h5>Undefined symbols</h5>
    <p>
        If a symbol is not defined by an explicit DEFSYM, is not an automatically generated symbol
        and is not an environment variable, an empty string will be substituted.
    <h4>Escaping substitution, recursion</h4>
    <p>
        To be able to specify the '$(' string without incurring substitution, an additional '$' sign
        should be used. For example, $$(FOO) will not be substituted. If substitution is required but
        the preceding text is to contain a '$' sign as the very last character, then $$$(FOO) should be
        specified. Thus, if symbol FOO contains &quot;BAR&quot;, then $$(FOO) will remain &quot;$$(FOO)&quot; while $$$(FOO)
        will become &quot;$BAR&quot;.
    <p>
        Substitution is <i>not</i> recursive (only one substitution pass is made).
    <p>
<hr><!-- ---------------------------------------------------------------------------- -->

<a name="ENHSYMINC"></a>
<h3>Enhanced symbol substitutions</h3></a>
<p>
    Enhanced symbol substitution differs from the above normal symbol substitution
    in several very important ways:
    <p>
    First, the syntax is different. Enhanced substitution symbol names are specified
    using <code>${var}</code> (dollar + brace) rather than <code>$(var)</code>
    (dollar + parenthesis).
    <p>
    Second, the enhanced syntax supports specifying a default value that is to be used
    instead whenever the name symbol is otherwise not defined. The default value is
    placed within the opening and closing braces just as the symbol name is, but
    separated from it by either a single equal sign '<code>=</code>' or a
    colon-equal-sign '<code>:=</code>'.
    <p>
    For example, specifying "<code>${DASD_PATH=dasd/}</code>" in your configuration
    file requests that the value of the "DASD_PATH" symbol or environment variable be
    substituted, or, if the variable is undefined, to use the value "<code>dasd/</code>"
    instead. If no default value is specified then an empty string is used instead.
    <p>
    Finally, enhanced symbol substitution occurs only from host defined environment
    variables and <i>not</i> from any identically named <code>DEFSYM</code> symbol
    should one exist. For example, if environment variable 'FOO' is defined with the
    value "bar", then the configuration file statement "<code>DEFSYM FOO myfoo</code>"
    followed immediately by the statement "<code>${FOO}</code>" causes the value
    "<code>bar</code>" to be substituted and <i>not</i> '<code>myfoo</code>' as might
    otherwise be believed, whereas the statement "<code>$(FOO)</code>", since it is
    a normal symbol substitution sequence <i>does</i> get replaced with "<code>myfoo</code>"
    (since that was the value defined to it via the preceding <code>DEFSYM</code>
    statement).
    <p>
    In other words each symbol substitution technique is supported completely separately
    from one another. <code>DEFSYM</code> allows one to define/undefine/use private (internally
    defined) symbols separate from the host operating system's environment variable pool,
    whereas the enhanced symbol substitution does not and instead only allows read-only
    access to the host's environment variable pool with no support for modifying an already
    defined symbol (environment variable) but a nonethless convenient means of defining
    a default value to be used should the specified host environment variable be currently
    undefined.
    <p>
    Further note that symbol names, being the names of environment variables, are subject
    to whatever case sensitivity or case insensitivity that the host operating system
    happens to enforce/allow. On Windows, environment variables are not case sensitive, whereas on other
    operating systems they may be. Thus "<code>${FOO}</code>", "<code>${foo}</code>",
    "<code>${Foo}</code>", etc, all cause the same value to be substituted on Windows,
    whereas the <code>DEFSYM</code> symbols <code>$(FOO)</code> and <code>$(foo)</code>,
    being two completely different and unique symbols, could be substituted with two
    completely different values (since <code>DEFSYM</code> <b><i>is</i></b>
    case sensitive across <i>all</i> supported platforms, <i>including</i> Windows).
    <p>
<h4>Syntax</h4>
<p>
    To substitute symbol <em>symbol</em> with the current environment variable value,
    the symbol should be enclosed within braces and preceded by a $ sign. For example,
    if an environment variable named <code>FOO</code> holds the value "BAR", then
    <code>${FOO}</code> will be substituted with the string "BAR". If the environment variable
    "FOO" is not defined then a null (empty) string is substituted instead.
    <p>
    If the string "<code>${FOO:=myfoo}</code>" is used instead, then the value "BAR" will still be
    substituted if the value "BAR" was indeed previously assigned to FOO, but will be
    substituted with the value "<code>myfoo</code>" instead if the environment variable
    FOO is currently undefined.
    <p>
    Note too that the default value is a literal
    string and no substitution is applied to it. Thus attempting to use the syntax
    "<code>${foo=${bar}}</code>" will <i>not</i> yield the expected results. It will
    <i>not</i> be substituted with the currently defined value of the "bar" environment
    variable, but rather will <i>always</i> be substituted with the literal string
    "<code>${bar</code>" followed immediately by the literal character '<code>}</code>'.
    <p>
    Symbol names (environment variable names) are not case sensitive on Windows whereas
    they might be on other host operating systems.
    <p>
<hr><!-- ---------------------------------------------------------------------------- -->

<a name="process_and_thread_priorities"></a>
<h3>Process and Thread Priorities</h3>

<p><br>

<a name="process_priorities"></a>
<h4>Process Priorities</h4>
<P>
    <B>Note:</B> Under Linux, a process is a thread and
    <a href="#thread_priorities">thread priority</a> information
    applies instead.
<P>
    For Windows, the following conversions are used for translating Unix
    process priorities to Windows process priority classes:
<P>
<BR>
<table frame="VOID" rules="NONE" cellpadding="0" cellspacing="0">
    <TR>
        <TH ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">Unix<br>Priority</TH>
        <TH ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%"><BR></TH>
        <TH ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">Windows Process<br>Priority Class</TH>
        <TH ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%"><br>Meaning</TH>
    </TR>
    <TR> <!-- ============================================================================ -->
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">&nbsp;</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">&nbsp;</TD>
    </TR>
    <TR>
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">-20 to -16</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">Real-time</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">
            Process that has the highest possible priority. The threads of the process
            preempt the threads of all other processes, including operating system processes
            performing important tasks. For example, a real-time process that executes for
            more than a very brief interval can cause disk caches not to flush or cause
            the mouse to be unresponsive.
        </TD>
    </TR>
    <TR> <!-- ============================================================================ -->
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">&nbsp;</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">&nbsp;</TD>
    </TR>
    <TR>
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">-15 to -9</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">High</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">
            Process that performs time-critical tasks that must be executed immediately.
            The threads of the process preempt the threads of normal or idle priority class
            processes. An example is the Task List, which must respond quickly when called
            by the user, regardless of the load on the operating system. Use extreme care
            when using the high-priority class, because a high-priority class application
            can use nearly all available CPU time.
        </TD>
    </TR>
    <TR> <!-- ============================================================================ -->
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">&nbsp;</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">&nbsp;</TD>
    </TR>
    <TR>
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">-8 to -1</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">Above Normal</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">
            Process that has priority above the Normal class but below the High class.
        </TD>
    </TR>
    <TR> <!-- ============================================================================ -->
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">&nbsp;</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">&nbsp;</TD>
    </TR>
    <TR>
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">0 to 7</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">Normal</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">
            Process with no special scheduling needs.
        </TD>
    </TR>
    <TR> <!-- ============================================================================ -->
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">&nbsp;</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">&nbsp;</TD>
    </TR>
    <TR>
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">8 to 14</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">Below Normal</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">
            Process that has priority above the Idle class but below the Normal class.
        </TD>
    </TR>
    <TR> <!-- ============================================================================ -->
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">&nbsp;</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">&nbsp;</TD>
    </TR>
    <TR>
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">15 to 20</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">Idle</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">
            Process whose threads run only when the system is idle. The threads of the
            process are preempted by the threads of any process running in a higher priority
            class. An example is a screen saver. The idle-priority class is inherited by
            child processes.
        </TD>
    </TR>
</TABLE>

<p><br>
    <p>
    <i>
    <b>Caution:</b> &nbsp; On Windows, the value you choose for your
    <a href="#HERCPRIO">Process Priority</a>
    has a direct impact on how your
    <a href="#thread_priorities">Thread Priorities</a> are interpreted!
    You should never modify one without understanding what impact your doing so
    might have on the other!
    </i>

<p><br>

<a name="thread_priorities"></a>
<h4>Thread Priorities</h4>
<P>
    On a Linux/Unix host, Hercules needs to be a setuid root
    program to allow it to reset its dispatching priority to a high
    (negative) value
    (i.e., <code>chown root.root hercules; chmod +s hercules</code>).
<P>
    For Windows, the following conversions are used for translating
    Linux/Unix thread priorities to Windows thread priorities:
<P><BR>

<table frame="VOID" rules="NONE" cellpadding="0" cellspacing="0">
    <TR>
        <TH ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">Unix<br>Priority</TH>
        <TH ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%"><BR></TH>
        <TH ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">Windows<br>Thread Priority</TH>
        <TH ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%"><br>Meaning</TH>
    </TR>
    <TR> <!-- ============================================================================ -->
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">&nbsp;</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">&nbsp;</TD>
    </TR>
    <TR>
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">-20 to -16</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">Time Critical</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">
            Base priority of 15 for Idle, Below Normal, Normal, Above Normal, or High
            class processes, and a base priority of 31 for Realtime class processes.
        </TD>
    </TR>
    <TR> <!-- ============================================================================ -->
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">&nbsp;</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">&nbsp;</TD>
    </TR>
    <TR>
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">-15 to -9</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">Highest</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">
            Priority 2 points above the priority class.
        </TD>
    </TR>
    <TR> <!-- ============================================================================ -->
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">&nbsp;</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">&nbsp;</TD>
    </TR>
    <TR>
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">-8 to -1</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">Above Normal</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">
            Priority 1 point above the priority class.
        </TD>
    </TR>
    <TR> <!-- ============================================================================ -->
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">&nbsp;</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">&nbsp;</TD>
    </TR>
    <TR>
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">0 to 7</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">Normal</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">
            Normal priority for the priority class.
        </TD>
    </TR>
    <TR> <!-- ============================================================================ -->
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">&nbsp;</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">&nbsp;</TD>
    </TR>
    <TR>
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">8 to 14</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">Below Normal</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">
            Priority 1 point below the priority class.
        </TD>
    </TR>
    <TR> <!-- ============================================================================ -->
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">&nbsp;</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">&nbsp;</TD>
    </TR>
    <TR>
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">15 to 19</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">Lowest</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">
            Priority 2 points below the priority class.
        </TD>
    </TR>
    <TR> <!-- ============================================================================ -->
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">&nbsp;</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">&nbsp;</TD>
    </TR>
    <TR>
        <TD ALIGN="RIGHT" VALIGN="BASELINE" WIDTH="11%">20</TD>
        <TD ALIGN="CENTER" VALIGN="BASELINE" WIDTH="6%">&nbsp;</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="20%">Idle</TD>
        <TD ALIGN="LEFT" VALIGN="BASELINE" WIDTH="63%">
            Base priority of 1 for Idle, Below Normal, Normal, Above Normal, or High
            class processes, and a base priority of 16 for Realtime class processes.
        </TD>
    </TR>
</TABLE>

<p><br>
    <p>
    <i>
    <b>Caution:</b> &nbsp; On Windows, your Thread Priority is interpreted
    differently based on your chosen <a href="#HERCPRIO">Process Priority</a> setting!
    You should never modify your Thread Priority settings without first reviewing your
    chosen <a href="#HERCPRIO">Process Priority</a> setting!
    </i>

<p>

<hr><!-- ---------------------------------------------------------------------------- -->

<a name="device_stmts"></a>
<h3>Device statements</h3>

<p>
    The remaining statements in the configuration file are device statements.
    There must be one device statement for each I/O device or group of
    identical I/O devices. The format of the device statement is:
    <p>

    <code><em>devnum(s) &nbsp; devtype</em> &nbsp; [ <em>arguments</em> ] &nbsp; [ <em># comments...</em> ] </code>
    <p>

    where the generic syntax for device numbers is &nbsp;
    <code>[n:]CCUU[,CCUU][-CCUU][.nn][...]</code> &nbsp;
    as explained below:


<dl> <!-- begin Device statements -->
<a name="devnums"></a>

<dt><code><em>devnum(s)</em></code>
<dd><p>
    is either a single <em>devnum</em>, a range of <em>devnums</em> (separated by a '-' (dash)),
    a count of <em>devnums</em> (separated by a '.' (dot/period/stop)), or a comma separated
    list of <em>devnums</em>. Examples would be 200-210 or 0300.10 or 0400,0403 or 0100,0110-011F.
    <p>

    All devices defined when <em>devnums</em> specifies more than one device
    have identical characteristics (except for the device number itself).
    All devices defined as a group must be defined on a single channel.
    A channel is defined as a contiguous group of 256 (or hexadecimal 100) devices.
    0010 and 0020 are on the same channels. 0100 and 0210 are not.
    <p>

    See <em>devnum</em> immediately below for an explanation of how each device number is specified.

    <p />
    The 4 special subtitution symbols CUU, CCUU, cuu and ccuu are also defined for each
    device in a device group. See <a href="#subs">substitutions</a> for details.
    <p>

<dt><code><em>devnum</em></code>
<dd><p>
    is either a 1 to 4 digit hexadecimal number in the range 0000 to FFFF
    for ESA/390, or 0000 to 0FFF for S/370.  The device number uniquely
    identifies each device to the operating system.
    <p>
<dt><code><em>Channel Set / Logical Channel Subsystem</em></code>
<dd><p>
    An optional Channel Set or Logical Channel Subsystem Identification can be
    specified for a device number or group of devices. The Identification
    number is specified at the beginning of the definition, followed by a ':'
    character. For example :<p>
    1:0400-040F 3270<p>
    defines 3270 devices 400 to 40F to be on S/370 Channel Set 1 or on S/390
    or z/Architecture Logical Channel Subsystem # 1.<p>
    Since each Logical Channel Subsystem defines its own device numbering space,
    care should be taken in S/370 mode as to define a coherent set of device
    numbers.<p>
    Not all S/390 or z/Architecture operating systems support Multiple Logical
    Channel Subsystems (this feature was introduced with the z9-109).<p>
    If no Channel Set or Logical Channel Subsystem Identification is specified,
    then it is assumed to be 0.
    <p>

<dt><code><em>devtype</em></code>
<dd><p>
    is the device type.  Valid device types are shown in the
    <a href="#device_types_table">table</a> just below.
    <p>

<dt><code><em>arguments</em></code>
<dd><p>
    is a list of parameters whose meaning depends on the device type.
    The arguments required for each class of device are shown further
    below.
    <p>

<dt><code><em># comments...</em></code>
<dd><p>
    A comment preceded by a &#035; sign may be appended to any device
    definition statement.
    <p>

</dl> <!-- end Device statements -->


<p><br>

<a name="device_types_table"></a>

    <table width=85%>
    <tr>

        <td width=15%>
        &nbsp;
        </td>

        <td>

            <table border=1 cellpadding=8>

            <tr>
                <th colspan=3><br><big>Supported Device Types</big><p></th>
            </tr>

            <tr><th>Device type</th>
                <th>Description</th>
                <th>Emulated by</th>
            </tr>

            <tr><td>3270, 3287</td>
                <td><a href="#loc3270">Local non-SNA 3270 display or printer</a></td>
                <td>TN3270 client connection</td>
            </tr>

            <tr><td>SYSG</td>
                <td><a href="#SYSG">Integrated 3270 console</a></td>
                <td>TN3270 client connection</td>
            </tr>

            <tr><td>1052, 3215</td>
                <td><a href="#conprkb">Console printer-keyboards</a></td>
                <td>Telnet client connection</td>
            </tr>

            <tr><td>1052-C, 3215-C</td>
                <td><a href="#consysc">Integrated console printer-keyboards</a></td>
                <td>Integrated on Hercules console</td>
            </tr>

            <tr><td>1442, 2501, 3505</td>
                <td><a href="#cardrdr">Card readers</a></td>
                <td>Disk file(s) (ASCII or EBCDIC)</td>
            </tr>

            <tr><td>3525</td>
                <td><a href="#cardpch">Card punch</a></td>
                <td>Disk file (ASCII or EBCDIC)</td>
            </tr>

            <tr><td>1403, 3211</td>
                <td><a href="#printer">Line printers</a></td>
                <td>Disk file (ASCII)</td>
            </tr>

            <tr><td>3410, 3420, 3422, 3430, 3480, 3490, 3590, 9347, 8809</td>
                <td><a href="#tapedev">Tape drives</a></td>
                <td>Disk file, CDROM, or SCSI tape</td>
            </tr>


            <tr>
                <td>
                        <a href="#3088">
                            3088
                        </a>
                </td>
                <td>
                        Channel-to-Channel Adapter device
                </td>
                <td>
                        <a href="#CTCT">"CTCT" driver</a>
                        or
                        <a href="#CTCE">"CTCE" driver</a>
                </td>
            </tr>


            <tr>
                <td>
                        (( <a href="#CTCI">CTCI</a> ))
                </td>
                <td>
                        Channel-to-Channel link to host TCP/IP stack
                </td>
                <td>
                        <a href="#CTCI">"CTCI" TUN/TAP Driver</a>
                </td>
            </tr>


            <tr>
                <td>
                        (( <a href="#LCS">LCS</a> ))
                </td>
                <td>
                            IBM 2216 router, IBM 3172 running ICP,
                            IBM 8232 LCS device, LCS3172 driver of a P/390,
                            IBM Open Systems Adapter (OSA)
                </td>
                <td>
                        <a href="#LCS">"LCS" (LAN Channel Station)
                        <br>TUN/TAP Driver</a>
                </td>
            </tr>




            <tr><td>3310, 3370, 9332, 9335, 9336, 0671</td>
                <td><a href="#fbadasd">FBA direct access storage devices</a></td>
                <td>Disk file</td>
            </tr>

            <tr><td>2305, 2311, 2314, 3330, 3340, 3350, 3375, 3380, 3390, 9345</td>
                <td><a href="#ckddasd">CKD direct access storage devices</a></td>
                <td>Disk file</td>
            </tr>

            <tr><td>2703</td>
                <td><a href="#comline">Communication Line</a></td>
                <td>TCP Socket</td>
            </tr>

            <tr><td>2703</td>
                <td><a href="#remtty">Remote Teletype</a></td>
                <td>TCP Socket</td>
            </tr>

            </table>

        </td>

    </tr>
    </table>

<p><br>


<h4>Arguments required for each device type</h4>

<dl> <!-- begin Arguments for each device type -->

<p>
<a name="3270"></a>
<a name="loc3270"></a>
<dt><em>Local non-SNA 3270 devices</em>
<dd><p>
    There are no required arguments for this particular device type, but
    there are however several optional arguments which are discussed below.
    <p>

    To use this device, a tn3270 client must connect to the host machine
    via the port number specified on the <a href="#CNSLPORT">CNSLPORT</a>
    statement. A valid tn3270 device type, such as IBM-3278, must be used.
    <p>

    If your tn3270 client software allows you to specify a device type suffix
    (e.g. <code>IBM-3278@001F</code> ), then you can use the suffix to connect
    to that specific device number, if eligible. If no suffix is specified,
    then your client will be connected to the first available 3270 device for
    which it is eligible, if any.
    <p>

    If you specify a specific terminal device address (via the device type
    suffix of your tn3270 client software), then you must be eligible to connect
    at that device address or your connection is immediately rejected; an
    alternative terminal device for which you <i>might</i> be eligible is
    <i>not</i> automatically selected instead.
    <p>

    Optional arguments:
    <p>

    <dl>
    <a name="loc3270group"></a>
    <dt><code><em>groupname</em></code>
    <dd><p>
        If a terminal group name is given on the device statement, a device type
        suffix with this group name can be used to indicate that a device in this
        group is to be used. If a group name is specified as a terminal type suffix
        (e.g. <code>IBM-3278@GROUPNAME</code> ) and there are no devices defined
        for that group (or there are no more available devices remaining in that
        group), then the connection is rejected. If no group name is specified
        as a terminal type suffix, then the connection will only be eligible for
        any terminal devices which do <i>not</i> have a group name specified on
        their device statements. The terminal group name, if specified, should
        be 1 to 8 alphanumeric characters, the first character being alphabetic,
        and it should <i>not</i> be a hexadecimal number. Upper and lower case
        letters in the group name are considered to be equivalent.
        <p>

    <a name="loc3270ipaddr"></a>
    <dt><code><em>ipaddr</em> [ <em>mask</em> ]</code>
    <dd><p>
        The optional IP address and optional subnet mask specify the ip address(es)
        of which client(s) are allowed to connect at the device address identified
        by the device statement on which they appear. This provides an alternative
        and/or additional means of specifying to which device(s) a client tn3270
        session may, or should, connect.
        <p>

        If the IP address of the tn3270 client trying to connect, when 'and'ed with
        the optional subnet mask (which defaults to 255.255.255.255 if not specified),
        matches the IP address entered on the device statement, then the client
        is eligible to connect at that device address. Otherwise the client is
        ineligible to connect at that address and then next available device, if
        any, for which the client is eligible to connect (if any) is selected instead.
        <p>

        If no permissible terminal devices remain (i.e. terminal devices for which
        the client is eligible to connect), or there are no more available terminal
        devices remaining, then the client connection is rejected.
        <p>

        The optional IP address and subnet mask may also be specified in conjunction
        with the previously mentioned terminal group argument, but the terminal group
        argument, if specified, must be specified <i>ahead of</i> (i.e. before) the
        optional ip address and subnet mask arguments. To specify an IP address and
        subnet mask without also specifying a terminal group, simply use '*' as the
        group name instead.
        <p>

        If an IP address / subnet mask are <i>not</i> specified, then <i>any</i>
        client tn3270 session is allowed to connect to the device (provided they are also
        a member of the specified terminal group, if any).
        <p>

        The terminal group name argument, if specified, always takes precedence over
        any optional ip address and subnet mask which may also be specified.
        <p>

    </dl>

    To summarize, the device number suffix always takes precedence over any group name
    which may also be specified, and any group name, if specified, always takes precedence
    over any ip address / subnet mask value which may also be specified.
    <p>

<hr width="50%"><p>

<a name="SYSG"></a>
<dt><em>Integrated 3270 console device</em>
<dd><p>

    The integrated 3270 (SYSG) console is similar to a <a href="#loc3270">local non-SNA
    3270</a> device, except that it is not addressed by subchannel number and it is
    supported only by certain system control programs. The SYSG console is defined
    like a 3270 device except that the device type is SYSG and the device number is
    ignored. Only one SYSG console can be defined in a configuration.
    <p>

    Use tn3270 client software to connect to the SYSG console device via the port number
    specified on the <a href="#CNSLPORT">CNSLPORT</a> statement, just as you would connect
    to a regular local non-SNA 3270 device.
    <p>

    The SYSG console configuration statement recognizes optional arguments which specify
    <a href="#loc3270group">group name</a> and <a href="#loc3270ipaddr">IP address</a>
    in the same way as previously described for a <a href="#loc3270">local non-SNA
    3270</a> device. These optional arguments provide a means to ensure that a given
    tn3270 client can connect directly to the SYSG console. If the group name and IP
    address arguments are not specified, then the SYSG console is considered to be a
    member of the general pool of devices eligible for connection to any incoming
    tn3270 client.
    <p>

<hr width="50%"><p>

<a name="consysc"></a>
<dt><em>Integrated Console printer-keyboard devices</em>
<dd><p>

    There is one optional argument which is the command prefix
    for sending input to the device. The default command prefix is '/'.
    <p><em>
    <b>Note:</b> There is no restriction on the character you can select.
    If you select a command character that is the first character of a panel
    command, you will not be able to use that command.
    </em>
    <p>

    To send a logon command to a 1052-C or 3215-C enter /logon on the Hercules console.
    <p>
    All integrated devices must use a different command prefix.
    <p>

<hr width="50%"><p>

<a name="conprkb"></a>
<dt><em>Console printer-keyboard devices</em>
<dd><p>

    There are no required arguments for this particular device type, but
    there are however several optional arguments discussed below.
    <p>

    To use this device, a telnet client must connect to the host machine
    via the port number specified on the <a href="#CNSLPORT">CNSLPORT</a> statement.
    <p>

    If your telnet client software allows you to specify a device type suffix
    (for example: <code>ansi@0009</code> ), then you can use that suffix to specify
    the specific 1052 or 3215 device to which you wish to connect. If you do not
    specify a suffix in your telnet client software (or your software does not
    allow it), then your client will be connected to the first available 1052 or
    3215 device for which it is eligible.
    <p>

    An optional <code>noprompt</code> argument may be specified on the device
    statement to cause suppression of the "Enter input for console device nnnn"
    prompt message which is otherwise normally issued to the device whenever
    the system is awaiting input on that device.
    <p>

    Additionally, a terminal group name, ip address and subnet mask may all also
    be optionally specified in the exact same manner as discussed in the previous
    <a href="#loc3270">Local non-SNA 3270 devices</a> section with the exception
    that the "noprompt" option, if specified, must precede the other arguments.
    <p>

<hr width="50%"><p>

<a name="1442"></a>
<a name="3505"></a>
<a name="cardrdr"></a>
<dt><em>Card reader devices</em>
<dd><p>

    The argument specifies a list of file names containing card images.
    Additional arguments may be specified after the file names:
    <p>

    <dl>
    <dt><code>sockdev</code>
    <dd><p>
        indicates the card reader is a socket device wherein the
        filename is actually a socket specification instead of a
        device filename.  When used, there must only be one filename
        specified in the form: <code>port</code> or <code>host:port</code>
        or <code>sockpath/sockname</code>.  The device then accepts
        remote connections on the given TCP/IP port or Unix Domain
        Socket, and reads data from the socket instead of from a device
        file. This allows automatic remote submission of card reader
        data. See the <a href="hercrdr.html">Hercules Socket Reader</a>
        page for more details.
        <p>

    <dt><code>eof</code>
    <dd><p>
        specifies that unit exception status is presented after
        reading the last card in the file. This option is persistent, and
        will remain in effect until the reader is reinitialized with the
        <code>intrq</code> option.
        <p>

    <dt><code>intrq</code>
    <dd><p>
        specifies that unit check status with intervention required
        sense bytes is presented after reading the last card
        in the file. This option is persistent, and will remain in
        effect until the reader is reinitialized with the <code>eof</code>
        option.
        <p>

    <dt><code>multifile</code>
    <dd><p>
        specifies, when multiple input files are entered, to
        automatically open the next input file and continue reading
        whenever EOF is encountered on a given file. If not specified,
        then reading stops once EOF is reached on a given file and
        an attention interrupt is then required to open and begin
        reading the next file.
        <p>

    <dt><code>ebcdic</code>
    <dd><p>
        specifies that the file contains fixed length 80-byte EBCDIC
        records with no line-end delimiters.
        <p>

    <dt><code>ascii</code>
    <dd><p>
        specifies that the file contains variable length lines of
        ASCII characters delimited by LF (line feed) sequences or CRLF
        (carraige return line feed) sequences at the end of each line.
        <p>

        If neither EBCDIC nor ASCII is specified, then the device handler
        attempts to detect the format of the card image file when the device
        is first accessed.
        Auto-detection is not supported for socket devices, and the default
        is ASCII if sockdev is specified.
        <p>

    <dt><code>trunc</code>
    <dd><p>
        specifies, for ASCII files, that lines longer than 80
        characters are truncated instead of producing a unit check
        error.
        <p>

    <dt><code>autopad</code>
    <dd><p>
        specifies, for EBCDIC files, that the file is automatically
        padded to a multiple of 80 bytes if necessary.
        <p>

    </dl>
    <p>

<hr width="50%"><p>

<a name="3525"></a>
<a name="cardpch"></a>
<dt><em>Card punch devices</em>
<dd><p>
    The argument specifies the name of a file to which the punched
    output will be written.
    Additional arguments may be specified after the file name:
    <p>

    <dl>
    <dt><code>ascii</code>
    <dd><p>
        specifies that the file will be written as variable length
        lines of ASCII characters delimited by line feeds or
        carriage return line feed sequences at the end of each line.
        Trailing blanks are removed from each line.
        If the <code>ascii</code> argument is not specified, the
        file is written as fixed length 80-byte EBCDIC records with
        no line-end delimiters.
        <p>

    <dt><code>crlf</code>
    <dd><p>
        specifies, for ASCII files, that carriage return line feed
        sequences are written at the end of each line.
        If the <code>crlf</code> argument is not specified, then
        line-feeds only are written at the end of each line.
        <p>

    <dt><code>noclear</code>
    <dd><p>
        specifies that the output file will not be cleared to zero
        bytes when it is opened.
        If the <code>noclear</code> argument is not specified, then
        any previous content of the file is destroyed when the file
        is opened for output.
        <p>

    </dl>
    <p>

<hr width="50%"><p>

<a name="1403"></a>
<a name="printer"></a>
<dt><em>Line printer devices</em>
<dd><p>
    The argument specifies the name of a file to which the printer
    output will be written.  The output is written in the form of
    variable length lines of ASCII characters delimited by line
    feeds or by carriage return line feed sequences.  Trailing
    blanks are removed from each line.  Carriage control characters
    are translated to blank lines or ASCII form feed characters.
    If the file exists it will be overwritten.

    <p>

    Additional arguments may be specified after the file name:
    <p>

    <dl>
    <dt><code>sockdev</code>
    <dd><p>
        indicates the line printer is a socket device wherein the
        filename is actually a socket specification instead of a
        device filename.  When used, there must only be one filename
        specified in the form: <code>port</code> or <code>host:port</code>.
        The device then accepts
        remote connections on the given TCP/IP port,
        and writes data to the socket instead of to a device
        file. This allows automatic remote spooling of line printer
        data. The sockdev option is mutually exclusive with all other
        printer options (e.g. crlf, etc) and must be specified alone.
        <p>

    <dt><code>crlf</code>
    <dd><p>
        specifies, for ASCII files, that carriage return line feed
        sequences are written at the end of each line.
        If the <code>crlf</code> argument is not specified, then
        line-feeds only are written at the end of each line.
        <p>

    <dt><code>noclear</code>
    <dd><p>
        specifies that the output file will not be cleared to zero
        bytes when it is opened.
        If the <code>noclear</code> argument is not specified, then
        any previous content of the file is destroyed when the file
        is opened for output.
        <p>

    <dt><code>fcbcheck</code>
    <dd><p>
        specifies that an attempt to skip to a FCB channel for which no
        line number has been set will cause the command to be rejected
        with a unit check. This is the default.
        <p>

    <dt><code>nofcbcheck</code>
    <dd><p>
        specifies that an attempt to skip to a FCB channel for which no
        line number has been set will cause the next line of output to be
        printed on the next line on the printer output. The opposite,
        <code>fcbcheck</code>, is the default.
        <p>

    <dt><code>rawcc</code>
    <dd><p>
        specifies that printer output CCWs are not to be interpreted, but
        simply dumped in hex to the printer output file. This is useful for
        debugging. Default is to interpret printer CCWs normally.
        <p>

    <dt><code>fcb=<em>argument</em></code>
    <dd><p>
        specifies an initial FCB image to use for this printer. The argument
        may either consist of 12 numbers separated by commas (these are the
        line numbers for channels 1 to 12), or of pairs of numbers in the
        format <em>nn</em><b>:</b><em>chan</em> where <em>chan</em> is the
        channel number and <em>nn</em> is the line number that the channel
        corresponds to. Use <code>00</code> to leave the line number unset
        for a channel (see <code>fcbcheck</code> above). The default is
        <code>fcb=1,7,13,19,25,31,37,43,63,49,55,61</code>
        which is equivalent to
        <code>fcb=1:1,7:2,13:3,19:4,25:5,31:6,37:7,43:8,63:9,49:10,55:11,61:12</code>
        <p>

    <dt><code>browse &#124; print</code>
    <dd><p>
        specifies whether the output should be optimized and cleaned up for
        browsing, or optimized for printing. The default is <code>browse</code>.
        <p>

    <dt><code>index=<em>nn</em></code>
    <dd><p>
        specifies 3211 indexing. Valid values are 0 to 31. The default is 0.
        <p>

    <dt><code>lpi=6&#124;8</code>
    <dd><p>
        specifies vertical spacing of 6 or 8 lines per inch.
        <p>

    <dt><code>lpp=<em>nn</em></code>
    <dd><p>
        specifies the number of lines per page. The default is 66.
        <p>

    </dl>

    <p>

    If the filename begins with the vertical bar '&#124;' pipe character,
    then it is removed and the remainder of the filename is interpreted as
    a command line (the name of a program or batch file followed by any
    necessary arguments) to which to "pipe" the printer output to.
    This is known as the "print-to-pipe" feature. All printer output
    is then sent to the piped program's stdin input, and all of the
    piped program's stdout and stderr output is piped back to Hercules
    for displaying on the hardware console.

    <p>
    If the "print-to-pipe" command line contains arguments, then quotes
    must be placed around the entire filename string including the
    vertical bar, for example:
    <pre>
    000E 1403 "|/usr/bin/lpr -Phplj" crlf          <em>(for Unix)</em>
    000E 1403 "|c:\utils\pr -s -PLPT1:" crlf       <em>(for Windows)</em>
    </pre>
    The above example uses the pr program downloaded
    from <a href="http://www.atnetsend.net/computing/">
    http://www.atnetsend.net/computing/</a>
    <p>
    If the "print-to-pipe" command line itself contains quotes, then
    the command line must be enclosed in apostrophes instead of quotes,
    for example:
    <pre>
    000E 1403 '|"c:\Program Files\My Utils\pr" -s -PLPT1:' crlf
    </pre>
    <p>
    Tim Pinkawa has an example which shows how the print-to-pipe feature
    can be used to create output in PDF format:
    <a href="http://www.timpinkawa.net/hercules/prtspool.html">
    http://www.timpinkawa.net/hercules/prtspool.html</a>
    <p>

<hr width="50%"><p>

<a name="3420"></a>
<a name="tapedev"></a>
<dt><em>Emulated tape devices</em>
<dd><p>
    Five types of tape emulation are supported (see further below).
    <p>

    The only required parameter is the device filename. All other parameters
    are optional and must follow the filename. Use '<b>*</b>' (asterisk) for
    the filename to specify an empty (unmounted) tape drive. The specified file,
    if other than '<b>*</b>', <i>must</i> exist.
    <p>
    Additionally, if the file name starts with the '@' character (at sign), the file
    really describes a list of tape emulation files to be loaded in succession.
    <p>

    The syntax of each line is identical to the information that can be
    specified after the device type when the options are specified directly
    after the device type in the configuration file.
    <p>

    If the emulation file filename in the file list is the '<b>*</b>' (asterisk)
    character, then this specifies a set of options to be applied to <i>all</i>
    additional emulation files specified in the file list.
    <p>

    Parameters are appended in succession. In all cases, if the same parameter is
    specified more than once, the last instance takes precedence.
    <p>

    Therefore, it is possible to specify a set of parameters in the base configuration
    file, another set on a '*' line, and another set for each individual line.
    Parameters are then appended in that order: options specified on the base device
    statement itself first, followed by those options specified on the '*' statement,
    and finally those specified on each individual file list statement last. <i>A
    <b>SCSI tape</b> device should <b>not</b> be given in a file list.</i>
    <p>

    Refer to the distributed source-code's "<b>README.TAPE</b>" document for
    additional information regarding system and application programming for tape
    devices and instructions regarding use of the emulated <b>ACF</b> (Automatic
    Cartridge Feeder) and <b><a href="#AUTOMOUNT">AUTOMOUNT</a></b> features
    for virtual (non-SCSI) tape devices.
    <p>

    <dl> <!-- begin Emulated tape types of emulation -->

    <dt><b>SCSI tape drives</b>
    <dd><p>
        These are real tape drives attached to the host machine via a SCSI
        interface. Hercules emulation always makes the drive appear as a
        channel attached device such as 3420 or 3480, although the underlying
        physical drive may be any type of SCSI attached tape drive, including
        4mm or 8mm DAT, DLT, SCSI attached 3480/3490 cartridge drives, and
        SCSI attached 3420 open reel tape drives.
        <p>
        Host-attached SCSI tapes are read and written using variable length
        EBCDIC blocks and filemarks exactly like a mainframe tape volume, and
        as a result can be freely used/exchanged on either (i.e. SCSI tapes
        created on a real mainframe can subsequently be read by Hercules just
        fine, and a SCSI tape created by Hercules can be subsequently read on
        a mainframe just fine, thus providing a convenient means of exchanging
        data between the two).
        <p>
        If you plan on using SCSI tapes with Hercules you might also be interested
        in the <a href="#AUTO_SCSI_MOUNT">AUTO_SCSI_MOUNT</a> configuration option.
        <p>
        The only <i>required</i> device statement parameter for SCSI attached tape
        drives is the name of the device as it is known
        by the host operating system,
        usually &nbsp;"<code><b>/dev/nst0</b></code>"&nbsp; <i>(for Linux or
        Windows)</i> or &nbsp;"<code><b>\\.\Tape0</b></code>" &nbsp; <i>(for
        Windows only)</i>, where '0' means tape drive number
        0 (your first or only host-attached SCSI tape drive), '1' means your
        second host-attached SCSI tape drive, etc.
        <p>
        Depending on what actual model of SCSI tape drive you
        actually have and how it behaves, you may need to specify one or more
        additional optional parameters for Hercules to provide proper emulation
        of the desired device type.
        For example: a <b>Quantum 'DLT' (Digital Linear Tape) SCSI</b> tape drive does
        not return nor use a block-id format compatible with 3480/3490 drives
        (it instead uses a full 32-bit block-id just like the model 3590 does).
        It also does not support the Erase Gap CCW at all.
        <p>
        Thus, in order to use, for example, a Quantum DLT drive with Hercules,
        you <i>MUST</i> specify some special additional options to prevent the
        Erase Gap command from being issued to the drive as well as to inform
        Hercules that the drive uses 32-bit block-ids.
        <p>
        <b>Please note</b> that the below options define how the actual SCSI hardware
        device behaves, which is completely different from the way the <i>emulated</i>
        device will appear to behave to your guest. That is to say, if you define
        your tape drive to Hercules as a 3480 device, then Hercules will perform
        3480 device type emulation such that the device appears to your guest o/s
        as if it were a 3480 device. If the <i>actual</i> SCSI device behaves as
        a 3590 device however (perhaps using/returning 32-bit block-ids instead
        of the expected 22-bit format block-ids that 3480's use), then you <i>MUST</i>
        specify the <code>--blkid-32</code> special option on your Hercules device
        statement so that Hercules's emulation logic can know that it needs to
        translate 22-bit block-ids to 32-bit ones before sending them to the
        actual SCSI hardware (and vice versa: to translate 32-bit block-ids from
        the actual SCSI drive into 22-bit format block-ids that your guest expects
        from a 3480 device).
        <br>
<a name="Quantum"></a>
        <br>
                <center><h4>Special options for SCSI tapes</h4></center>
        <p>
        As explained just above, certain model SCSI tape drives such as the Quantum
        DLT series may require special handling in order to provide the desired proper
        device type emulation. These special options are:
        <p>
        <dl>
        <dt><code>--no-erg</code>
        <dd><p>
            This option is intended to prevent issuance of the Erase Gap
            command to those SCSI tape drives which do not support it (such
            as the Quantum DLT series). It causes Hercules's device emulation
            logic to ignore any Erase Gap commands issued to the drive and
            to return immediate 'success' instead.
            <p>
            This option should
            only be used (specified) for drives such as the Quantum, which
            support switching from read mode to write mode in the middle of
            a data stream without the need of an intervening Erase Gap command.
            Specifying it for any other model SCSI drive may cause incorrect
            functioning as a result of the Erase Gap command not being issued
            to the actual SCSI hardware.
            <p>
            Check the manufacturer information for your particular model of
            SCSI-attached tape drive (and/or use Fish's
            "<a href="http://www.softdevlabs.com/Hercules">ftape</a>"
            Windows utility)
            to determine whether or not this option is needed for your
            particular drive.
            <p>
        <dt><code>--blkid-32</code>
        <dd><p>
            This option indicates that your SCSI-attached tape drive only
            supports 32-bit block-ids (as used by 3590 drives) and not the 22-bit
            format used by 3480/3490 drives. You should only specify this option
            if you intend to define the drive as a model 3480 or 3490 device, and
            then only if your actual SCSI drive uses 32-bit block-ids of course.
            If you define your Hercules tape drive as a model 3590 device however,
            then this option is of course not needed since model 3590 drives
            are already presumed to use 32-bit block-ids.
            <p>
            Specifying this option on a 3480/3490 device statement will cause
            Hercules device emulation logic to automatically translate the actual
            SCSI tape drive's 32-bit block-id into 22-bit format before returning
            it back to the guest operating system (since that is the format it
            expects it to be in for a model 3480/3490 drive), and to translate the
            guest's 22-bit format block-id into 32-bit format before sending it
            to the actual SCSI hardware (since that is the format that the actual
            hardware requires it to be in).
            <p>
        <dt><code>--blkid-22</code>
        <dd><p>
            The complete opposite of the above <code>--blkid-32</code> option.
        </dl>
        <p><br>

    <dt><b>Optical Media Attach (OMA) virtual files</b>
    <dd><p>
        These are read-only files which usually reside on CDROM.
        OMA virtual tapes consist of one CDROM file corresponding
        to each physical file of the emulated tape.  An ASCII text
        file called the tape descriptor file (TDF) specifies the
        names of the files which make up the virtual tape.
        The argument specifies the name of the tape descriptor
        file (for example <code>/cdrom/tapes/uaa196.tdf</code>)
        <p>

        Each file on the virtual tape can be in one of three formats:
        <p>

        <dl>
        <dt><code>TEXT</code>
        <dd><p>
            <b><i>TEXT</i></b> files consist of variable length
            ASCII records delimited by carriage return line feed
            sequences at the end of each record.  Each record is
            translated to EBCDIC and presented to the program as
            one physical tape block.
            <p>

        <dt><code>FIXED <em>nnnnn</em></code>
        <dd><p>
            <b><i>FIXED</i></b> files consist of fixed length
            EBCDIC blocks of the specified length
            (<code><em>nnnnn</em></code>)
            <p>

        <dt><code>HEADERS</code>
        <dd><p>
            <b><i>HEADERS</i></b> files consist of variable
            length EBCDIC blocks.  Each block is preceded by a
            12-byte header.
            <p>

        </dl>
        <p>

        If you have any IBM manuals in Bookmanager format on CDROM,
        you can see some examples of TDF files in the
        <code>\TAPES</code> directory on the CDROM.
        <p><br>

    <dt><b>AWSTAPE virtual files</b>
    <dd><p>
        These contain a complete tape in one file.  AWSTAPE files
        consist of variable length EBCDIC blocks.  Each block is
        preceded by a 6-byte header.  Filemarks are represented by
        a 6-byte header with no data.  This is the same format as is
        used by the P/390.
        The argument specifies the location of the AWSTAPE file
        (for example <code>ickdsf.aws</code>)
        <p><br>

    <dt><b>FakeTape virtual files</b>
    <dd><p>
        These contain a complete tape in one file.  FakeTape files
        consist of variable length EBCDIC blocks.  Each block is
        preceded by a 12-ASCII-hex-character header.  Filemarks are represented by
        a 12-character header with no data.  The FakeTape format is
        used by the Flex-ES system from Fundamental Software Inc (FSI).
        The argument specifies the location of the FakeTape file
        (for example <code>ickdsf.fkt</code>). Note: "FLEX-ES" and
        "FakeTape" are trademarks of Fundamental Software, Inc.
        <p><br>

    <dt><b>HET virtual files</b> &nbsp;&nbsp; (<b>H</b>ercules <b>E</b>mulated <b>T</b>ape)
    <dd><p>
        These contain a complete tape in one file and have the same
        structure as the AWSTAPE format with the added ability to have
        compressed data.
        The first argument specifies the location of the HET file.  The
        filename must end with ".het" to be recognized by Hercules as an
        HET file.
        (for example <code>023178.het</code>)
        <p>

        Additional arguments that allow you to control various HET settings
        are:
        <p>

        <dl> <!-- begin Additional HET arguments -->
        <dt><code>AWSTAPE</code>
        <dd><p>
            The <code>AWSTAPE</code> argument causes HET files to
            be written in AWSTAPE format.  This basically, disables
            the additional features provided by the HET format.
            <p>

        <dt><code>COMPRESS=<em>n</em></code>
        <dt><code>IDRC=<em>n</em></code>
        <dd><p>
            <code>COMPRESS</code> and <code>IDRC</code> control
            whether compression should be used when writing to HET
            files.  The value <code><em>n</em></code> &nbsp;can be <code>1</code>
            to turn on compression (the default) or <code>0</code> to turn
            it off.  <code>IDRC</code> is currently a synonym for
            <code>COMPRESS</code>, but may be used in the future to
            control other emulated tape drive features.
            <p>

        <dt><code>METHOD=<em>n</em></code>
        <dd><p>
            The <code>METHOD</code> option allows you to specify
            which compression method to use.  You may specify
            <code>1</code> for ZLIB compression or <code>2</code>
            for BZIP2 compression.  The default is <code>1</code>.
            <p>

        <dt><code>LEVEL=<em>n</em></code>
        <dd><p>
            The <code>LEVEL</code> option controls the level of
            compression.  It ranges from <code>1</code> for fastest
            compression to <code>9</code> &nbsp;for best compression.
            The default is <code>4</code>.
            <p>

        <dt><code>CHUNKSIZE=<em>nnnnn</em></code>
        <dd><p>
            The <code>CHUNKSIZE</code> option allows you to create
            HET files that contain different chunk sizes.  The AWSTAPE
            (and therefore the HET) format allows each tape block to be
            logically broken up into smaller chunks.  For instance, if
            your S/3x0 application creates tapes with a block size of
            27998, those blocks would be broken down into
            <code><em>nnnnn</em></code> &nbsp;sized chunks.
            The range is from <code>4096</code>
            to <code>65535</code>, the latter being the default.
            Decreasing the value from its default may reduce compression
            performance.
            For compatability with AWSTAPE files created by the P/390,
            specify <code>AWSTAPE</code> with <code>CHUNKSIZE=4096</code>.
            <p>

        </dl> <!-- end Additional HET arguments -->

    </dl> <!-- begin Emulated tape types of emulation -->

    <p><br>

    The following parameters apply to <b>AWS</b>, <b>HET</b> and <b>FakeTape</b> emulation files:
    <p>

        <dl>
        <dt><code>MAXSIZE</code>=<i>n</i> &nbsp;&#124;&nbsp; <code>MAXSIZEK</code>=<i>n</i>
             &nbsp;&#124;&nbsp; <code>MAXSIZEM</code>=<i>n</i>
        <dd><p>
            Specifies the maximum size (in bytes, Kilobytes or Megabytes)
            that the emulated file is allowed to grow to. Specifying zero
            for this parameter means "unlimited" (i.e. there is no limit).
            <p>

        <dt><code>EOTMARGIN</code>=<em>n</em>
        <dd><p>
            Specifies the number of bytes remaining before reaching <em>maxsize</em>
            at which point the tape device will signal the presence of the "End of Tape"
            marker (reflector), thus allowing the program to switch to the next tape.
            <p>

        <dt><code>READONLY</code>=<em>n</em>
        <dd><p>
            Specifies whether the tape is mounted read-only (without a write
            ring or with the cartridge protect switch set to "write
            protect").  A parameter of 1 means read-only; a parameter of 0
            means read-write.  If READONLY=1, RO or NORING is not specified,
            the default is READONLY=0.  Note that READONLY=0 does not override
            the host system file permission settings for the underlying AWS or
            HET file.  If the AWS or HET file is marked read-only, the tape
            will be mounted read-only despite specification of READONLY=0.
            <p>

        <dt><code>RO</code>
        <dt><code>NORING</code>
        <dd><p>
            Specifies that the tape is mounted read-only (without a write
            ring or with the cartridge protect switch set to "write
            protect").  RO and NORING are equivalent to READONLY=1.
            <p>

        <dt><code>RW</code>
        <dt><code>RING</code>
        <dd><p>
            Specifies that the tape should be mounted read-write, if possible.
            RW and RING are equivalent to READONLY=0.  This is the default if
            RO, NORING or READONLY=1 is not specified.  Note that RW and RING
            do not override the host system file permission settings for the
            underlying AWS or HET file.  If the AWS or HET file is marked
            read-only, the tape will be mounted read-only despite specification
            of RW or RING.
            <p>

        <dt><code>DEONIRQ</code>=<em>n</em>
        <dd><p>
            Specifies whether a device end is presented if intervention is
            required during tape motion. A parameter of 1 selects this
            option; a parameter of 0 turns it off.
            <p>

<a name="noautomount"></a>
        <dt><code>NOAUTOMOUNT</code>
        <dd><p>
            Indicates support for guest-initiated automatic tape volume
            mounting is to always be disabled for this tape device.
            <p>
            Automatic guest tape-mount support is automatically globally
            enabled for all virtual (non-SCSI) tape devices by default
            whenever an allowable automount directory is defined via the
            <a href="#AUTOMOUNT">AUTOMOUNT</a> configuration file statement
            or the <code>automount</code> panel command.
            The <code>NOAUTOMOUNT</code> option allows you to specifically
            disable such support for a given device.
            <p>
            The automount feature enables software running in guest operating
            systems to automatically mount, unmount and/or query for themselves
            the host "virtual tape volume" filename mounted on a tape drive,
            via the use of special CCW opcodes (0x4B Set Diagnose and 0xE4
            Sense Id) without any intervention on the part of the Hercules
            operator. An example of such a program for DOS/VSE called
            <code>TMOUNT</code> is provided in the <code>util</code>
            subdirectory of the distributed source code.
            <p>
            This is a sticky option. When specified, automount support for
            the device remains disabled until the option is specifically
            removed via a <code>devinit</code> command <em>without</em> the option
            specified. This means if <code>NOAUTOMOUNT</code> is enabled
            for a device while global automount functionality is currently
            disabled (because no <a href="#AUTOMOUNT">AUTOMOUNT</a> statement
            was specified at Hercules startup), then automount functionality
            remains disabled for the device even should global automount
            functionality be later manually enabled via an
            <code>automount</code> panel command.
            <p>
            When the 0x4B Set Diagnose CCW is used to auto-mount a virtual
            tape volume onto a given tape drive, an absolute (fully-qualified)
            pathname should normally always be specified, but need not be
            if a path relative to the currently defined "default allowable"
            automount directory is used instead.
            <p>
            The default allowable
            automount directory is always the first "allowable" directory
            that was defined, or else the current directory if no allowable
            directories were specifically defined. (There is always a default
            allowable directory whenever any allowable or unallowable automount
            directories are defined.)
            <p>
            Fully-resolved, absolute-full-path filenames are defined as being
            those which, for Windows, have a ':' (colon) in the second
            position or, for other host operating systems (e.g. Linux), have
            a '/' (slash) in the first position. Paths which start with a '.'
            (period) are considered relative paths and will always be appended
            to the currently defined default allowable automount directory,
            before being resolved into fully-qualified paths by the host system.
            (I.e. only fully-resolved absolute pathnames are used in the
            performance of the actual automatic tape volume mount.)
            <p>
            For example, if more than one allowable automount directory is
            defined and the volume wishing to be mounted happens to reside in
            the second one, then a fully-qualified absolute pathname should
            of course be specified (or else one that is relative to the
            default directory which happens to resolve to the desired file).
            <p>
            All attempts to automount host files in a "disallowed"
            directory or any of its subdirectories will be rejected.
            Similarly any attempt to automount a file which is not
            within any "allowable" directory or subdirectory will
            be rejected. An error message is always issued in such cases.
            A message is also issued whenever a successful mount or unmount
            is performed.
            <p>
            A sample guest automount program called <code>TMOUNT</code> for
            the DOS/VSE operating system is provided in the
            <code>util</code> subdirectory of the distributed source code.
        </dl>

<hr width="50%"><p>

<a name="ctca"></a>
<a name="3088"></a>
<dt><em>Channel-to-channel adapters</em>
<dd><p>
    The first argument defines the emulation type, and the remaining
    arguments depend on the chosen emulation type. If the first argument
    is not a recognized emulation type, then the driver will operate as
    in Hercules Version 1, using Willem Konynenberg's vmnet package, as
    described in Axel Schwarzer's
    <a href="http://www.kiyoinc.com/herc3088.html">CTCA 3088</a> document.
    <p>

    The following are the emulation types currently supported:
    <p>

    <dl> <!-- begin emulation types -->

<a name="CTCI"></a>
    <dt><b>CTCI</b> &nbsp; &nbsp; (Channel to Channel link to TCP/IP stack)
    <dd><p>
        A point-to-point IP connection with the TCP/IP stack of the
        driving system on which Hercules is running.  See the
        <a href="herctcp.html">Hercules TCP/IP</a> page for details.
        <p>

        (Note: The CTCI protocol is only for the Linux version of
        Hercules. For Windows, use the below CTCI protocol instead).
        <p>

<p><br>

    <dt><b>CTCI</b>  &nbsp; &nbsp; (Channel to Channel link to Win32 TCP/IP stack)
    <dd><p>
        A modified Win32 version of the CTCI protocol for the Windows
        crowd. Note that the protocol name (CTCI) is the same,
        even though the actual implementation is very different. See Fish's
        <a href="http://www.softdevlabs.com/Hercules/ctci-w32-index.html">CTCI-W32</a>
        page for further details and information.
        <p>

        <dl> <!-- begin CTCI parms -->

        <dt>Required for both Linux and Windows:
        <dd><p>

            <dl> <!-- begin Required for both Linux and Windows -->

                <dt><code><em>guestip</em></code>
                <dd><p>
                    specifies the IP address of the guest operating system
                    running under Hercules.
                    <p>

                <dt><code><em>hostip</em></code>
                <dd><p>
                    specifies the IP address of the host (Linux or Windows) side
                    of the point-to-point link. This may or may not be the same
                    as your system's regular IP address. For Windows, if the
                    host system is configured with DHCP, this should instead be
                    the MAC address of the Ethernet adapter you wish to use to
                    have Hercules communicate with the outside world.
                    <p>

            </dl> <!-- end Required for both Linux and Windows -->

            <p>

        <dt>Optional for Windows:
        <dd><p>
            If these arguments are specified, they must precede the required
            arguments.
            <p>

            <dl> <!-- begin Optional for Windows -->
            <dl> <!-- (begin INDENT) -->

                <dt><code>-k &nbsp;<em>kernel-capture-buffer-size</em></code>
                    <dd>
                <dt><code>-i &nbsp;<em>tuntap32-i/o-buffer-size</em></code>
                    <dd>
                <p>

            </dl> <!-- (end INDENT) -->
            </dl> <!-- end Optional for Windows -->

            <p>
            See Fish's
            <a href="http://www.softdevlabs.com/Hercules/ctci-w32-index.html">CTCI-W32</a>
            page for further details and information.

        <p>

        <dt>Optional for both Linux and Windows:
        <dd><p>
            If these arguments are specified, they must precede the required
            arguments:
            <p>

            <dl> <!-- begin Optional for both Linux and Windows -->

                <dt><code>-n <em>name</em></code> &nbsp;&nbsp; or &nbsp; <code>--dev <em>name</em></code>
                <dd><p>
                    specifies the name of the tunnel device to use.
                    <p>
                    The default
                    for Linux is /dev/net/tun (which is correct for version 2.4
                    and above of the Linux kernel).
                    <p>
                    For Windows, specify the IP address or MAC address of the
                    real Windows adapter to emulate the virtual guest's adapter on.
                    The default is the first adapter found according to Windows'
                    adapter binding order, which may not be the one you want if
                    you have multiple adapters.
                    <p>
                    See
                    <a href="http://www.softdevlabs.com/Hercules/ctci-w32-faq.html#wireless">question #22
                    of the CTCI-W32 F.A.Q. (Frequently Asked Questions)</a>
                    document for more information about adapter binding order, and the
                    <a href="http://www.softdevlabs.com/Hercules/ctci-w32-readme.html#herccfg">CTCI-W32 Configuration</a>
                    web page for general information regarding CTCI-W32 configuration.
                    <p>

                <dt><code>-m <em>MAC address</em></code> &nbsp;&nbsp; or &nbsp; <code>--mac <em>MAC address</em></code>
                <dd><p>
                    where <em>'MAC address'</em> is the optional hardware address for
                    the virtual interface in the format: hh:hh:hh:hh:hh:hh. The default value
                    is '00:00:5E:nn:nn:nn' where the <i>:nn:nn:nn</i> portion is constructed
                    from the last 3 octets of the specified <code><i>guestip</i></code>.
                    <p>

                <dt><code>-s <em>netmask</em></code>
                <dd><p>
                    where <em>netmask</em> is the netmask to use for the
                    automatically added point-to-point route in standard
                    dotted internet noitation (e.g. 255.255.255.0)
                    <p>

                <dt><code>-d</code> &nbsp;&nbsp; or &nbsp; <code>--debug</code>
                <dd><p>
                    specifies that debugging output is to be produced on the
                    Hercules control panel. This should normally be left
                    unspecified.
                    <p>

            </dl> <!-- end Optional for both Linux and Windows -->

        </dl> <!-- end CTCI parms -->

<p><br>

<a name="CTCT"></a>
    <dt><b>CTCT</b> &nbsp; &nbsp; (Channel to Channel Emulation via TCP connection)
    <dd><p>
        An emulated CTCA to another Hercules system.
        This emulation mode appears to the operating system running in
        the Hercules machine as an IBM 3088 Channel to Channel Adapter.
        It provides communication via a TCP connection with another
        instance of the CTCT driver, and is designed to carry TCP/IP
        communications between two guest TCP/IP stacks.
        CTCT may also be used for communication between the client and
        server components of the
        <a href="http://home.comcast.net/~mvsddt/">
        MVS Dynamic Debug Tool</a>.
        <p>
        Four arguments are required:
        <p>

        <dl> <!-- begin CTCT parms -->

        <dt><code><em>lport</em></code>
        <dd><p>
            specifies the local TCP port. This is the TCP port that
            Hercules will listen on for this CTCA.
            <p>

        <dt><code><em>rhost</em></code>
        <dd><p>
            specifies the remote host. This is the name or IP address
            of the remote system that Hercules is running on, not the
            name or IP address of the OS running on that copy of
            Hercules.
            <p>

        <dt><code><em>rport</em></code>
        <dd><p>
            specifies the remote TCP port. The rport parameter on this
            system must match the lport parameter on the remote system,
            and vice versa.
            <p>

        <dt><code><em>bufsize</em></code>
        <dd><p>
            specifies the buffer size for the link. If this link is used
            for IP traffic, this parameter should be more than the MTU
            of the interface definition in the OS.
            <p>

        </dl> <!-- end CTCT parms -->

        <p>

        Note: CTCT only supports IP traffic. Use <a href="#CTCE">CTCE</a>
        to transport general purpose payloads such as NJE, SNA, PVM, etc.
        <p>

<p><br>

<a name="CTCE"></a>
    <dt><b>CTCE</b> &nbsp; &nbsp; (Enhanced Channel to Channel Emulation via TCP connection)
    <dd><p>
        The CTCE device type will emulate a real 3088 Channel to
        Channnel Adapter also for non-IP traffic, enhancing the CTCT
        capabilities. CTCE connections are also based on TCP/IP between
        two (or more) Hercules instances, and requires an even-odd pair
        of port numbers per device side. Only the even port numbers are
        to be configured; the odd numbers are just derived by adding 1
        to the (configured) even port numbers. The socket connection
        pairs cross-connect, the arrows showing the send->receive
        direction :
        <pre>
           x-lport-even -> y-rport-odd
           x-lport-odd  <- y-rport-even
        </pre>

        <p>
        Three arguments are required:
        <p>

        <dl> <!-- begin CTCE parms -->

        <dt><code><em>lport</em></code>
        <dd>is the even TCP/IP port on the local system.

        <dt><code><em>raddress</em></code>
        <dd>is the IP address of the remote system.

        <dt><code><em>rport</em></code>
        <dd>is the even TCP/IP port on the remote system.
        </dl>

        <p>
        The remaining arguments are optional:
        <p>
        <dl>

        <dt><code><em>mtu</em></code>
        <dd>optional mtu buffer size, defaults to 32778

        <dt><code><em>sml</em></code>
        <dd>optional small minimum for mtu, defaults to 8

        </dl> <!-- end CTCE parms -->

        <p>
        A sample CTCE device configuration is shown below:
        <p>
        Hercules PC Host A with IP address 192.168.1.100 :
        <pre>
              0E40  CTCE  30880  192.168.1.200  30880
              0E41  CTCE  30882  192.168.1.200  30882 </pre>
        <p>
        Hercules PC Host B with IP address 192.168.1.200 :
        <pre>
              0E40  CTCE  30880  192.168.1.100  30880
              0E41  CTCE  30882  192.168.1.100  30882 </pre>
        <p>
        CTCE connected Hercules instances can be hosted on either Unix
        or Windows platforms, both sides do not need to be the same.
        <p>

<p><br>

<a name="LCS"></a>
    <dt><b>LCS</b> &nbsp; &nbsp; (LAN Channel Station Emulation)
    <dd><p>
        An emulated Lan Channel Station Adapter.
        This emulation mode appears to the operating system running in
        the Hercules machine as an IBM 8232 LCS device, an IBM 2216
        router, a 3172 running ICP (Interconnect Communications Program),
        the LCS3172 driver of a P/390, or an IBM Open Systems Adapter.
        <p>

        Rather than a point-to-point link, this emulation creates a
        virtual ethernet adapter through which the guest operating system
        running in the Hercules machine can communicate. As such, this
        mode is not limited to TCP/IP traffic, but in fact will handle
        any ethernet frame.
        <p>

        The configuration statement for LCS is as follows:
        <p>

        NOTE: There are no required parameters for the LCS emulation,
        however there are several options that can be specified on the
        config statement:
        <p>

        NOTE: On the MAC OS X Platform, the long option format (--xxx) is not
        supported. Only the short option format (-x : one dash, one letter) should
        be used.
        <p>

        <dl> <!-- begin LCS parms -->

        <dt><code>-n <em>devname</em></code> &nbsp;&nbsp; or &nbsp; <code>--dev <em>devname</em></code>
        <dd><p>
            where <em>devname</em> is:
            <p>

            <dl> <!-- begin 'devname' -->

                <dt>(Linux/Unix)
                <dd><p>
                    the name of the TUN/TAP special character device,
                    normally /dev/net/tun.
                    <p>

                <dt>(Windows)
                <dd><p>
                    is either the IP or MAC address of the driving
                    systems network card. TunTap32 will automatically select
                    the first network card it finds if this option is
                    omitted, this may not be desirable for some users.
                    <p>

             </dl> <!-- end 'devname' -->

            <p>

        <dt><code>-o <em>filename</em></code> &nbsp;&nbsp; or &nbsp; <code>--oat <em>filename</em></code>
        <dd><p>
            where <em>filename</em> specifies the filename of the Address
            Translation file. If this option is specified, the optional
            <code>--mac</code> and <em>guestip</em> entries are ignored in preference to
            statements in the OAT. (See further below for the <a href=#OAT>syntax
            of the OAT file</a>)
            <p>

        <dt><code>-m <em>MAC Address</em></code> &nbsp;&nbsp; or &nbsp; <code>--mac <em>MAC address</em></code>
        <dd><p>
            where <em>MAC Address</em> is the optional hardware address of
            the interface in the format: hh:hh:hh:hh:hh:hh. If you use the
            <code>--oat</code> option, do not specify an address here.
            <p>

        <dt><code><em>guestip</em></code>
        <dd><p>
            is an optional IP address of the Hercules
            (guest OS) side. Note: This is only used to
            establish a point-to-point routing table entry
            on driving system. If you use the <code>--oat</code> option,
            do not specify an address here.
            <p>

        <a name="OAT"></a>
        <dt><b>OAT file syntax</b>
        <dd><p>
            The syntax for the Address Translation file is as follows:
            <p>
<table border=1 cellpadding=10><tr><td>
<pre><code>
*********************************************************
* Dev   Mode  Port  Entry specific information...       *
*********************************************************

  0400  IP    00    PRI  172.021.003.032
  0402  IP    00    SEC  172.021.003.033
  0404  IP    00    NO   172.021.003.038
  0406  IP    01    NO   172.021.002.016
  040E  SNA   00

HWADD  00  02:00:FE:DF:00:42
HWADD  01  02:00:FE:DF:00:43

ROUTE  00  172.021.003.032  255.255.255.224
</code></pre>
</td></tr></table>
            <p>

            <dl> <!-- begin LCS OATFILE parms -->
            <dt>where:
            <dd><p>
                <dl> <!-- (begin INDENT) -->
                    <dt><code><em>Dev</em></code>
                    <dd>is the base device address
                        <p>

                    <dt><code><em>Mode</em></code>
                    <dd>is the operation mode: IP or SNA.
                        <p>
                        <i><b>Note:</b> &nbsp;the SNA operation mode is NOT currently implemented.</i>
                        <p>

                    <dt><code><em>Port</em></code>
                    <dd>is the virtual (relative) adapter number.
                        <p>
                </dl> <!-- (end INDENT) -->
            </dl> <!-- end LCS OATFILE parms -->

            <p>

            For IP modes, the entry specific information is as follows:
            <p>

            <dl> <!-- begin IP Mode parms -->
            <dl> <!-- (begin INDENT) -->

                <dt><code>PRI &#124; SEC &#124; NO</code>
                <dd><p>
                    specifies where a packet with an unknown IP
                    address is forwarded to. PRI is the primary
                    default entry, SEC specifies the entry to use
                    when the primary is not available, and NO
                    specifies that this is not a default entry.
                    <p>

                <dt><code><em>nnn.nnn.nnn.nnn</code></em>
                <dd><p>
                    specifies the home IP address

            </dl> <!-- (end INDENT) -->
            </dl> <!-- end IP Mode parms -->
            <p>

            When the operation mode is IP, specify only the even (read)
            device number <em>dev</em>. The odd (write) address will be
            create automatically.
            <p>

            <i><b>Note:</b> &nbsp;the SNA operation mode is NOT currently implemented.</i>
            <p>

            Additionally, two other statements may be included in the
            address translation file. The HWADD and ROUTE statements:

            <p>
            <dl> <!-- begin HWADD and ROUTE -->
            <dl> <!-- (begin INDENT) -->

                <dt><code>HWADD &nbsp;pp <i>&nbsp;hh:hh:hh:hh:hh:hh</i></code>
                <dd><p>
                    Use the HWADD to specify a hardware (MAC) address for a
                    virtual adapter. The first parameter after HWADD specifies
                    with relative adapter for which the address is applied.

                    <p>

                <dt><code>ROUTE &nbsp;pp <i>&nbsp;nnn.nnn.nnn.nnn &nbsp;...</i></code>
                <dd><p>
                    The ROUTE statement is included for convenience. This allows the
                    hercifc program to create a network route for this specified
                    virtual adapter. Please note that it is not necessary to include
                    point-to-point routes for each IP address in the table. This is
                    done automatically by the emulation module.

                    <p>

            </dl> <!-- (end INDENT) -->
            </dl> <!-- end HWADD and ROUTE -->

            The read/write devices can be swapped by coding the odd address
            of the even-odd pair in the OAT
            <p>

            Up to 4 virtual (relative) adapters 00-03 are currently supported.

        </dl> <!-- end LCS parms -->

        <p>

        If no Address Translation file is specified, the emulation module
        will create the following:
        <p>

        <ul>
            <li>An ethernet adapter (port 0) for TCP/IP traffic only.
            <li>Two device addresses will be defined (devnum and devnum + 1).
        </ul>
        <p>

    </dl> <!-- end emulation types -->
    <p>

<hr width="50%"><p>

<a name="3380"></a>
<a name="ckddasd"></a>
<dt><em>CKD DASD devices</em>
<dd><p>
    The argument specifies the name of a file containing the disk CKD
    DASD image or the INET address of a <a href="shared.html">Hercules shared device server</a>.
    <p>

    The file consists of a 512-byte device header record
    followed by fixed length track images.  The length of each track
    image depends on the emulated device type, and is always rounded
    up to the next multiple of 512 bytes.
    <p>

    Volumes larger than 2GB (for example, the 3390 model 3)
    can be supported by spreading the data across more than one file.
    Each file contains a whole number of cylinders.  The first file
    (which contains cylinders 0-2518 in the case of a 3390) usually
    has _1 as the last two characters of its name.  The ckddasd driver
    allocates the remaining files by replacing the last character of
    the file name by the characters 2, 3, etc.
    <p>

    <em><b>Note:</b> &nbsp;When CKD DASD images are spread across multiple files, you must
    specify only the first file name (the file with suffix _1) in the
    configuration statement.</em>
    <p>

    If your operating system supports <i>large file sizes</i> (or
    <i>64-bit offsets</i>) then volumes larger than 2G can be kept
    in a single file.
    <p>

    Alternatively, the argument may specify the name of a file containing
    a compressed CKD DASD image.  The CKD driver will automatically detect
    whether the file contains a regular CKD image or a compressed CKD
    image.
    <p>

    Refer to "Creating an empty DASD volume" in the "Creating, formatting,
    and loading DASD volumes" section of the
    <a href="hercload.html">Creating DASD</a>
    web page for information on using the 'dasdinit' command/utility to
    create compressed dasd files. Refer to the
    <a href="cckddasd.html">Compressed Dasd Emulation</a>
    page for details on the actual CCKD emulation itself and additional
    information on the <a href="cckddasd.html#cckdcommand">CCKD</a>
    initialization/tuning control file statement.
    <p>

    If you specify an INET address, the format is:
    <p>

    <dl> <!-- begin INET parms -->
    <dt><code><em>ip-name-or-addr</em>:<em>port</em>:<em>devnum</em></code>
    <dd><p>
        <em>ip-name-or-addr</em> specifies the internet name or address
        where the <a href="shared.html">Hercules shared device server</a> is running.
        <p>

        <em>port</em> specifies the port number the shared device server
        is listening on.  If omitted, the default is 3990.
        <p>

        <em>devnum</em> specifies the device number on the shared
        device server.  If omitted, the default is the current device number.
        <p>

    </dl> <!-- end INET parms -->
    <p>


    In addition to the above, some additional optional arguments are also
    supported.
    <p>

    <dl> <!-- begin (CKD) additional DASD arguments -->

    <dt><code>sf=<em>shadow-file-name</em></code>
    <dd><p>
        A shadow file contains all the changes made to the emulated dasd since
        it was created, until the next shadow file is created. The moment of the
        shadow file's creation can be thought of as a snapshot of the current
        emulated dasd at that time, because if the shadow file is later removed,
        then the emulated dasd reverts back to the state it was at when the snapshot
        was taken.
        <p>

        Using shadow files, you can keep the base file on a read-only device such
        as cdrom, or change the base file attributes to read-only, ensuring that
        this file can never be corrupted.
        <p>

        Hercules console commands are provided to add a new shadow file, remove
        the current shadow file (with or without backward merge), compress the
        current shadow file, and display the shadow file status and statistics
        <p>

        For detailed information regarding shadow files and their use, please
        see the "<a href="cckddasd.html#shadowfiles">Shadow Files</a>" section
        of the <a href="cckddasd.html">Compressed Dasd Emulation</a> web page.
        <p>

    <dt><code>[no]syncio</code>
    <dd><p>
        syncio enables possible 'synchronous' i/o. This is a dasd i/o feature
        wherein guest i/o requests are completed "synchronously" during the
        actual emulated execution of the SIO/SSCH (start-i/o / start subchannel)
        instruction rather than being deferred and executed asynchronously in
        a separate device i/o thread.
        <p>

        Only i/o which are known to be able to be completed without actually
        needing to perform any actual host i/o are completed synchronously (e.g.
        whenever the data being requested is found to already be in cache). If
        the requested data is not found in the cache, then an actual host i/o
        will need to be done and the request is passed to a device i/o thread
        to be completed asyncronously instead.
        <p>

        syncio is the default for ckd. syncio statistics may be displayed via
        the Hercules <code>syncio</code> panel command.
        <p>

        <!-- No longer applicable with current versions of Linux
        <b>Note:</b> If you plan on using syncio with <b>Linux/390</b> and/or <b>zLinux</b>
        you might also want to take a look at the <a href="#IODELAY">IODELAY</a>
        configuration file statement as well.
        <p>
        -->

        <p>
        <code>syncio</code> may be abbreviated as
        <code>syio</code>
        <p>

    <dt><code>readonly</code>
    <dd><p>
        readonly returns "write inhibited" sense when a write is attempted.
        Note that not all of the sense bits may be getting set absolutely
        correctly however. (Some people have reported getting different
        error messages under Hercules than a real machine, but it really
        hasn't been an issue for a while now.)
        <p>
        <code>readonly</code> may be abbreviated as
        <code>rdonly</code> or <code>ro</code>
        <p>

    <dt><code>fakewrite</code>
    <dd><p>
        fakewrite is a kludge for the readonly sense problem mentioned above.
        Here the disk is not intended to be updated (MVS updates the DSCB
        last referenced field for a readonly file) and any writes appear to
        be successful even though nothing actually gets written.
        <p>
        <code>fakewrite</code> may be abbreviated as
        <code>fakewrt</code> or <code>fw</code>
        <p>

    <dt><code>[no]lazywrite</code>
    <dt><code>[no]fulltrackio</code>
    <dd><p>
        These options have been deprecated. They are still accepted, but they
        do absolutely nothing.
        <p>
        <code>fulltrackio</code> may be abbreviated as
        <code>fulltrkio</code> or <code>ftio</code>
        <p>

    <dt><code>cu=<em>type</em></code>
    <dd><p>
        Specifies the type of control unit to which this device is attached.
        The use of this parameter does not necessarily imply that
        all functions of the specified control unit are emulated,
        its only purpose is to force a particular control unit type
        to be indicated in the data returned by SENSE ID and similar CCW's.
        <p>
        The default value depends on the device type:
        <p>
            <table border=1 cellpadding=3>
            <tr align="center"><th>Device type</th><th>Default CU type</dev></th></tr>
            <tr align="center"><td>2311</td><td>2841</td></tr>
            <tr align="center"><td>2314</td><td>2314</td></tr>
            <tr align="center"><td>3330 3340<br>3350 3375<br>3380</td><td>3880</td></tr>
            <tr align="center"><td>3390</td><td>3990</td></tr>
            <tr align="center"><td>9345</td><td>9343</td></tr>
            </table>
        <p>
        Other values which may be specified are:
        3990-3 and 3990-6.
        <p>
        Normally the default value is appropriate and this parameter need
        not be specified.
        <p>

    </dl> <!-- end (CKD) additional DASD arguments  -->
    <p>

<hr width="50%"><p>

<a name="3370"></a>
<a name="fbadasd"></a>
<dt><em>FBA DASD devices</em>
<dd><p>
    The argument specifies the name of a file which contains the FBA
    DASD image or the INET address of a <a href="shared.html">Hercules shared device server</a>.
    <p>

    The file consists of fixed length 512-byte records,
    each of which represents one physical block of the emulated disk.
    <p>

    To allow access to a minidisk within a full-pack FBA DASD image
    file, two additional arguments may be specified after the file
    name:
    <p>

    <dl> <!-- begin FBA DASD arguments -->

    <dt><code><em>origin</em></code>
    <dd><p>
        specifies the relative block number within the DASD image
        file at which the minidisk begins.  The number must be less
        than the number of blocks in the file.  The default origin
        is zero.
        <p>

    <dt><code><em>numblks</em></code>
    <dd><p>
        specifies the number of 512-byte blocks in the minidisk.
        This number must not exceed the number of blocks in the file
        minus the origin.
        If omitted, or if specified as an asterisk, then the minidisk
        continues to the end of the DASD image file.
        <p>

    </dl> <!-- end FBA DASD arguments -->
    <p>

    If you specify an INET address the format is:
    <p>

    <dl> <!-- begin INET parms -->

    <dt><code><em>ip-name-or-addr</em>:<em>port</em>:<em>devnum</em></code>
    <dd><p>

        <em>ip-name-or-addr</em> specifies the internet name or address
        where the <a href="shared.html">Hercules shared device server</a> is running.
        <p>

        <em>port</em> specifies the port number the shared device server
        is listening on.  If omitted, the default is 3990.
        <p>

        <em>devnum</em> specifies the device number on the shared
        device server.  If omitted, the default is the current device number.

    </dl> <!-- end INET parms -->
    <p>

    In addition to the above, some additional optional arguments are also
    supported.
    <p>

    <dl> <!-- begin (FBA) additional DASD arguments -->

    <dt><code>sf=<em>shadow-file-name</em></code>
    <dd><p>
        The handling of shadow files for FBA devices is identical as that for
        CKD devices. Please refer to the preceding CKD section for information
        regarding use of the <code>sf=</code> shadow file option.
        <p>

    <dt><code>[no]syncio</code>
    <dd><p>
        syncio enables possible 'synchronous' i/o and is explained in detail in
        the preceding CKD dasd section. Note however that syncio is currently
        disabled by default for FBA dasd due to an as yet unresolved problem
        and must therefore be specifically enabled if you wish to use it for FBA
        dasd.
        <p>

        <p>
        <code>syncio</code> may be abbreviated as
        <code>syio</code>

    </dl> <!-- end (FBA) additional DASD arguments  -->
    <p>

<hr width="50%"><p>

<a name="comline"></a>
<dt><em>Communication Line - BSC</em>
<dd><p>
    ( Preliminary 2703 BSC Support )
    <p>

    Describes a BSC emulation line entry to either link 2 Hercules engines
    or a custom made program emulating a 2780, 3780 or 3x74, or a custom made
    program interfacing to a real BSC line.
    <p>

    The communication is emulated over a TCP connection. All bytes are
    transfered as-is (except for doubling DLE in transparent mode) just
    like it would over a real BSC link. Emulated EIA (DCD, DTR, CTS,
    etc..) or X.21/V.11 leads (C, T, etc..) are treated differently depending
    on the DIAL option selected.
    <p>

    The line emulates a point-to-point BSC link. There is no point-to-multipoint handling.
    <p>

    The following options define the line emulation behaviour:
    <p>

    <dl> <!-- begin Communication Adapter parms -->

    <dt><code>DIAL=IN &#124; OUT &#124; INOUT &#124; NO</code>
    <dd><p>
        Specifies call direction (if any). If <code>DIAL=NO</code> is specified, the
        TCP outgoing connection is attempted as soon as an 'ENABLE' CCW is executed.
        Also, in this mode, an incoming connection will always be accepted. If <code>DIAL=IN&#124;INOUT</code>
        is specified, a TCP incoming call is accepted ONLY if an 'ENABLE' CCW is currently
        executing on the device. If <code>DIAL=OUT</code>, the 'ENABLE' CCW is rejected.
        When <code>DIAL=IN&#124;INOUT</code> is specified, a DIAL CCW allows the application
        to establish a TCP connection to a specific host. For other DIAL values,
        the DIAL CCW is rejected.
        <p>

    <dt><code>lhost=<em>hostname</em> &#124; <em>ip address</em> &#124; *</code>
    <dd><p>
        Specifies which IP address to listen on. This also conditions the network
        interface from which incoming calls will be accepted. Specifying '*' means
        all incoming TCP calls are accepted, regardless of the destination IP
        address or call origin. This is the default value. Specifying a specific
        IP address when <code>DIAL=OUT</code> is specified has no effect.
        <p>

    <dt><code>lport=<em>service name</em> &#124; <em>port number</em></code>
    <dd><p>
        Specifies the TCP port for which to listen to incoming TCP calls. This
        value is mandatory for <code>DIAL=IN&#124;INOUT&#124;NO</code>. It is ignored for <code>DIAL=OUT</code>.
        <p>

    <dt><code>rhost=<em>hostname</em> &#124; <em>ip address</em></code>
    <dt><code>rport=<em>service name</em> &#124; <em>port number</em></code>
    <dd><p>
        Specifies the remote host and port to which to direct a TCP connection on a
        DIAL=NO line when an 'ENABLE' CCW is executed. This option is mandatory when <code>DIAL=NO</code>
        is specified. It is ignored for other <code>DIAL</code> values.
        <p>

    </dl> <!-- end Communication Adapter parms -->

    The following options are tuning options. In most cases, using the default values
    give the best results
    <p>

    <dl> <!-- begin Communication Adapter tuning options -->

    <dt><code>rto=0 &#124; -1 &#124; <em>nnn</em> &#124; 3000</code>
    <dd><p>
        Specifies the number of milliseconds before terminating a read on a timeout, when
        no read termination control character is received. Specifying 0 means the READ ends
        immediately. -1 specifies there is no timeout.
        <p>

    <dt><code>pto=0 &#124; -1 &#124; <em>nnn</em> &#124; 3000</code>
    <dd><p>
        Specifies the number of milliseconds before terminating a POLL on a timeout, when
        no ACK or NACK sequence is received. Specifying 0 means the POLL ends
        immediately. -1 specifies there is no timeout.
        <p>

    <dt><code>eto=0 &#124; -1 &#124; <em>nnn</em> &#124; 10000</code>
    <dd><p>
        Specifies the number of milliseconds before terminating an ENABLE operation on a timeout.
        the timeout applies when <code>DIAL=NO&#124;IN&#124;INOUT</code> is specified, the outgoing TCP call
        fails (<code>DIAL=NO</code>) and there is no previously or currently established TCP connection
        for this line. When <code>DIAL=NO</code> is specified, the timeout defaults to 10 seconds.
        For <code>DIAL=IN&#124;INOUT</code>, the timeout defaults to -1.
        <p>

    </dl> <!-- end Communication Adapter tuning options -->

<a name="remtty"></a>
<dt><em>Communication Line - TTY</em>
<dd><p>
    ( Preliminary 2703 TELE2 TTY Support )
    <p>

    Describes a 2703 Telegraph Terminal Control Type II (TTY 33/35) stop/start line, providing access to the Host OS via a standard TELNET client.

    <p>
    To the host OS the line emulates an asynchronous TELE2 connection.  The communication is emulated over a TELNET connection.
    <p>

    The following options define the line emulation behaviour:
    <p>

    <dl> <!-- begin Communication Adapter parms -->

    <dt><code>lport=<em>port number</em></code>
    <dd><p>
        Specifies the TCPIP port to listen on for incoming TCP calls.
        <p>

    <dt><code>dial=IN</code>
    <dd><p>
        Specifies that this line is for in-bound calls. Required.
        <p>

    <dt><code>tty=1</code>
    <dd><p>
        Specifies that this definition is for a TTY port. Required
        <p>

    </dl> <!-- end Communication Adapter parms -->


</dl> <!-- end Arguments for each device type -->

<center><hr width=15% noshade></center>
<p>

If you have a question about Hercules, see the
<a href="hercfaq.html">Hercules Frequently-Asked Questions</a> page.

<p><center><hr width=15% noshade>
<a href="hercinst.html"><img src="images/back.gif" border=0 alt="back"></a>
</center>
<p class="lastupd">Last updated $Date$ $Revision$</p>
</BODY>
</HTML>