[0001]
[0002]
[0003]
[0004]
[0005]
[0006]
[0007]
[0008]
[0009]
[0010]
[0011]
[0012]
[0013]
[0014]
[0015]
[0016]
[0017]
[0018]
[0019]
[0020]
[0021]
[0022]
[0023]
[0024]
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
[0035]
[0036]
[0037]
[0038]
[0039]
[0040]
[0041]
[0042]
[0043]
[0044]
[0045]
[0046]
[0047]
[0048]
[0049]
[0050]
[0051]
[0052]
[0053]
[0054]
[0055]
[0056]
[0057]
[0058]
[0059]
[0060]
[0061]
[0062]
[0063]
[0064]
[0065]
[0066]
[0067]
[0068]
[0069]
[0070]
[0071]
[0072]
[0073]
[0074]
[0075]
[0076]
[0077]
[0078]
[0079]
[0080]
[0081]
[0082]
[0083]
[0084]
[0085]
[0086]
[0087]
[0088]
[0089]
[0090]
[0091]
[0092]
[0093]
[0094]
[0095]
[0096]
[0097]
[0098]
[0099]
[0100]
[0101]
[0102]
[0103]
[0104]
[0105]
[0106]
[0107]
[0108]
[0109]
[0110]
[0111]
[0112]
[0113]
[0114]
[0115]
[0116]
[0117]
[0118]
[0119]
[0120]
[0121]
[0122]
[0123]
[0124]
[0125]
[0126]
[0127]
[0128]
[0129]
[0130]
[0131]
[0132]
[0133]
[0134]
[0135]
[0136]
[0137]
[0138]
[0139]
[0140]
[0141]
[0142]
[0143]
[0144]
[0145]
[0146]
[0147]
[0148]
[0149]
[0150]
[0151]
[0152]
[0153]
[0154]
[0155]
[0156]
[0157]
[0158]
[0159]
[0160]
[0161]
[0162]
[0163]
[0164]
[0165]
[0166]
[0167]
[0168]
[0169]
[0170]
[0171]
[0172]
[0173]
[0174]
[0175]
[0176]
[0177]
[0178]
[0179]
[0180]
[0181]
[0182]
[0183]
[0184]
[0185]
[0186]
[0187]
[0188]
[0189]
[0190]
[0191]
[0192]
[0193]
[0194]
[0195]
[0196]
[0197]
[0198]
[0199]
[0200]
[0201]
[0202]
[0203]
[0204]
[0205]
[0206]
[0207]
[0208]
[0209]
[0210]
[0211]
[0212]
[0213]
[0214]
[0215]
[0216]
[0217]
[0218]
[0219]
[0220]
[0221]
[0222]
[0223]
[0224]
[0225]
[0226]
[0227]
[0228]
[0229]
[0230]
[0231]
[0232]
[0233]
[0234]
[0235]
[0236]
[0237]
[0238]
[0239]
[0240]
[0241]
[0242]
[0243]
[0244]
[0245]
[0246]
[0247]
[0248]
[0249]
[0250]
[0251]
[0252]
[0253]
[0254]
[0255]
[0256]
[0257]
[0258]
[0259]
[0260]
[0261]
[0262]
[0263]
[0264]
[0265]
[0266]
[0267]
[0268]
[0269]
[0270]
[0271]
[0272]
[0273]
[0274]
[0275]
[0276]
[0277]
[0278]
[0279]
[0280]
[0281]
[0282]
[0283]
[0284]
[0285]
[0286]
[0287]
[0288]
[0289]
[0290]
[0291]
[0292]
[0293]
[0294]
[0295]
[0296]
[0297]
[0298]
[0299]
[0300]
[0301]
[0302]
[0303]
[0304]
[0305]
[0306]
[0307]
[0308]
[0309]
[0310]
[0311]
[0312]
[0313]
[0314]
[0315]
[0316]
[0317]
[0318]
[0319]
[0320]
[0321]
[0322]
[0323]
[0324]
[0325]
[0326]
[0327]
[0328]
[0329]
[0330]
[0331]
[0332]
[0333]
[0334]
[0335]
[0336]
[0337]
[0338]
[0339]
[0340]
[0341]
[0342]
[0343]
[0344]
[0345]
[0346]
[0347]
[0348]
[0349]
[0350]
[0351]
[0352]
[0353]
[0354]
[0355]
[0356]
[0357]
[0358]
[0359]
[0360]
[0361]
[0362]
[0363]
[0364]
[0365]
[0366]
[0367]
[0368]
[0369]
[0370]
[0371]
[0372]
[0373]
[0374]
[0375]
[0376]
[0377]
[0378]
[0379]
[0380]
[0381]
[0382]
[0383]
[0384]
[0385]
[0386]
[0387]
[0388]
[0389]
[0390]
[0391]
[0392]
[0393]
[0394]
[0395]
[0396]
[0397]
[0398]
[0399]
[0400]
[0401]
[0402]
[0403]
[0404]
[0405]
[0406]
[0407]
[0408]
[0409]
[0410]
[0411]
[0412]
[0413]
[0414]
[0415]
[0416]
[0417]
[0418]
[0419]
[0420]
[0421]
[0422]
[0423]
[0424]
[0425]
[0426]
[0427]
[0428]
[0429]
[0430]
[0431]
[0432]
[0433]
[0434]
[0435]
[0436]
[0437]
[0438]
[0439]
[0440]
[0441]
[0442]
[0443]
[0444]
[0445]
[0446]
[0447]
[0448]
[0449]
[0450]
[0451]
[0452]
[0453]
[0454]
[0455]
[0456]
[0457]
[0458]
[0459]
[0460]
[0461]
[0462]
[0463]
[0464]
[0465]
[0466]
[0467]
[0468]
[0469]
[0470]
[0471]
[0472]
[0473]
[0474]
[0475]
[0476]
[0477]
[0478]
[0479]
[0480]
[0481]
[0482]
[0483]
[0484]
[0485]
[0486]
[0487]
[0488]
[0489]
[0490]
[0491]
[0492]
[0493]
[0494]
[0495]
[0496]
[0497]
[0498]
[0499]
[0500]
[0501]
[0502]
[0503]
[0504]
[0505]
[0506]
[0507]
[0508]
[0509]
[0510]
[0511]
[0512]
[0513]
[0514]
[0515]
[0516]
[0517]
[0518]
[0519]
[0520]
[0521]
[0522]
[0523]
[0524]
[0525]
[0526]
[0527]
[0528]
[0529]
[0530]
[0531]
[0532]
[0533]
[0534]
[0535]
[0536]
[0537]
[0538]
[0539]
[0540]
[0541]
[0542]
[0543]
[0544]
[0545]
[0546]
[0547]
[0548]
[0549]
[0550]
[0551]
[0552]
[0553]
[0554]
[0555]
[0556]
[0557]
[0558]
[0559]
[0560]
[0561]
[0562]
[0563]
[0564]
[0565]
[0566]
[0567]
[0568]
[0569]
[0570]
[0571]
[0572]
[0573]
[0574]
[0575]
[0576]
[0577]
[0578]
[0579]
[0580]
[0581]
[0582]
[0583]
[0584]
[0585]
[0586]
[0587]
[0588]
[0589]
[0590]
[0591]
[0592]
[0593]
[0594]
[0595]
[0596]
[0597]
[0598]
[0599]
[0600]
[0601]
[0602]
[0603]
[0604]
[0605]
[0606]
[0607]
[0608]
[0609]
[0610]
[0611]
[0612]
[0613]
[0614]
[0615]
[0616]
[0617]
[0618]
[0619]
[0620]
[0621]
[0622]
[0623]
[0624]
[0625]
[0626]
[0627]
[0628]
[0629]
[0630]
[0631]
[0632]
[0633]
[0634]
[0635]
[0636]
[0637]
[0638]
[0639]
[0640]
[0641]
[0642]
[0643]
[0644]
[0645]
[0646]
[0647]
[0648]
[0649]
[0650]
[0651]
[0652]
[0653]
[0654]
[0655]
[0656]
[0657]
[0658]
[0659]
[0660]
[0661]
[0662]
[0663]
[0664]
[0665]
[0666]
[0667]
[0668]
[0669]
[0670]
[0671]
[0672]
[0673]
[0674]
[0675]
[0676]
[0677]
[0678]
[0679]
[0680]
[0681]
[0682]
[0683]
[0684]
[0685]
[0686]
[0687]
[0688]
[0689]
[0690]
[0691]
[0692]
[0693]
[0694]
[0695]
[0696]
[0697]
[0698]
[0699]
[0700]
[0701]
[0702]
[0703]
[0704]
[0705]
[0706]
[0707]
[0708]
[0709]
[0710]
[0711]
[0712]
[0713]
[0714]
[0715]
[0716]
[0717]
[0718]
[0719]
[0720]
[0721]
[0722]
[0723]
[0724]
[0725]
[0726]
[0727]
[0728]
[0729]
[0730]
[0731]
[0732]
[0733]
[0734]
[0735]
[0736]
[0737]
[0738]
[0739]
[0740]
[0741]
[0742]
[0743]
[0744]
[0745]
[0746]
[0747]
[0748]
[0749]
[0750]
[0751]
[0752]
[0753]
[0754]
[0755]
[0756]
[0757]
[0758]
[0759]
[0760]
[0761]
[0762]
[0763]
[0764]
[0765]
[0766]
[0767]
[0768]
[0769]
[0770]
[0771]
[0772]
[0773]
[0774]
[0775]
[0776]
[0777]
[0778]
[0779]
[0780]
[0781]
[0782]
[0783]
[0784]
[0785]
[0786]
[0787]
[0788]
[0789]
[0790]
[0791]
[0792]
[0793]
[0794]
[0795]
[0796]
[0797]
[0798]
[0799]
[0800]
[0801]
[0802]
[0803]
[0804]
[0805]
[0806]
[0807]
[0808]
[0809]
[0810]
[0811]
[0812]
[0813]
[0814]
[0815]
[0816]
[0817]
[0818]
[0819]
[0820]
[0821]
[0822]
[0823]
[0824]
[0825]
[0826]
[0827]
[0828]
[0829]
[0830]
[0831]
[0832]
[0833]
[0834]
[0835]
[0836]
[0837]
[0838]
[0839]
[0840]
[0841]
[0842]
[0843]
[0844]
[0845]
[0846]
[0847]
[0848]
[0849]
[0850]
[0851]
[0852]
[0853]
[0854]
[0855]
[0856]
[0857]
[0858]
[0859]
[0860]
[0861]
[0862]
[0863]
[0864]
[0865]
[0866]
[0867]
[0868]
[0869]
[0870]
[0871]
[0872]
[0873]
[0874]
[0875]
[0876]
[0877]
[0878]
[0879]
[0880]
[0881]
[0882]
[0883]
[0884]
[0885]
[0886]
[0887]
[0888]
[0889]
[0890]
[0891]
[0892]
[0893]
[0894]
[0895]
[0896]
[0897]
[0898]
[0899]
[0900]
[0901]
[0902]
[0903]
[0904]
[0905]
[0906]
[0907]
[0908]
[0909]
[0910]
[0911]
[0912]
[0913]
[0914]
[0915]
[0916]
[0917]
[0918]
[0919]
[0920]
[0921]
[0922]
[0923]
[0924]
[0925]
[0926]
[0927]
[0928]
[0929]
[0930]
[0931]
[0932]
[0933]
[0934]
[0935]
[0936]
[0937]
[0938]
[0939]
[0940]
[0941]
[0942]
[0943]
[0944]
[0945]
[0946]
[0947]
[0948]
[0949]
[0950]
[0951]
[0952]
[0953]
[0954]
[0955]
[0956]
[0957]
[0958]
[0959]
[0960]
[0961]
[0962]
[0963]
[0964]
[0965]
[0966]
[0967]
[0968]
[0969]
[0970]
[0971]
[0972]
[0973]
[0974]
[0975]
[0976]
[0977]
[0978]
[0979]
[0980]
[0981]
[0982]
[0983]
[0984]
[0985]
[0986]
[0987]
[0988]
[0989]
[0990]
[0991]
[0992]
[0993]
[0994]
[0995]
[0996]
[0997]
[0998]
[0999]
[1000]
[1001]
[1002]
[1003]
[1004]
[1005]
[1006]
[1007]
[1008]
[1009]
[1010]
[1011]
[1012]
[1013]
[1014]
[1015]
[1016]
[1017]
[1018]
[1019]
[1020]
[1021]
[1022]
[1023]
[1024]
[1025]
[1026]
[1027]
[1028]
[1029]
[1030]
[1031]
[1032]
[1033]
[1034]
[1035]
[1036]
[1037]
[1038]
[1039]
[1040]
[1041]
[1042]
[1043]
[1044]
[1045]
[1046]
[1047]
[1048]
[1049]
[1050]
[1051]
[1052]
[1053]
[1054]
[1055]
[1056]
[1057]
[1058]
[1059]
[1060]
[1061]
[1062]
[1063]
[1064]
[1065]
[1066]
[1067]
[1068]
[1069]
[1070]
[1071]
[1072]
[1073]
[1074]
[1075]
[1076]
[1077]
[1078]
[1079]
[1080]
[1081]
[1082]
[1083]
[1084]
[1085]
[1086]
[1087]
[1088]
[1089]
[1090]
[1091]
[1092]
[1093]
[1094]
[1095]
[1096]
[1097]
[1098]
[1099]
[1100]
[1101]
[1102]
[1103]
[1104]
[1105]
[1106]
[1107]
[1108]
[1109]
[1110]
[1111]
[1112]
[1113]
[1114]
[1115]
[1116]
[1117]
[1118]
[1119]
[1120]
[1121]
[1122]
[1123]
[1124]
[1125]
[1126]
[1127]
[1128]
[1129]
[1130]
[1131]
[1132]
[1133]
[1134]
[1135]
[1136]
[1137]
[1138]
[1139]
[1140]
[1141]
[1142]
[1143]
[1144]
[1145]
[1146]
[1147]
[1148]
[1149]
[1150]
[1151]
[1152]
[1153]
[1154]
[1155]
[1156]
[1157]
[1158]
[1159]
[1160]
[1161]
[1162]
[1163]
[1164]
[1165]
[1166]
[1167]
[1168]
[1169]
[1170]
[1171]
[1172]
[1173]
[1174]
[1175]
[1176]
[1177]
[1178]
[1179]
[1180]
[1181]
[1182]
[1183]
[1184]
[1185]
[1186]
[1187]
[1188]
[1189]
[1190]
[1191]
[1192]
[1193]
[1194]
[1195]
[1196]
[1197]
[1198]
[1199]
[1200]
[1201]
[1202]
[1203]
[1204]
[1205]
[1206]
[1207]
[1208]
[1209]
[1210]
[1211]
[1212]
[1213]
[1214]
[1215]
[1216]
[1217]
[1218]
[1219]
[1220]
[1221]
[1222]
[1223]
[1224]
[1225]
[1226]
[1227]
[1228]
[1229]
[1230]
[1231]
[1232]
[1233]
[1234]
[1235]
[1236]
[1237]
[1238]
[1239]
[1240]
[1241]
[1242]
[1243]
[1244]
[1245]
[1246]
[1247]
[1248]
[1249]
[1250]
[1251]
[1252]
[1253]
[1254]
[1255]
[1256]
[1257]
[1258]
[1259]
[1260]
[1261]
[1262]
[1263]
[1264]
[1265]
[1266]
[1267]
[1268]
[1269]
[1270]
[1271]
[1272]
[1273]
[1274]
[1275]
[1276]
[1277]
[1278]
[1279]
[1280]
[1281]
[1282]
[1283]
[1284]
[1285]
[1286]
[1287]
[1288]
[1289]
[1290]
[1291]
[1292]
[1293]
[1294]
[1295]
[1296]
[1297]
[1298]
[1299]
[1300]
[1301]
[1302]
[1303]
[1304]
[1305]
[1306]
[1307]
[1308]
[1309]
[1310]
[1311]
[1312]
[1313]
[1314]
[1315]
[1316]
[1317]
[1318]
[1319]
[1320]
[1321]
[1322]
[1323]
[1324]
[1325]
[1326]
[1327]
[1328]
[1329]
[1330]
[1331]
[1332]
[1333]
[1334]
[1335]
[1336]
[1337]
[1338]
[1339]
[1340]
[1341]
[1342]
[1343]
[1344]
[1345]
[1346]
[1347]
[1348]
[1349]
[1350]
[1351]
[1352]
[1353]
[1354]
[1355]
[1356]
[1357]
[1358]
[1359]
[1360]
[1361]
[1362]
[1363]
[1364]
[1365]
[1366]
[1367]
[1368]
[1369]
[1370]
[1371]
[1372]
[1373]
[1374]
[1375]
[1376]
[1377]
[1378]
[1379]
[1380]
[1381]
[1382]
[1383]
[1384]
[1385]
[1386]
[1387]
[1388]
[1389]
[1390]
[1391]
[1392]
[1393]
[1394]
[1395]
[1396]
[1397]
[1398]
[1399]
[1400]
[1401]
[1402]
[1403]
[1404]
[1405]
[1406]
[1407]
[1408]
[1409]
[1410]
[1411]
[1412]
[1413]
[1414]
[1415]
[1416]
[1417]
[1418]
[1419]
[1420]
[1421]
[1422]
[1423]
[1424]
[1425]
[1426]
[1427]
[1428]
[1429]
[1430]
[1431]
[1432]
[1433]
[1434]
[1435]
[1436]
[1437]
[1438]
[1439]
[1440]
[1441]
[1442]
[1443]
[1444]
[1445]
[1446]
[1447]
[1448]
[1449]
[1450]
[1451]
[1452]
[1453]
[1454]
[1455]
[1456]
[1457]
[1458]
[1459]
[1460]
[1461]
[1462]
[1463]
[1464]
[1465]
[1466]
[1467]
[1468]
[1469]
[1470]
[1471]
[1472]
[1473]
[1474]
[1475]
[1476]
[1477]
[1478]
[1479]
[1480]
[1481]
[1482]
[1483]
[1484]
[1485]
[1486]
[1487]
[1488]
[1489]
[1490]
[1491]
[1492]
[1493]
[1494]
[1495]
[1496]
[1497]
[1498]
[1499]
[1500]
[1501]
[1502]
[1503]
[1504]
[1505]
[1506]
[1507]
[1508]
[1509]
[1510]
[1511]
[1512]
[1513]
[1514]
[1515]
[1516]
[1517]
[1518]
[1519]
[1520]
[1521]
[1522]
[1523]
[1524]
[1525]
[1526]
[1527]
[1528]
[1529]
[1530]
[1531]
[1532]
[1533]
[1534]
[1535]
[1536]
[1537]
[1538]
[1539]
[1540]
[1541]
[1542]
[1543]
[1544]
[1545]
[1546]
[1547]
[1548]
[1549]
[1550]
[1551]
[1552]
[1553]
[1554]
[1555]
[1556]
[1557]
[1558]
[1559]
[1560]
[1561]
[1562]
[1563]
[1564]
[1565]
[1566]
[1567]
[1568]
[1569]
[1570]
[1571]
[1572]
[1573]
[1574]
[1575]
[1576]
[1577]
[1578]
[1579]
[1580]
[1581]
[1582]
[1583]
[1584]
[1585]
[1586]
[1587]
[1588]
[1589]
[1590]
[1591]
[1592]
[1593]
[1594]
[1595]
[1596]
[1597]
[1598]
[1599]
[1600]
[1601]
[1602]
[1603]
[1604]
[1605]
[1606]
[1607]
[1608]
[1609]
[1610]
[1611]
[1612]
[1613]
[1614]
[1615]
[1616]
[1617]
[1618]
[1619]
[1620]
[1621]
[1622]
[1623]
[1624]
[1625]
[1626]
[1627]
[1628]
[1629]
[1630]
[1631]
[1632]
[1633]
[1634]
[1635]
[1636]
[1637]
[1638]
[1639]
[1640]
[1641]
[1642]
[1643]
[1644]
[1645]
[1646]
[1647]
[1648]
[1649]
[1650]
[1651]
[1652]
[1653]
[1654]
[1655]
[1656]
[1657]
[1658]
[1659]
[1660]
[1661]
[1662]
[1663]
[1664]
[1665]
[1666]
[1667]
[1668]
[1669]
[1670]
[1671]
[1672]
[1673]
[1674]
[1675]
[1676]
[1677]
[1678]
[1679]
[1680]
[1681]
[1682]
[1683]
[1684]
[1685]
[1686]
[1687]
[1688]
[1689]
[1690]
[1691]
[1692]
[1693]
[1694]
[1695]
[1696]
[1697]
[1698]
[1699]
[1700]
[1701]
[1702]
[1703]
[1704]
[1705]
[1706]
[1707]
[1708]
[1709]
[1710]
[1711]
[1712]
[1713]
[1714]
[1715]
[1716]
[1717]
[1718]
[1719]
[1720]
[1721]
[1722]
[1723]
[1724]
[1725]
[1726]
[1727]
[1728]
[1729]
[1730]
[1731]
[1732]
[1733]
[1734]
[1735]
[1736]
[1737]
[1738]
[1739]
[1740]
[1741]
[1742]
[1743]
[1744]
[1745]
[1746]
[1747]
[1748]
[1749]
[1750]
[1751]
[1752]
[1753]
[1754]
[1755]
[1756]
[1757]
[1758]
[1759]
[1760]
[1761]
[1762]
[1763]
[1764]
[1765]
[1766]
[1767]
[1768]
[1769]
[1770]
[1771]
[1772]
[1773]
[1774]
[1775]
[1776]
[1777]
[1778]
[1779]
[1780]
[1781]
[1782]
[1783]
[1784]
[1785]
[1786]
[1787]
[1788]
[1789]
[1790]
[1791]
[1792]
[1793]
[1794]
[1795]
[1796]
[1797]
[1798]
[1799]
[1800]
[1801]
[1802]
[1803]
[1804]
[1805]
[1806]
[1807]
[1808]
[1809]
[1810]
[1811]
[1812]
[1813]
[1814]
[1815]
[1816]
[1817]
[1818]
[1819]
[1820]
[1821]
[1822]
[1823]
[1824]
[1825]
[1826]
[1827]
[1828]
[1829]
[1830]
[1831]
[1832]
[1833]
[1834]
[1835]
[1836]
[1837]
[1838]
[1839]
[1840]
[1841]
[1842]
[1843]
[1844]
[1845]
[1846]
[1847]
[1848]
[1849]
[1850]
[1851]
[1852]
[1853]
[1854]
[1855]
[1856]
[1857]
[1858]
[1859]
[1860]
[1861]
[1862]
[1863]
[1864]
[1865]
[1866]
[1867]
[1868]
[1869]
[1870]
[1871]
[1872]
[1873]
[1874]
[1875]
[1876]
[1877]
[1878]
[1879]
[1880]
[1881]
[1882]
[1883]
[1884]
[1885]
[1886]
[1887]
[1888]
[1889]
[1890]
[1891]
[1892]
[1893]
[1894]
[1895]
[1896]
[1897]
[1898]
[1899]
[1900]
[1901]
[1902]
[1903]
[1904]
[1905]
[1906]
[1907]
[1908]
[1909]
[1910]
[1911]
[1912]
[1913]
[1914]
[1915]
[1916]
[1917]
[1918]
[1919]
[1920]
[1921]
[1922]
[1923]
[1924]
[1925]
[1926]
[1927]
[1928]
[1929]
[1930]
[1931]
[1932]
[1933]
[1934]
[1935]
[1936]
[1937]
[1938]
[1939]
[1940]
[1941]
[1942]
[1943]
[1944]
[1945]
[1946]
[1947]
[1948]
[1949]
[1950]
[1951]
[1952]
[1953]
[1954]
[1955]
[1956]
[1957]
[1958]
[1959]
[1960]
[1961]
[1962]
[1963]
[1964]
[1965]
[1966]
[1967]
[1968]
[1969]
[1970]
[1971]
[1972]
[1973]
[1974]
[1975]
[1976]
[1977]
[1978]
[1979]
[1980]
[1981]
[1982]
[1983]
[1984]
[1985]
[1986]
[1987]
[1988]
[1989]
[1990]
[1991]
[1992]
[1993]
[1994]
[1995]
[1996]
[1997]
[1998]
[1999]
[2000]
[2001]
[2002]
[2003]
[2004]
[2005]
[2006]
[2007]
[2008]
[2009]
[2010]
[2011]
[2012]
[2013]
[2014]
[2015]
[2016]
[2017]
[2018]
[2019]
[2020]
[2021]
[2022]
[2023]
[2024]
[2025]
[2026]
[2027]
[2028]
[2029]
[2030]
[2031]
[2032]
[2033]
[2034]
[2035]
[2036]
[2037]
[2038]
[2039]
[2040]
[2041]
[2042]
[2043]
[2044]
[2045]
[2046]
[2047]
[2048]
[2049]
[2050]
[2051]
[2052]
[2053]
[2054]
[2055]
[2056]
[2057]
[2058]
[2059]
[2060]
[2061]
[2062]
[2063]
[2064]
[2065]
[2066]
[2067]
[2068]
[2069]
[2070]
[2071]
[2072]
[2073]
[2074]
[2075]
[2076]
[2077]
[2078]
[2079]
[2080]
[2081]
[2082]
[2083]
[2084]
[2085]
[2086]
[2087]
[2088]
[2089]
[2090]
[2091]
[2092]
[2093]
[2094]
[2095]
[2096]
[2097]
[2098]
[2099]
[2100]
[2101]
[2102]
[2103]
[2104]
[2105]
[2106]
[2107]
[2108]
[2109]
[2110]
[2111]
[2112]
[2113]
[2114]
[2115]
[2116]
[2117]
[2118]
[2119]
[2120]
[2121]
[2122]
[2123]
[2124]
[2125]
[2126]
[2127]
[2128]
[2129]
[2130]
[2131]
[2132]
[2133]
[2134]
[2135]
[2136]
[2137]
[2138]
[2139]
[2140]
[2141]
[2142]
[2143]
[2144]
[2145]
[2146]
[2147]
[2148]
[2149]
[2150]
[2151]
[2152]
[2153]
[2154]
[2155]
[2156]
[2157]
[2158]
[2159]
[2160]
[2161]
[2162]
[2163]
[2164]
[2165]
[2166]
[2167]
[2168]
[2169]
[2170]
[2171]
[2172]
[2173]
[2174]
[2175]
[2176]
[2177]
[2178]
[2179]
[2180]
[2181]
[2182]
[2183]
[2184]
[2185]
[2186]
[2187]
[2188]
[2189]
[2190]
[2191]
[2192]
[2193]
[2194]
[2195]
[2196]
[2197]
[2198]
[2199]
[2200]
[2201]
[2202]
[2203]
[2204]
[2205]
[2206]
[2207]
[2208]
[2209]
[2210]
[2211]
[2212]
[2213]
[2214]
[2215]
[2216]
[2217]
[2218]
[2219]
[2220]
[2221]
[2222]
[2223]
[2224]
[2225]
[2226]
[2227]
[2228]
[2229]
[2230]
[2231]
[2232]
[2233]
[2234]
[2235]
[2236]
[2237]
[2238]
[2239]
[2240]
[2241]
[2242]
[2243]
[2244]
[2245]
[2246]
[2247]
[2248]
[2249]
[2250]
[2251]
[2252]
[2253]
[2254]
[2255]
[2256]
[2257]
[2258]
[2259]
[2260]
[2261]
[2262]
[2263]
[2264]
[2265]
[2266]
[2267]
[2268]
[2269]
[2270]
[2271]
[2272]
[2273]
[2274]
[2275]
[2276]
[2277]
[2278]
[2279]
[2280]
[2281]
[2282]
[2283]
[2284]
[2285]
[2286]
[2287]
[2288]
[2289]
[2290]
[2291]
[2292]
[2293]
[2294]
[2295]
[2296]
[2297]
[2298]
[2299]
[2300]
[2301]
[2302]
[2303]
[2304]
[2305]
[2306]
[2307]
[2308]
[2309]
[2310]
[2311]
[2312]
[2313]
[2314]
[2315]
[2316]
[2317]
[2318]
[2319]
[2320]
[2321]
[2322]
[2323]
[2324]
[2325]
[2326]
[2327]
[2328]
[2329]
[2330]
[2331]
[2332]
[2333]
[2334]
[2335]
[2336]
[2337]
[2338]
[2339]
[2340]
[2341]
[2342]
[2343]
[2344]
[2345]
[2346]
[2347]
[2348]
[2349]
[2350]
[2351]
[2352]
[2353]
[2354]
[2355]
[2356]
[2357]
[2358]
[2359]
[2360]
[2361]
[2362]
[2363]
[2364]
[2365]
[2366]
[2367]
[2368]
[2369]
[2370]
[2371]
[2372]
[2373]
[2374]
[2375]
[2376]
[2377]
[2378]
[2379]
[2380]
[2381]
[2382]
[2383]
[2384]
[2385]
[2386]
[2387]
[2388]
[2389]
[2390]
[2391]
[2392]
[2393]
[2394]
[2395]
[2396]
[2397]
[2398]
[2399]
[2400]
[2401]
[2402]
[2403]
[2404]
[2405]
[2406]
[2407]
[2408]
[2409]
[2410]
[2411]
[2412]
[2413]
[2414]
[2415]
[2416]
[2417]
[2418]
[2419]
[2420]
[2421]
[2422]
[2423]
[2424]
[2425]
[2426]
[2427]
[2428]
[2429]
[2430]
[2431]
[2432]
[2433]
[2434]
[2435]
[2436]
[2437]
[2438]
[2439]
[2440]
[2441]
[2442]
[2443]
[2444]
[2445]
[2446]
[2447]
[2448]
[2449]
[2450]
[2451]
[2452]
[2453]
[2454]
[2455]
[2456]
[2457]
[2458]
[2459]
[2460]
[2461]
[2462]
[2463]
[2464]
[2465]
[2466]
[2467]
[2468]
[2469]
[2470]
[2471]
[2472]
[2473]
[2474]
[2475]
[2476]
[2477]
[2478]
[2479]
[2480]
[2481]
[2482]
[2483]
[2484]
[2485]
[2486]
[2487]
[2488]
[2489]
[2490]
[2491]
[2492]
[2493]
[2494]
[2495]
[2496]
[2497]
[2498]
[2499]
[2500]
[2501]
[2502]
[2503]
[2504]
[2505]
[2506]
[2507]
[2508]
[2509]
[2510]
[2511]
[2512]
[2513]
[2514]
[2515]
[2516]
[2517]
[2518]
[2519]
[2520]
[2521]
[2522]
[2523]
[2524]
[2525]
[2526]
[2527]
[2528]
[2529]
[2530]
[2531]
[2532]
[2533]
[2534]
[2535]
[2536]
[2537]
[2538]
[2539]
[2540]
[2541]
[2542]
[2543]
[2544]
[2545]
[2546]
[2547]
[2548]
[2549]
[2550]
[2551]
[2552]
[2553]
[2554]
[2555]
[2556]
[2557]
[2558]
[2559]
[2560]
[2561]
[2562]
[2563]
[2564]
[2565]
[2566]
[2567]
[2568]
[2569]
[2570]
[2571]
[2572]
[2573]
[2574]
[2575]
[2576]
[2577]
[2578]
[2579]
[2580]
[2581]
[2582]
[2583]
[2584]
[2585]
[2586]
[2587]
[2588]
[2589]
[2590]
[2591]
[2592]
[2593]
[2594]
[2595]
[2596]
[2597]
[2598]
[2599]
[2600]
[2601]
[2602]
[2603]
[2604]
[2605]
[2606]
[2607]
[2608]
[2609]
[2610]
[2611]
[2612]
[2613]
[2614]
[2615]
[2616]
[2617]
[2618]
[2619]
[2620]
[2621]
[2622]
[2623]
[2624]
[2625]
[2626]
[2627]
[2628]
[2629]
[2630]
[2631]
[2632]
[2633]
[2634]
[2635]
[2636]
[2637]
[2638]
[2639]
[2640]
[2641]
[2642]
[2643]
[2644]
[2645]
[2646]
[2647]
[2648]
[2649]
[2650]
[2651]
[2652]
[2653]
[2654]
[2655]
[2656]
[2657]
[2658]
[2659]
[2660]
[2661]
[2662]
[2663]
[2664]
[2665]
[2666]
[2667]
[2668]
[2669]
[2670]
[2671]
[2672]
[2673]
[2674]
[2675]
[2676]
[2677]
[2678]
[2679]
[2680]
[2681]
[2682]
[2683]
[2684]
[2685]
[2686]
[2687]
[2688]
[2689]
[2690]
[2691]
[2692]
[2693]
[2694]
[2695]
[2696]
[2697]
[2698]
[2699]
[2700]
[2701]
[2702]
[2703]
[2704]
[2705]
[2706]
[2707]
[2708]
[2709]
[2710]
[2711]
[2712]
[2713]
[2714]
[2715]
[2716]
[2717]
[2718]
[2719]
[2720]
[2721]
[2722]
[2723]
[2724]
[2725]
[2726]
[2727]
[2728]
[2729]
[2730]
[2731]
[2732]
[2733]
[2734]
[2735]
[2736]
[2737]
[2738]
[2739]
[2740]
[2741]
[2742]
[2743]
[2744]
[2745]
[2746]
[2747]
[2748]
[2749]
[2750]
[2751]
[2752]
[2753]
[2754]
[2755]
[2756]
[2757]
[2758]
[2759]
[2760]
[2761]
[2762]
[2763]
[2764]
[2765]
[2766]
[2767]
[2768]
[2769]
[2770]
[2771]
[2772]
[2773]
[2774]
[2775]
[2776]
[2777]
[2778]
[2779]
[2780]
[2781]
[2782]
[2783]
[2784]
[2785]
[2786]
[2787]
[2788]
[2789]
[2790]
[2791]
[2792]
[2793]
[2794]
[2795]
[2796]
[2797]
[2798]
[2799]
[2800]
[2801]
[2802]
[2803]
[2804]
[2805]
[2806]
[2807]
[2808]
[2809]
[2810]
[2811]
[2812]
[2813]
[2814]
[2815]
[2816]
[2817]
[2818]
[2819]
[2820]
[2821]
[2822]
[2823]
[2824]
[2825]
[2826]
[2827]
[2828]
[2829]
[2830]
[2831]
[2832]
[2833]
[2834]
[2835]
[2836]
[2837]
[2838]
[2839]
[2840]
[2841]
[2842]
[2843]
[2844]
[2845]
[2846]
[2847]
[2848]
[2849]
[2850]
[2851]
[2852]
[2853]
[2854]
[2855]
[2856]
[2857]
[2858]
[2859]
[2860]
[2861]
[2862]
[2863]
[2864]
[2865]
[2866]
[2867]
[2868]
[2869]
[2870]
[2871]
[2872]
[2873]
[2874]
[2875]
[2876]
[2877]
[2878]
[2879]
[2880]
[2881]
[2882]
[2883]
[2884]
[2885]
[2886]
[2887]
[2888]
[2889]
[2890]
[2891]
[2892]
[2893]
[2894]
[2895]
[2896]
[2897]
[2898]
[2899]
[2900]
[2901]
[2902]
[2903]
[2904]
[2905]
[2906]
[2907]
[2908]
[2909]
[2910]
[2911]
[2912]
[2913]
[2914]
[2915]
[2916]
[2917]
[2918]
[2919]
[2920]
[2921]
[2922]
[2923]
[2924]
[2925]
[2926]
[2927]
[2928]
[2929]
[2930]
[2931]
[2932]
[2933]
[2934]
[2935]
[2936]
[2937]
[2938]
[2939]
[2940]
[2941]
[2942]
[2943]
[2944]
[2945]
[2946]
[2947]
[2948]
[2949]
[2950]
[2951]
[2952]
[2953]
[2954]
[2955]
[2956]
[2957]
[2958]
[2959]
[2960]
[2961]
[2962]
[2963]
[2964]
[2965]
[2966]
[2967]
[2968]
[2969]
[2970]
[2971]
[2972]
[2973]
[2974]
[2975]
[2976]
[2977]
[2978]
[2979]
[2980]
[2981]
[2982]
[2983]
[2984]
[2985]
[2986]
[2987]
[2988]
[2989]
[2990]
[2991]
[2992]
[2993]
[2994]
[2995]
[2996]
[2997]
[2998]
[2999]
[3000]
[3001]
[3002]
[3003]
[3004]
[3005]
[3006]
[3007]
[3008]
[3009]
[3010]
[3011]
[3012]
[3013]
[3014]
[3015]
[3016]
[3017]
[3018]
[3019]
[3020]
[3021]
[3022]
[3023]
[3024]
[3025]
[3026]
[3027]
[3028]
[3029]
[3030]
[3031]
[3032]
[3033]
[3034]
[3035]
[3036]
[3037]
[3038]
[3039]
[3040]
[3041]
[3042]
[3043]
[3044]
[3045]
[3046]
[3047]
[3048]
[3049]
[3050]
[3051]
[3052]
[3053]
[3054]
[3055]
[3056]
[3057]
[3058]
[3059]
[3060]
[3061]
[3062]
[3063]
[3064]
[3065]
[3066]
[3067]
[3068]
[3069]
[3070]
[3071]
[3072]
[3073]
[3074]
[3075]
[3076]
[3077]
[3078]
[3079]
[3080]
[3081]
[3082]
[3083]
[3084]
[3085]
[3086]
[3087]
[3088]
[3089]
[3090]
[3091]
[3092]
[3093]
[3094]
[3095]
[3096]
[3097]
[3098]
[3099]
[3100]
[3101]
[3102]
[3103]
[3104]
[3105]
[3106]
[3107]
[3108]
[3109]
[3110]
[3111]
[3112]
[3113]
[3114]
[3115]
[3116]
[3117]
[3118]
[3119]
[3120]
[3121]
[3122]
[3123]
[3124]
[3125]
[3126]
[3127]
[3128]
[3129]
[3130]
[3131]
[3132]
[3133]
[3134]
[3135]
[3136]
[3137]
[3138]
[3139]
[3140]
[3141]
[3142]
[3143]
[3144]
[3145]
[3146]
[3147]
[3148]
[3149]
[3150]
[3151]
[3152]
[3153]
[3154]
[3155]
[3156]
[3157]
[3158]
[3159]
[3160]
[3161]
[3162]
[3163]
[3164]
[3165]
[3166]
[3167]
[3168]
[3169]
[3170]
[3171]
[3172]
[3173]
[3174]
[3175]
[3176]
[3177]
[3178]
[3179]
[3180]
[3181]
[3182]
[3183]
[3184]
[3185]
[3186]
[3187]
[3188]
[3189]
[3190]
[3191]
[3192]
[3193]
[3194]
[3195]
[3196]
[3197]
[3198]
[3199]
[3200]
[3201]
[3202]
[3203]
[3204]
[3205]
[3206]
[3207]
[3208]
[3209]
[3210]
[3211]
[3212]
[3213]
[3214]
[3215]
[3216]
[3217]
[3218]
[3219]
[3220]
[3221]
[3222]
[3223]
[3224]
[3225]
[3226]
[3227]
[3228]
[3229]
[3230]
[3231]
[3232]
[3233]
[3234]
[3235]
[3236]
[3237]
[3238]
[3239]
[3240]
[3241]
[3242]
[3243]
[3244]
[3245]
[3246]
[3247]
[3248]
[3249]
[3250]
[3251]
[3252]
[3253]
[3254]
[3255]
[3256]
[3257]
[3258]
[3259]
[3260]
[3261]
[3262]
[3263]
[3264]
[3265]
[3266]
[3267]
[3268]
[3269]
[3270]
[3271]
[3272]
[3273]
[3274]
[3275]
[3276]
[3277]
[3278]
[3279]
[3280]
[3281]
[3282]
[3283]
[3284]
[3285]
[3286]
[3287]
[3288]
[3289]
[3290]
[3291]
[3292]
[3293]
[3294]
[3295]
[3296]
[3297]
[3298]
[3299]
[3300]
[3301]
[3302]
[3303]
[3304]
[3305]
[3306]
[3307]
[3308]
[3309]
[3310]
[3311]
[3312]
[3313]
[3314]
[3315]
[3316]
[3317]
[3318]
[3319]
[3320]
[3321]
[3322]
[3323]
[3324]
[3325]
[3326]
[3327]
[3328]
[3329]
[3330]
[3331]
[3332]
[3333]
[3334]
[3335]
[3336]
[3337]
[3338]
[3339]
[3340]
[3341]
[3342]
[3343]
[3344]
[3345]
[3346]
[3347]
[3348]
[3349]
[3350]
[3351]
[3352]
[3353]
[3354]
[3355]
[3356]
[3357]
[3358]
[3359]
[3360]
[3361]
[3362]
[3363]
[3364]
[3365]
[3366]
[3367]
[3368]
[3369]
[3370]
[3371]
[3372]
[3373]
[3374]
[3375]
[3376]
[3377]
[3378]
[3379]
[3380]
[3381]
[3382]
[3383]
[3384]
[3385]
[3386]
[3387]
[3388]
[3389]
[3390]
[3391]
[3392]
[3393]
[3394]
[3395]
[3396]
[3397]
[3398]
[3399]
[3400]
[3401]
[3402]
[3403]
[3404]
[3405]
[3406]
[3407]
[3408]
[3409]
[3410]
[3411]
[3412]
[3413]
[3414]
[3415]
[3416]
[3417]
[3418]
[3419]
[3420]
[3421]
[3422]
[3423]
[3424]
[3425]
[3426]
[3427]
[3428]
[3429]
[3430]
[3431]
[3432]
[3433]
[3434]
[3435]
[3436]
[3437]
[3438]
[3439]
[3440]
[3441]
[3442]
[3443]
[3444]
[3445]
[3446]
[3447]
[3448]
[3449]
[3450]
[3451]
[3452]
[3453]
[3454]
[3455]
[3456]
[3457]
[3458]
[3459]
[3460]
[3461]
[3462]
[3463]
[3464]
[3465]
[3466]
[3467]
[3468]
[3469]
[3470]
[3471]
[3472]
[3473]
[3474]
[3475]
[3476]
[3477]
[3478]
[3479]
[3480]
[3481]
[3482]
[3483]
[3484]
[3485]
[3486]
[3487]
[3488]
[3489]
[3490]
[3491]
[3492]
[3493]
[3494]
[3495]
[3496]
[3497]
[3498]
[3499]
[3500]
[3501]
[3502]
[3503]
[3504]
[3505]
[3506]
[3507]
[3508]
[3509]
[3510]
[3511]
[3512]
[3513]
[3514]
[3515]
[3516]
[3517]
[3518]
[3519]
[3520]
[3521]
[3522]
[3523]
[3524]
[3525]
[3526]
[3527]
[3528]
[3529]
[3530]
[3531]
[3532]
[3533]
[3534]
[3535]
[3536]
[3537]
[3538]
[3539]
[3540]
[3541]
[3542]
[3543]
[3544]
[3545]
[3546]
[3547]
[3548]
[3549]
[3550]
[3551]
[3552]
[3553]
[3554]
[3555]
[3556]
[3557]
[3558]
[3559]
[3560]
[3561]
[3562]
[3563]
[3564]
[3565]
[3566]
[3567]
[3568]
[3569]
[3570]
[3571]
[3572]
[3573]
[3574]
[3575]
[3576]
[3577]
[3578]
[3579]
[3580]
[3581]
[3582]
[3583]
[3584]
[3585]
[3586]
[3587]
[3588]
[3589]
[3590]
[3591]
[3592]
[3593]
[3594]
[3595]
[3596]
[3597]
[3598]
[3599]
[3600]
[3601]
[3602]
[3603]
[3604]
[3605]
[3606]
[3607]
[3608]
[3609]
[3610]
[3611]
[3612]
[3613]
[3614]
[3615]
[3616]
[3617]
[3618]
[3619]
[3620]
[3621]
[3622]
[3623]
[3624]
[3625]
[3626]
[3627]
[3628]
[3629]
[3630]
[3631]
[3632]
[3633]
[3634]
[3635]
[3636]
[3637]
[3638]
[3639]
[3640]
[3641]
[3642]
[3643]
[3644]
[3645]
[3646]
[3647]
[3648]
[3649]
[3650]
[3651]
[3652]
[3653]
[3654]
[3655]
[3656]
[3657]
[3658]
[3659]
[3660]
[3661]
[3662]
[3663]
[3664]
[3665]
[3666]
[3667]
[3668]
[3669]
[3670]
[3671]
[3672]
[3673]
[3674]
[3675]
[3676]
[3677]
[3678]
[3679]
[3680]
[3681]
[3682]
[3683]
[3684]
[3685]
[3686]
[3687]
[3688]
[3689]
[3690]
[3691]
[3692]
[3693]
[3694]
[3695]
[3696]
[3697]
[3698]
[3699]
[3700]
[3701]
[3702]
[3703]
[3704]
[3705]
[3706]
[3707]
[3708]
[3709]
[3710]
[3711]
[3712]
[3713]
[3714]
[3715]
[3716]
[3717]
[3718]
[3719]
[3720]
[3721]
[3722]
[3723]
[3724]
[3725]
[3726]
[3727]
[3728]
[3729]
[3730]
[3731]
[3732]
[3733]
[3734]
[3735]
[3736]
[3737]
[3738]
[3739]
[3740]
[3741]
[3742]
[3743]
[3744]
[3745]
[3746]
[3747]
[3748]
[3749]
[3750]
[3751]
[3752]
[3753]
[3754]
[3755]
[3756]
[3757]
[3758]
[3759]
[3760]
[3761]
[3762]
[3763]
[3764]
[3765]
[3766]
[3767]
[3768]
[3769]
[3770]
[3771]
[3772]
[3773]
[3774]
[3775]
[3776]
[3777]
[3778]
[3779]
[3780]
[3781]
[3782]
[3783]
[3784]
[3785]
[3786]
[3787]
[3788]
[3789]
[3790]
[3791]
[3792]
[3793]
[3794]
[3795]
[3796]
[3797]
[3798]
[3799]
[3800]
[3801]
[3802]
[3803]
[3804]
[3805]
[3806]
[3807]
[3808]
[3809]
[3810]
[3811]
[3812]
[3813]
[3814]
[3815]
[3816]
[3817]
[3818]
[3819]
[3820]
[3821]
[3822]
[3823]
[3824]
[3825]
[3826]
[3827]
[3828]
[3829]
[3830]
[3831]
[3832]
[3833]
[3834]
[3835]
[3836]
[3837]
[3838]
[3839]
[3840]
[3841]
[3842]
[3843]
[3844]
[3845]
[3846]
[3847]
[3848]
[3849]
[3850]
[3851]
[3852]
[3853]
[3854]
[3855]
[3856]
[3857]
[3858]
[3859]
[3860]
[3861]
[3862]
[3863]
[3864]
[3865]
[3866]
[3867]
[3868]
[3869]
[3870]
[3871]
[3872]
[3873]
[3874]
[3875]
[3876]
[3877]
[3878]
[3879]
[3880]
[3881]
[3882]
[3883]
[3884]
[3885]
[3886]
[3887]
[3888]
[3889]
[3890]
[3891]
[3892]
[3893]
[3894]
[3895]
[3896]
[3897]
[3898]
[3899]
[3900]
[3901]
[3902]
[3903]
[3904]
[3905]
[3906]
[3907]
[3908]
[3909]
[3910]
[3911]
[3912]
[3913]
[3914]
[3915]
[3916]
[3917]
[3918]
[3919]
[3920]
[3921]
[3922]
[3923]
[3924]
[3925]
[3926]
[3927]
[3928]
[3929]
[3930]
[3931]
[3932]
[3933]
[3934]
[3935]
[3936]
[3937]
[3938]
[3939]
[3940]
[3941]
[3942]
[3943]
[3944]
[3945]
[3946]
[3947]
[3948]
[3949]
[3950]
[3951]
[3952]
[3953]
[3954]
[3955]
[3956]
[3957]
[3958]
[3959]
[3960]
[3961]
[3962]
[3963]
[3964]
[3965]
[3966]
[3967]
[3968]
[3969]
[3970]
[3971]
[3972]
[3973]
[3974]
[3975]
[3976]
[3977]
[3978]
[3979]
[3980]
[3981]
[3982]
[3983]
[3984]
[3985]
[3986]
[3987]
[3988]
[3989]
[3990]
[3991]
[3992]
[3993]
[3994]
[3995]
[3996]
[3997]
[3998]
[3999]
[4000]
[4001]
[4002]
[4003]
[4004]
[4005]
[4006]
[4007]
[4008]
[4009]
[4010]
[4011]
[4012]
[4013]
[4014]
[4015]
[4016]
[4017]
[4018]
[4019]
[4020]
[4021]
[4022]
[4023]
[4024]
[4025]
[4026]
[4027]
[4028]
[4029]
[4030]
[4031]
[4032]
[4033]
[4034]
[4035]
[4036]
[4037]
[4038]
[4039]
[4040]
[4041]
[4042]
[4043]
[4044]
[4045]
[4046]
[4047]
[4048]
[4049]
[4050]
[4051]
[4052]
[4053]
[4054]
[4055]
[4056]
[4057]
[4058]
[4059]
[4060]
[4061]
[4062]
[4063]
[4064]
[4065]
[4066]
[4067]
[4068]
[4069]
[4070]
[4071]
[4072]
[4073]
[4074]
[4075]
[4076]
[4077]
[4078]
[4079]
[4080]
[4081]
[4082]
[4083]
[4084]
[4085]
[4086]
[4087]
[4088]
[4089]
[4090]
[4091]
[4092]
[4093]
[4094]
[4095]
[4096]
[4097]
[4098]
[4099]
[4100]
[4101]
[4102]
[4103]
[4104]
[4105]
[4106]
[4107]
[4108]
[4109]
[4110]
[4111]
[4112]
[4113]
[4114]
[4115]
[4116]
[4117]
[4118]
[4119]
[4120]
[4121]
[4122]
[4123]
[4124]
[4125]
[4126]
[4127]
[4128]
[4129]
[4130]
[4131]
[4132]
[4133]
[4134]
[4135]
[4136]
[4137]
[4138]
[4139]
[4140]
[4141]
[4142]
[4143]
[4144]
[4145]
[4146]
[4147]
[4148]
[4149]
[4150]
[4151]
[4152]
[4153]
[4154]
[4155]
[4156]
[4157]
[4158]
[4159]
[4160]
[4161]
[4162]
[4163]
[4164]
[4165]
[4166]
[4167]
[4168]
[4169]
[4170]
[4171]
[4172]
[4173]
[4174]
[4175]
[4176]
[4177]
[4178]
[4179]
[4180]
[4181]
[4182]
[4183]
[4184]
[4185]
[4186]
[4187]
[4188]
[4189]
[4190]
[4191]
[4192]
[4193]
[4194]
[4195]
[4196]
[4197]
[4198]
[4199]
[4200]
[4201]
[4202]
[4203]
[4204]
[4205]
[4206]
[4207]
[4208]
[4209]
[4210]
[4211]
[4212]
[4213]
[4214]
[4215]
[4216]
[4217]
[4218]
[4219]
[4220]
[4221]
[4222]
[4223]
[4224]
[4225]
[4226]
[4227]
[4228]
[4229]
[4230]
[4231]
[4232]
[4233]
[4234]
[4235]
[4236]
[4237]
[4238]
[4239]
[4240]
[4241]
[4242]
[4243]
[4244]
[4245]
[4246]
[4247]
[4248]
[4249]
[4250]
[4251]
[4252]
[4253]
[4254]
[4255]
[4256]
[4257]
[4258]
[4259]
[4260]
[4261]
[4262]
[4263]
[4264]
[4265]
[4266]
[4267]
[4268]
[4269]
[4270]
[4271]
[4272]
[4273]
[4274]
[4275]
[4276]
[4277]
[4278]
[4279]
[4280]
[4281]
[4282]
[4283]
[4284]
[4285]
[4286]
[4287]
[4288]
[4289]
[4290]
[4291]
[4292]
[4293]
[4294]
[4295]
[4296]
[4297]
[4298]
[4299]
[4300]
[4301]
[4302]
[4303]
[4304]
[4305]
[4306]
[4307]
[4308]
[4309]
[4310]
[4311]
[4312]
[4313]
[4314]
[4315]
[4316]
<!DOCTYPE html>
<!-- WASDOC AXP-2.0.0 (CGILIB AXP-1.9.9) -->
<!-- wasDOC Copyright (C) 2019,2020 Mark G.Daniel - Apache-2.0 licenced -->
<!--  3-NOV-2021 02:50 -->
<noscript>NOTE: SOME FUNCTIONALITY EMPLOYS JAVASCRIPT</noscript>
<div id="erreport1" style="display:none;"></div>
<script>
function errorReport(string) {
   for (var cnt = 1; cnt <= 2; cnt++) {
      var err = document.getElementById('erreport'+cnt);
      err.style.display = 'block';
      err.innerHTML += string;
   }
}
</script>
<style type="text/css">
html { font-family: arial, verdana, sans-serif; font-size:12pt; margin:1em; }
h1 { font-size:124%; font-style:bold;
     margin-top:1em; margin-bottom:0.5em; }
h2 { font-size:120%; font-style:bold;
     margin-top:1.1em; margin-bottom:0.4em; }
h3 { font-size:116%; font-style:bold;
     margin-top:1.0em; margin-bottom:0.3em; }
h4 { font-size:112%; font-style:bold;
     margin-top:1.1em; margin-bottom:0.3em; }
h5 { font-size:112%; font-style:bold; 
     margin-top:1.1em; margin-bottom:0.3em; }
h6 { font-size:112%; font-style:bold; padding:0; margin:0; }

h1 .text { text-decoration:underline; }
h1 .numb { padding-right:0.8em; }
h1 .numb:empty { display:none; padding-right:0; }
h2 .numb { padding-right:0.8em; }
h2 .numb:empty { display:none; padding-right:0; }
h3 .numb { padding-right:0.8em; }
h3 .numb:empty { display:none; padding-right:0; }
h4 .numb { padding-right:0.8em; }
h4 .numb:empty { display:none; padding-right:0; }
h5 .numb { display:none; padding-right:0; }
h6 .numb { display:none; padding-right:0; }

kbd { font-family:monospace; }

noscript { font-size:1.2em; }

p { line-height:1.1em; margin-top:1em; margin-bottom:1em; }

.chunk { font-size:130%; text-decoration:underline; }
.head {}
.high {}
.bold { font-weight:bold; }
.center { text-align:center; }
.italic { font-style:italic; }
.left { text-align:left; }
.nowrap { white-space:nowrap; }
.prewrap { white-space:pre; }
.right { text-align:right; }
.strike { text-decoration:line-through; }
.under { text-decoration:underline; }

.backlight { background-color:#f2f2f2; }
.display0 { display:none; }

img { max-width:100%; }
.imglink { }

.link { }
.blank { }

.list { margin-bottom:1em; }
.list li { margin-top:0.5em; }
.list0 li { margin-top:0; }
.item {}

.tabl { border-collapse:collapse; text-align:left; margin:0.4em 2em 0.5em 2em; }
.tabu { border-collapse:collapse; text-align:right; margin:0.4em 2em 0.5em 2em; }

.tabr { vertical-align:top; }
.tabh { padding:0.2em 0 0 2em; margin:0; }
.tabd { padding:0.1em 0 0 2em; margin:0; }
.tabh:first-of-type, td:first-of-type { padding-left:0; }

.tabu .tabh,
.tabu .tabd { border:1px solid gray; padding:0.2em 0.3em 0.2em 0.3em; }
.tab0 { border:none; visibility:hidden; max-width:1em; 
        white-space:nowrap; overflow:hidden; }

.tabauto { margin-left:auto; margin-right:auto; }

.tabr:empty { height:0.2em; }
.tabu .tabh:empty, .tabu .tabd:empty { border:none; visibility:hidden; }

.error { font-size:110%; color:black; background-color:yellow;
         font-family:sans-serif; font-weight:bold; font-style:normal;
         width:95%; border:solid 1px gray; padding:0.5em 1em 0.5em 1em; }
.error::before { content:'\026a0\00a0'; }
.image { }
.page { width:98%; border:1px dashed gray; margin:1.5em 0 1.8em 0; }
.epage { width:98%; border:1px dashed black; margin:1.5em 0 1.8em 0; }
.monosp { font-family:monospace; }
.ppage { display:none; }
.simple { list-style-type:none; }
.valtop { vertical-align:top; }
.valmid { vertical-align:middle; }
.valbot { vertical-align:bottom; }

.code { border-style:solid; border-width:0 0 0 1px; padding-left:1em;
        font-family:monospace; white-space:pre; }
.block { }
.blockof { margin:0.4em 2em 0.5em 2em; }
.example { border-style:dashed; border-width:0 0 0 1px; padding-left:1em;
           margin-top:0.5em; margin-bottom:0.5em; white-space:pre; }
.indent { margin-left:2em; margin-right:2em; }
.noindent { margin-left:0; margin-right:0; }
.inblock { display:inline-block; }
.mono { white-space:pre; font-family:monospace; }
.note { margin:0.4em 2em 0.5em 2em; page-break-inside:avoid; }
.note h5 { margin-top:0 }
.note_hr { width:80%; border:1px solid gray; }
.prop { padding-left:1em; margin-top:0.5em; margin-bottom:0.5em; }
.quote { border-style:dashed; border-width:0 0 0 1px; padding-left:1em;
         margin-top:0.5em; margin-bottom:0.5em; }
.this { display:none; }

a:link,a:visited { color:black; text-decoration:none; }
a:hover,a:active { text-decoration:underline; }
a:focus { outline:0; } 

:target:before { content:''; display:block; height:0.1em; margin:-0.1em; }
a.link:link, a.link:visited,a.link:active 
{ color:midnightBlue; text-decoration:underline; text-decoration-style:solid; }

.TOC1cols1 { width:80%; max-width:80%; }
.TOC1cols2 { column-count:2; width:80%; max-width:80%; }
.TOC1cols3 { column-count:3; max-width:90%; max-width:90%; }
.TOC1cols4 { column-count:4; max-width:100%; max-width:100%; }
.TOC1table { margin-left:2em; white-space:nowrap; break-inside:auto; }
.TOC1table tr { vertical-align:top; text-align:left; break-inside:avoid; break-after:auto; }
.TOC1table td+td { padding:0 0 0 0.5em; }
.TOC1table .numb { width:3em; max-width:3em; }
.TOC1table .sepr { width:5em; max-width:6em; overflow:hidden; }
.TOC1table .majr { font-weight:bold; }
.TOC1table .text { white-space:normal; }

/* These are due to Firefox (at least <= 76) recalcitrant multi-column handling.
   Web search "Split table into css columns, issue in Firefox" (stackoverflow).
   "Good grief, Charlie Brown!" */
 
.TOC1cols2 table,
.TOC1cols2 tbody,
.TOC1cols2 tr,
.TOC1cols3 table,
.TOC1cols3 tbody,
.TOC1cols3 tr,
.TOC1cols4 table,
.TOC1cols4 tbody,
.TOC1cols4 tr { display:block; padding:0; }

.TOC2cols1 { width:60%; max-width:60%; }
.TOC2cols2 { column-count:2; width:70%; max-width:70%; }
.TOC2cols3 { column-count:3; width:80%; max-width:80%; }
.TOC2cols4 { column-count:4; width:90%; max-width:90%; }
.TOC2table { margin-left:2em; white-space:nowrap; break-inside:auto; }
.TOC2table tr { vertical-align:top; text-align:left; break-inside:avoid; break-after:auto; }
.TOC2table .numb { font-weight:bold; padding-right:0.5em; }
.TOC2table .text { width:100%; white-space:normal; }

/* see "recalcitrant" above */
.TOC2cols2 table,
.TOC2cols2 tbody,
.TOC2cols2 tr,
.TOC2cols3 table,
.TOC2cols3 tbody,
.TOC2cols3 tr,
.TOC2cols4 table,
.TOC2cols4 tbody,
.TOC2cols4 tr { display:block; padding:0; }

.NAVtable { margin:0.1em 0 0 2em; }
.NAVtable td { font-size:110%; font-weight:bold; padding:0; margin:0; }
.NAVtable a { padding:0 0.5em 0 0.5em; text-decoration:none; }

.IDXcols1 { width:80%; max-width:80%; }
.IDXcols2 { column-count:2; width:90%; max-width:90%; }
.IDXcols3 { column-count:3; width:95%; max-width:95%;  }
.IDXcols4 { column-count:4; width:100%; max-width:100%;  }
.IDXtable { margin:1em 0 1em 2em; white-space:nowrap; break-inside:auto; }
.IDXtable tr { vertical-align:top; text-align:left; break-inside:avoid; break-after:auto; }
.IDXtable .alpha { font-weight:bold; min-width:2em; }
.IDXtable .text  { width:100%; white-space:normal; }
.IDXtable .para:before { content:'\00b6\00a0'; }

/* see "recalcitrant" above */
.IDXcols2 table,
.IDXcols2 tbody,
.IDXcols2 tr,
.IDXcols3 table,
.IDXcols3 tbody,
.IDXcols3 tr,
.IDXcols4 table,
.IDXcols4 tbody,
.IDXcols4 tr { display:block; padding:0; }

.insight { background-color:cyan; font-family:monospace;
           padding:0 0.2em 0 0.2em; margin:0 0.2em 0 0.2em;
           font-size:100%; font-style:normal; font-weight:normal;
           text-decoration:none; }

.wasdoc { font-family: "Lucida Console", Monaco, monospace; 
          letter-spacing:-0.07em; }

@media screen { .blank::after { content:"\2924"; } 
                .print { display:none; }
}

@media print {
   table { page-break-inside:avoid; }
   .noprint { display:none; }
   .page { border:none; page-break-after: always; }
   .epage { display:none; }
   .ppage { page-break-after:always; }
   .NAVtable { display:none; }
   .NAVprint { display:block!important; }
}

@page { margin:2cm 1cm 2cm 1cm;  }
</style>
<!-- source:0000_env.wasdoc -->

<style type="text/css">._smiley::after { font-size:150%; vertical-align:middle; content:'\263a' }</style>
<style type="text/css">._frowny::after { font-size:150%; vertical-align:middle; content:'\2639' }</style>

<a id="0." href="#"></a>
<a id="0.0.0.0.1" href="#"></a>
<a id="0.wasdwebenvironment" href="#"></a>
<a id="wasdwebenvironment" href="#"></a>
<h1 class="head" style="font-size:140%;"><span class="text">WASD Web Environment</span></h1>

<p> For version 12.0 release of WASD VMS Web Services.

<p> Published November 2021

<p> Document generated using <span class="high wasdoc">wasDOC</span> version 2.0.0

<a id="0.0.0.0.2" href="#"></a>
<a id="0.abstract" href="#"></a>
<a id="abstract" href="#"></a>
<h5 class="head"><span class="text">Abstract</span></h5>

<p> This document is a guide to supporting Web documents within the WASD Web
Services environment. It is not a tutorial on writing HTML documents.

<p> For installation and update details see
<a class="link blank" target="_blank" href="../features/">WASD Web Services - Installation</a>

<p> For detailed configuration information see
<a class="link blank" target="_blank" href="../config/">WASD Web Services - Configuration</a>

<p> For the more significant features and facilities available see
<a class="link blank" target="_blank" href="../features/features.html">WASD Web Services - Features</a>

<p> For information on CGI, CGIplus, ISAPI, OSU, etc., scripting, see
<a class="link blank" target="_blank" href="../scripting/scripting.html">WASD Web Services - Scripting</a>

<a id="0.0.0.0.3" href="#"></a>
<a id="0.onlinesearch" href="#"></a>
<a id="onlinesearch" href="#"></a>
<h5 class="head"><span class="text">Online Search</span></h5>
<p>
<table class="tabl noindent" style="border:1px #808080 solid;background-color:#eeeeee;margin-bottom:1.5em;">
<tr class="tabr">
<td class="tabd" style="padding:0.5em;"><form action="/cgi-bin/query/wasd_root/wasdoc/env/*.html" target="_top">
<input type="submit" value="Search for:">&nbsp;
<input type="text" name="search" size="20">&nbsp;
<input type="reset" value="Reset">
</form>
</table>

<p> <span class="high bold">WASD VMS Web Services &ndash; Copyright &copy; 1996-2021 Mark G. Daniel</span>

<a id="0.0.0.0.3.1" href="#"></a>
<a id="0.apachelicenseversion20" href="#"></a>
<a id="apachelicenseversion20" href="#"></a>
<h6 class="head display0"><span class="text">Apache License, Version 2.0</span></h6>
<a id="0.0.0.0.3.2" href="#"></a>
<a id="0.license" href="#"></a>
<a id="license" href="#"></a>
<h6 class="head display0"><span class="text">License</span></h6>
<p> Licensed under the <span class="high bold">Apache License</span>, Version 2.0 (the &quot;License&quot;);
<div class="blockof quote" style="font-size:0.9em;width:49em;margin:-0.5em 0 0 1em;">you may not use this software except in compliance with the License.
You may obtain a copy of the License at
<p> <a class="link blank" target="_blank" style="margin-left:1em;" href="https://www.apache.org/licenses/LICENSE-2.0">https://www.apache.org/licenses/LICENSE-2.0</a>
<p> Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
</div>

<p> <a class="link" href="mailto:Mark.Daniel@wasd.vsm.com.au">Mark.Daniel@wasd.vsm.com.au</a>
<br> <span class="high bold italic">A pox on the houses of all spamers.  Make that two poxes.</span>

<p> All copyright and trademarks within this document belong to their rightful
owners.  See <a class="link" href="#10.attributionandacknowledgement">10. Attribution and Acknowledgement</a>.


<p> This is a static (file), single document.
<br> Alternative <a class="link" href="/wasd_root/wasdoc/env/env.html">multi-part</a> static and
<a class="link" href="/cgi-bin/wasdoc/wasd_root/wasdoc/env/000/">dynamic</a> documents.

<br> Links followed by &#10532; open in a new page.

<a id="0.0.0.0.4.2" href="#"></a>
<a id="0.tableofcontent" href="#"></a>
<a id="tableofcontent" href="#"></a>
<h1 class="head" style="font-size:120%;"><span class="text">Table of Content</span></h1>


<div class="TOC1cols2">
<table class="TOC1table">
<tr><td class="sepr"><a href="#1.introduction">1.</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text majr"><a href="#1.introduction">Introduction</a>
<tr><td class="sepr"><a href="#2.documentaccessandspecification">2.</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text majr"><a href="#2.documentaccessandspecification">Document Access and Specification</a>
<tr><td class="sepr"><a href="#2.1.documentcontenttype">2.1</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#2.1.documentcontenttype">Document Content Type</a>
<tr><td class="sepr"><a href="#2.2.explicitlyspecifyingcontenttype">2.2</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#2.2.explicitlyspecifyingcontenttype">Explicitly Specifying Content-Type</a>
<tr><td class="sepr"><a href="#2.3.documentspecification">2.3</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#2.3.documentspecification">Document Specification</a>
<tr><td class="sepr"><a href="#2.3.1.absolutefilepath">2.3.1</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#2.3.1.absolutefilepath">Absolute File Path</a>
<tr><td class="sepr"><a href="#2.3.2.partialorrelativefilepath">2.3.2</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#2.3.2.partialorrelativefilepath">Partial (or Relative) File Path</a>
<tr><td class="sepr"><a href="#2.4.extendedfilespecificationsods5">2.4</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#2.4.extendedfilespecificationsods5">Extended File Specifications (ODS-5)</a>
<tr><td class="sepr"><a href="#2.4.1.charactersinrequestpaths">2.4.1</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#2.4.1.charactersinrequestpaths">Characters In Request Paths</a>
<tr><td class="sepr"><a href="#2.4.2.charactersinservergeneratedpaths">2.4.2</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#2.4.2.charactersinservergeneratedpaths">Characters In Server-Generated Paths</a>
<tr><td class="sepr"><a href="#2.4.3.documentcache">2.4.3</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#2.4.3.documentcache">Document Cache</a>
<tr><td class="sepr"><a href="#3.directorylisting">3.</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text majr"><a href="#3.directorylisting">Directory Listing</a>
<tr><td class="sepr"><a href="#3.1.controllingaccesstoadirectory">3.1</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#3.1.controllingaccesstoadirectory">Controlling Access To A Directory</a>
<tr><td class="sepr"><a href="#3.2.quothiddenquotfiles">3.2</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#3.2.quothiddenquotfiles">&quot;Hidden&quot; Files</a>
<tr><td class="sepr"><a href="#3.3.serverdirectives">3.3</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#3.3.serverdirectives">Server Directives</a>
<tr><td class="sepr"><a href="#3.3.1.wwwwasd">3.3.1</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#3.3.1.wwwwasd">.WWW_WASD</a>
<tr><td class="sepr"><a href="#3.3.2.layout">3.3.2</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#3.3.2.layout">Layout</a>
<tr><td class="sepr"><a href="#3.3.3.directorystyle">3.3.3</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#3.3.3.directorystyle">Directory Style</a>
<tr><td class="sepr"><a href="#3.3.4.selectivelisting">3.3.4</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#3.3.4.selectivelisting">Selective Listing</a>
<tr><td class="sepr"><a href="#3.3.5.listingtitle">3.3.5</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#3.3.5.listingtitle">Listing Title</a>
<tr><td class="sepr"><a href="#3.3.6.listingfont">3.3.6</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#3.3.6.listingfont">Listing Font</a>
<tr><td class="sepr"><a href="#3.3.7.fileversions">3.3.7</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#3.3.7.fileversions">File Versions</a>
<tr><td class="sepr"><a href="#3.3.8.readmefiles">3.3.8</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#3.3.8.readmefiles">Readme Files</a>
<tr><td class="sepr"><a href="#3.3.9.listingdelimiters">3.3.9</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#3.3.9.listingdelimiters">Listing Delimiters</a>
<tr><td class="sepr"><a href="#3.3.10.suppressingdirectories">3.3.10</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#3.3.10.suppressingdirectories">Suppressing Directories</a>
<tr><td class="sepr"><a href="#3.3.11.listingrefreshandexpiry">3.3.11</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#3.3.11.listingrefreshandexpiry">Listing Refresh and Expiry</a>
<tr><td class="sepr"><a href="#3.3.12.scriptingfromdirectorylistings">3.3.12</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#3.3.12.scriptingfromdirectorylistings">Scripting From Directory Listings</a>
<tr><td class="sepr"><a href="#3.3.13.autoscripting">3.3.13</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#3.3.13.autoscripting">Auto-Scripting</a>
<tr><td class="sepr"><a href="#3.3.14.targetwindow">3.3.14</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#3.3.14.targetwindow">Target Window</a>
<tr><td class="sepr"><a href="#3.3.15.specifyingcontenttype">3.3.15</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#3.3.15.specifyingcontenttype">Specifying Content-Type</a>
<tr><td class="sepr"><a href="#3.3.16.iconplaintextlink">3.3.16</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#3.3.16.iconplaintextlink">Icon Plain Text Link</a>
<tr><td class="sepr"><a href="#3.3.17.querystring">3.3.17</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#3.3.17.querystring">Query String</a>
<tr><td class="sepr"><a href="#3.3.18.allowingoverride">3.3.18</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#3.3.18.allowingoverride">Allowing Override</a>
<tr><td class="sepr"><a href="#3.4.directorytree">3.4</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#3.4.directorytree">Directory Tree</a>
<tr><td class="sepr"><a href="#4.serversideincludesssi">4.</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text majr"><a href="#4.serversideincludesssi">Server Side Includes (SSI)</a>
<tr><td class="sepr"><a href="#4.1.virtualdocuments">4.1</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.1.virtualdocuments">Virtual Documents</a>
<tr><td class="sepr"><a href="#4.2.lastmodifiedinformation">4.2</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.2.lastmodifiedinformation">Last-Modified Information</a>
<tr><td class="sepr"><a href="#4.3.preexpiringdocuments">4.3</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.3.preexpiringdocuments">Pre-Expiring Documents</a>
<tr><td class="sepr"><a href="#4.4.directivesyntax">4.4</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.4.directivesyntax">Directive Syntax</a>
<tr><td class="sepr"><a href="#4.5.directives">4.5</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.5.directives">Directives</a>
<tr><td class="sepr"><a href="#4.5.1.accesses">4.5.1</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.5.1.accesses">#ACCESSES</a>
<tr><td class="sepr"><a href="#4.5.2.config">4.5.2</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.5.2.config">#CONFIG</a>
<tr><td class="sepr"><a href="#4.5.3.dir">4.5.3</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.5.3.dir">#DIR</a>
<tr><td class="sepr"><a href="#4.5.4.dcl">4.5.4</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.5.4.dcl">#DCL</a>
<tr><td class="sepr"><a href="#4.5.5.echo">4.5.5</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.5.5.echo">#ECHO</a>
<tr><td class="sepr"><a href="#4.5.6.elif">4.5.6</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.5.6.elif">#ELIF</a>
<tr><td class="sepr"><a href="#4.5.7.else">4.5.7</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.5.7.else">#ELSE</a>
<tr><td class="sepr"><a href="#4.5.8.endif">4.5.8</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.5.8.endif">#ENDIF</a>
<tr><td class="sepr"><a href="#4.5.9.exec">4.5.9</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.5.9.exec">#EXEC</a>
<tr><td class="sepr"><a href="#4.5.10.exit">4.5.10</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.5.10.exit">#EXIT</a>
<tr><td class="sepr"><a href="#4.5.11.fcreated">4.5.11</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.5.11.fcreated">#FCREATED</a>
<tr><td class="sepr"><a href="#4.5.12.flastmod">4.5.12</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.5.12.flastmod">#FLASTMOD</a>
<tr><td class="sepr"><a href="#4.5.13.fsize">4.5.13</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.5.13.fsize">#FSIZE</a>
<tr><td class="sepr"><a href="#4.5.14.if">4.5.14</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.5.14.if">#IF</a>
<tr><td class="sepr"><a href="#4.5.15.include">4.5.15</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.5.15.include">#INCLUDE</a>
<tr><td class="sepr"><a href="#4.5.16.modified">4.5.16</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.5.16.modified">#MODIFIED</a>
<tr><td class="sepr"><a href="#4.5.17.orif">4.5.17</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.5.17.orif">#ORIF</a>
<tr><td class="sepr"><a href="#4.5.18.printenv">4.5.18</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.5.18.printenv">#PRINTENV</a>
<tr><td class="sepr"><a href="#4.5.19.set">4.5.19</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.5.19.set">#SET</a>
<tr><td class="sepr"><a href="#4.5.20.ssi">4.5.20</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.5.20.ssi">#SSI</a>
<tr><td class="sepr"><a href="#4.5.21.stop">4.5.21</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.5.21.stop">#STOP</a>
<tr><td class="sepr"><a href="#4.6.variables">4.6</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.6.variables">Variables</a>
<tr><td class="sepr"><a href="#4.7.flowcontrol">4.7</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.7.flowcontrol">Flow Control</a>
<tr><td class="sepr"><a href="#4.8.querystrings">4.8</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.8.querystrings">Query Strings</a>
<tr><td class="sepr"><a href="#4.9.fileandvirtualspecifications">4.9</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.9.fileandvirtualspecifications">File and Virtual Specifications</a>
<tr><td class="sepr"><a href="#4.9.1.thefilename">4.9.1</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.9.1.thefilename">THE_FILE_NAME</a>
<tr><td class="sepr"><a href="#4.10.timeformat">4.10</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.10.timeformat">Time Format</a>
<tr><td class="sepr"><a href="#4.11.osucompatibility">4.11</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.11.osucompatibility">OSU Compatibility</a>
<tr><td class="sepr"><a href="#4.12.scriptgeneratedssidocuments">4.12</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#4.12.scriptgeneratedssidocuments">Script-Generated SSI Documents</a>
<tr><td class="sepr"><a href="#5.documentsearching">5.</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text majr"><a href="#5.documentsearching">Document Searching</a>
<tr><td class="sepr"><a href="#5.1.plaintextsearch">5.1</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#5.1.plaintextsearch">Plain-Text Search</a>
<tr><td class="sepr"><a href="#5.2.htmlsearch">5.2</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#5.2.htmlsearch">HTML Search</a>
<tr><td class="sepr"><a href="#5.3.searchsyntax">5.3</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#5.3.searchsyntax">Search Syntax</a>
<tr><td class="sepr"><a href="#5.3.1.standardsearchform">5.3.1</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#5.3.1.standardsearchform">Standard Search Form</a>
<tr><td class="sepr"><a href="#5.3.2.formsbasedsearch">5.3.2</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#5.3.2.formsbasedsearch">Forms-Based Search</a>
<tr><td class="sepr"><a href="#5.3.3.searchoptions">5.3.3</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#5.3.3.searchoptions">Search Options</a>
<tr><td class="sepr"><a href="#5.3.4.examplesearchform">5.3.4</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text"><a href="#5.3.4.examplesearchform">Example Search Form</a>
<tr><td class="sepr"><a href="#6.vmshelpandtextlibraries">6.</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text majr"><a href="#6.vmshelpandtextlibraries">VMS Help and Text Libraries</a>
<tr><td class="sepr"><a href="#7.bookreaderbooksandlibraries">7.</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text majr"><a href="#7.bookreaderbooksandlibraries">Bookreader Books and Libraries</a>
<tr><td class="sepr"><a href="#8.webdocumentupdate">8.</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text majr"><a href="#8.webdocumentupdate">Web Document <span class="high bold">Upd</span>ate</a>
<tr><td class="sepr"><a href="#9.index">9.</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text majr"><a href="#9.index">Index</a>
<tr><td class="sepr"><a href="#10.attributionandacknowledgement">10.</a>&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;<td class="text majr"><a href="#10.attributionandacknowledgement">Attribution and Acknowledgement</a>
</table>
</div>
<!-- source:0100_INTRO.WASDOC -->
<hr class="page">
<a id="1." href="#"></a>
<a id="1.introduction" href="#"></a>
<a id="introduction" href="#"></a>
<h1 class="head"><span class="numb">1.</span><span class="text">Introduction</span></h1>

<table class="NAVtable NAVprint"><tr>
<td><a href="javascript:window.history.back();">&#8617;&#xFE0E;</a>
<td><a href="#0.">&#8598;&#xFE0E;</a>
<td><a href="#0.">&#8593;&#xFE0E;</a>
<td><a href="#2.">&#8600;&#xFE0E;</a>
<td><a href="javascript:window.history.forward();">&#8618;&#xFE0E;</a>
</table>

<p> This document provides an overview of non-administration aspects of the
WASD package.  Intended more for the end-user authoring documents or wishing to
use some particular behaviour, most of the aspects descibed here can be used
without recourse to the site administrator.  Originally intended for an
audience inside the organisation where WASD originated, at a time when the Web
and web technologies were in their infancy (i.e. last century :-) the document
is focused on WASD specifics and admittedly is a little dated in the some of
the aspects covered but not in the detail.  The descriptions in this document
are kept current.

<p> The document <span class="high bold">assumes</span> a basic understanding of web 
technologies and uses some terms without explaining them (e.g. HTTP, HTML, 
URL, CGI, etc.)  It is <span class="high bold">not</span> a tutorial on writing HTML 
or any other documents.
<!-- source:0200_DOCUMENT.WASDOC -->
<hr class="page">
<a id="2." href="#"></a>
<a id="2.documentaccessandspecification" href="#"></a>
<a id="documentaccessandspecification" href="#"></a>
<h1 class="head"><span class="numb">2.</span><span class="text">Document Access and Specification</span></h1>

<div class="TOC2cols2">
<table class="TOC2table">
<tr><td><a href="#2.1.documentcontenttype"><span class="numb">2.1</span><span class="text">Document Content Type</span></a>
<tr><td><a href="#2.2.explicitlyspecifyingcontenttype"><span class="numb">2.2</span><span class="text">Explicitly Specifying Content-Type</span></a>
<tr><td><a href="#2.3.documentspecification"><span class="numb">2.3</span><span class="text">Document Specification</span></a>
<tr><td><a href="#2.3.1.absolutefilepath"><span class="numb">2.3.1</span><span class="text">Absolute File Path</span></a>
<tr><td><a href="#2.3.2.partialorrelativefilepath"><span class="numb">2.3.2</span><span class="text">Partial (or Relative) File Path</span></a>
<tr><td><a href="#2.4.extendedfilespecificationsods5"><span class="numb">2.4</span><span class="text">Extended File Specifications (ODS-5)</span></a>
<tr><td><a href="#2.4.1.charactersinrequestpaths"><span class="numb">2.4.1</span><span class="text">Characters In Request Paths</span></a>
<tr><td><a href="#2.4.2.charactersinservergeneratedpaths"><span class="numb">2.4.2</span><span class="text">Characters In Server-Generated Paths</span></a>
<tr><td><a href="#2.4.3.documentcache"><span class="numb">2.4.3</span><span class="text">Document Cache</span></a>
</table>
</div>

<table class="NAVtable NAVprint"><tr>
<td><a href="javascript:window.history.back();">&#8617;&#xFE0E;</a>
<td><a href="#1.">&#8598;&#xFE0E;</a>
<td><a href="#0.">&#8593;&#xFE0E;</a>
<td><a href="#3.">&#8600;&#xFE0E;</a>
<td><a href="javascript:window.history.forward();">&#8618;&#xFE0E;</a>
</table>

<p> <span class="high bold">Arbitrary documents may not be accessed.</span>

<p> The server can only access files where the path is allowed according to a 
specified set of rules specified within the web environment.

<p> <span class="high bold">Documents must be read-accessible.</span>

<p> The server can only access files that are world readable, or that have an 
ACL specifically controlling access for &quot;HTTP&dollar;SERVER&quot;, the server 
account. 

<a id="2.1" href="#"></a>
<a id="2.1.documentcontenttype" href="#"></a>
<a id="documentcontenttype" href="#"></a>
<h2 class="head"><span class="numb">2.1</span><span class="text">Document Content Type</span></h2>

<p> Document (file) retrieval is initiated by providing the server with the 
file specification as a URL path.  Server configuration determines the format 
in which the file is returned to the client.  It may contain text or images 
immediately diplayable by the browser, or by a viewer external to the browser 
may be spawned.  The server may automatically activate a script to provide a 
gateway to non-native information (see description of [AddType] configuration
directive in the Technical Overview).  The  file type (extension) determines
the content type by which the server returns  (and/or interprets) the file. 

<p> The following table lists some of the current file types (as examples) and 
their associated MIME-style content type.  HTML documents are presented
layed-up according to the full HTML-capabilities of the browser.  Plain-text 
documents are presented in a fixed-font format.  Other types require an 
external viewer to be activated.  Here are a few examples.

<div class="blockof code">.BKB        Bookreader document (BNU)   text/html, gateway script activated
.BKS        Bookreader shelf (BNU)      text/html, gateway script activated
.C          C source                    text/plain
.COM        DCL procedure               text/plain
.CONF       configuration file          text/plain
.CPP        C++ source                  text/plain
.DECW&dollar;BOOK  Bookreader document         text/html, gateway script activated
.FOR        Fortran source              text/plain
.GIF        GIF image                   image/gif
.H          C header                    text/plain
.HLB        VMS Help library            text/html, gateway script activated
.HTML       HyperText Markup Language   text/html
.HTM        HyperText Markup Language   text/html
.JPG        JPEG image                  image/jpeg
.LIS        Listing                     text/plain
.MAR        Macro source                text/plain
.PAS        Pascal source               text/plain
.PRO        IDL source                  text/plain
.PS         PostScript                  application/PostScript
.TEXT       Text                        text/plain
.TLB        VMS text library            text/html, gateway script activated
.TXT        Text                        text/plain
.SHTML      HyperText Markup Language   pre-processed text/html
.ZIP        zipped file                 application/binary
</div>

<p> If other file types are required to be defined contact the Web
administrator.

<a id="2.2" href="#"></a>
<a id="2.2.explicitlyspecifyingcontenttype" href="#"></a>
<a id="explicitlyspecifyingcontenttype" href="#"></a>
<h2 class="head"><span class="numb">2.2</span><span class="text">Explicitly Specifying Content-Type</span></h2>

<p> When accessing files it is possible to explicitly specify the identifying
content-type to be returned to the browser in the HTTP response header.  Of
course this does not change the actual content of the file, just the header
content-type!  This is primarily provided to allow access to plain-text
documents that have obscure, non-&quot;standard&quot; or non-configured file
extensions.

<p> It could also be used for other purposes, &quot;forcing&quot; the browser to accept a
particular file as a particular content-type.  This can be useful if the
extension is not configured (as mentioned above) or in the case where the file
contains data of a known content-type but with an extension conflicting with an
already configured extension specifying data of a different content-type.

<p> Enter the file path into the browser's URL specification field (&quot;Location:&quot;,
&quot;Address:&quot;).  Then, for plain-text, append the following query string:

<div class="blockof code">?httpd=content&amp;type=text/plain
</div>

<div class="blockof mono prewrap"><a class="link blank" target="_blank" href="/wasd_root/wasdoc/env/file.unknown">/wasd_root/wasdoc/env/file.unknown</a>
</div>

<p> For another content-type substitute it appropriately.  For example, to
retrieve a text file in binary (why I can't imagine :^) use

<div class="blockof code">?httpd=content&amp;type=application/octet-stream
</div>

<div class="blockof mono prewrap"><a class="link blank" target="_blank" href="/wasd_root/wasdoc/env/file.unknown?httpd=content&amp;type=text/plain">/wasd_root/wasdoc/env/file.unknown?httpd=content&amp;type=text/plain</a>
</div>

<p> It is also posssible to &quot;force&quot; the content-type for all files in a
particular directory. See <a class="link" href="#3.3.15.specifyingcontenttype">3.3.15 Specifying Content-Type</a>.

<a id="2.2.0.0.1" href="#"></a>
<a id="2.2.ignoredcontenttype" href="#"></a>
<a id="ignoredcontenttype" href="#"></a>
<h5 class="head"><span class="text">Ignored Content-Type</span></h5>

<p> Even then some browsers and/or some operating systems and/or some version
combinations insist on ignoring the response header specified content-type and
instead seem to second-guess (often incorrectly) based on the file name
extension.  A common example is the content of DCL procedures on Windows and
up-until-fairly-recent versions of Internet Explorer.

<a id="2.2.0.0.2" href="#"></a>
<a id="2.2.fauxextension" href="#"></a>
<a id="fauxextension" href="#"></a>
<h5 class="head"><span class="text">Faux Extension</span></h5>

<p> Notwithstanding, if a '&dollar;' and then a second extension is appended
to the URI this is often sufficient to coerce the browser into displaying the
content associated with the bogus extension.  In the case of DCL procedure
access on a Windows platform try using &quot;&dollar;.txt&quot;, or for other purposes
whatever extension fits the requirement, as in the following examples.

<div class="blockof mono prewrap"><a class="link blank" target="_blank" href="/wasd_root/src/build_all.com$.txt">/wasd_root/src/build_all.com&dollar;.txt</a>
<a class="link blank" target="_blank" href="/wasd_root/src/build_all.com$.anythingatall">/wasd_root/src/build_all.com&dollar;.anythingatall</a>
</div>

WASD specially handles a URI in this format when the requested resource is
not found by internally stripping the &quot;&dollar;.&quot; extension and attempting to
access the resultant file name again.  This technique works for file based
resources and not for scripts, etc.

<a id="2.3" href="#"></a>
<a id="2.3.documentspecification" href="#"></a>
<a id="documentspecification" href="#"></a>
<h2 class="head"><span class="numb">2.3</span><span class="text">Document Specification</span></h2>

<p> For the &quot;http:&quot; protocol, file and directory locations are specified using
URL path syntax where slash-separated (&quot;/&quot;) elements delineate a hierarchy
leading to a data item.  Anyone familiar with the syntax of the Unix file
system, or the MS-DOS file system (where back-slashes are hierarchy
delimiters), will feel at home with URL syntax.  Specifications under VMS are
not case-sensitive. 

<p> A VMS directory specification 

<div class="blockof code">WEB:[TECHNICAL.HTML-PRIMER]
</div>

would be represented in URL syntax as

<div class="blockof code">/web/technical/html-primer/
</div>
 and a VMS file specification 

<div class="blockof code">WEB:[TECHNICAL.HTML-PRIMER]HTML-PRIMER.HTML
</div>

represented as

<div class="blockof code">/web/technical/html-primer/html-primer.html
</div>

<a id="2.3.0.0.0.1" href="#"></a>
<a id="2.3.masterfiledirectory000000" href="#"></a>
<a id="masterfiledirectory000000" href="#"></a>
<h6 class="head display0"><span class="text">Master file directory [000000]</span></h6>
<div class="note">
<a id="2.3.0.0.1" href="#"></a>
<a id="2.3.000000" href="#"></a>
<a id="000000" href="#"></a>
<h5 class="head center"><span class="text">[000000]</span></h5>
<hr class="note_hr">
It is not required (although not forbidden) to supply a VMS <span class="high italic">master 
file directory</span> component (&quot;[000000]&quot;, &quot;[000000.&quot;, etc.) in a 
URL specification.  Hence the file specification 
<div class="blockof code">WEB:[000000]HOME.HTML
</div>
should be represented as
<div class="blockof code">/web/home.html
</div>
<hr class="note_hr">
</div>
 
<a id="2.3.1" href="#"></a>
<a id="2.3.1.absolutefilepath" href="#"></a>
<a id="absolutefilepath" href="#"></a>
<h3 class="head"><span class="numb">2.3.1</span><span class="text">Absolute File Path</span></h3>

<p> A file may be specified using an <span class="high italic">absolute</span>, or full path.  This 
must specify the location of the file exactly.  Absolute paths 
<span class="high bold">always</span> begin with a forward-slash (&quot;/&quot;).  For example: 

<div class="blockof code">/web/committee/minutes/1994/1994-09-27.txt
/web/committee/constitution.txt
/web/committee/membership/fred-bloggs.txt
</div>

<a id="2.3.2" href="#"></a>
<a id="2.3.2.partialorrelativefilepath" href="#"></a>
<a id="partialorrelativefilepath" href="#"></a>
<h3 class="head"><span class="numb">2.3.2</span><span class="text">Partial (or Relative) File Path</span></h3>

<p> <span class="high italic">(Strictly speaking, it is a function of the client to 
construct a full URL from such a relative URL before sending the request to 
the server.)</span>

<p> A file may be specified <span class="high italic">relative</span> to its current location.  
That is, a current document (or menu) may specify another document file 
relative to itself.  This may be at the current level, a subdirectory, or in 
another part of the directory tree related to the current.  Relative paths 
<span class="high bold">never</span> begin with forward-slash (&quot;/&quot;). 

<p> For example, documents at the same level as the current may be specified 
without any hierachy being indicated: 

<div class="blockof code">1994-07-22.txt
1994-08-24.txt
1994-09-27.txt
</div>

<p> Documents at an inferior point in the hierarchy may be specified as in the 
following example: 

<div class="blockof code">1993/1993-02-17.txt
1993/reports/membership.txt
other/etc.txt
</div>

<p> Documents in a related part of the hierarchy may be referenced using the 
&quot;<span class="high bold">./</span>&quot; construct.  As with MS-DOS and Unix this syntax 
indicates the immediately superior directory. 

<div class="blockof code">../other_committee/1993/1993-02-17.txt
../other_committee/1993/reports/balance-sheet.txt
../../other_section/committee/constitution.txt
</div>

<a id="2.4" href="#"></a>
<a id="2.4.extendedfilespecificationsods5" href="#"></a>
<a id="extendedfilespecificationsods5" href="#"></a>
<h2 class="head"><span class="numb">2.4</span><span class="text">Extended File Specifications (ODS-5)</span></h2>

<p> OpenVMS Alpha V7.2 introduced a new on-disk file system structure, ODS-5. 
This brings to VMS in general, and WASD and other Web servers in particular, a
number of issues regarding the handling of characters previously not
encountered during (ODS-2) file system activities.

<a id="2.4.1" href="#"></a>
<a id="2.4.1.charactersinrequestpaths" href="#"></a>
<a id="charactersinrequestpaths" href="#"></a>
<h3 class="head"><span class="numb">2.4.1</span><span class="text">Characters In Request Paths</span></h3>

<p> There is a standard for characters used in HTTP requests paths and query
strings (URLs).  This includes conventions for the handling of reserved
characters, for example &quot;?&quot;, &quot;+&quot;, &quot;&amp;&quot;, &quot;=&quot; that have specific meanings in a
request,  characters that are completely forbidden, for example white-space,
control characters (0x00 to 0x1f), and others that have usages by convention,
for example the &quot;~&quot;, commonly used to indicate a username mapping.  The request
can otherwise contain these characters provided they are URL-encoded (i.e. a
percentage symbol followed by two hexadecimal digits representing the
hexadecimal-encoded character value).

<p> There is also an RMS standard for handling characters in extended file
specifications, some of which are forbidden in the ODS-2 file naming
conventions, and others which have a reserved meaning to either the
command-line interpreter (e.g. the space) or the file system structure (e.g.
the &quot;:&quot;, &quot;[&quot;, &quot;]&quot; and &quot;.&quot;).  Generally the allowed but reserved characters can
be used in ODS-5 file names if escaped using the &quot;^&quot; character.  For example,
the ODS-2 file name &quot;THIS_AND_THAT.TXT&quot; could be named &quot;This^_^&amp;^_That.txt&quot; on
an ODS-5 volume.  More complex rules control the use of character combinations
with significance to RMS, for instance multiple periods.  The following file
name is allowed on an ODS-5 volume, &quot;A-GNU-zipped-TAR-archive^.tar.gz&quot;, where
the non-significant period has been escaped making it acceptable to RMS.

<p> The WASD server will accept request paths for file specifications in both
formats, URL-encoded and RMS-escaped.  Of course characters absolutely
forbidden in request paths must still be URL-encoded, the most obvious example
is the space.  RMS will accept the file name &quot;This^ and^ that.txt&quot; (i.e.
containing escaped spaces) but the request path would need to be specified as
&quot;This%20and%20that.txt&quot;, or possibly &quot;This^%20and^%20that.txt&quot; although the RMS
escape character is basically redundant.

<p> Unlike for ODS-2 volumes, ODS-5 volumes do not have &quot;invalid&quot; characters,
so unlike with ODS-2 no processing is performed by the server to ensure RMS
compliance.

<a id="2.4.2" href="#"></a>
<a id="2.4.2.charactersinservergeneratedpaths" href="#"></a>
<a id="charactersinservergeneratedpaths" href="#"></a>
<h3 class="head"><span class="numb">2.4.2</span><span class="text">Characters In Server-Generated Paths</span></h3>

<p> When the server generates a path to be returned to the browser, either in a
viewable page such as a directory listing or error message, or as a part of the 
HTTP transaction such as a redirection, the path will contain the URL-encoded
equivalent of the <span class="high italic">canonical form</span> of an extended file specification escaped
character.  For example, the file name &quot;This^_and^_that.txt&quot; will be
represented by &quot;This%20and%20that.txt&quot;.

<p> When presenting a file name in a viewable page the general rule is to also
provide this URL-equivalent of the unescaped file name, with a small number of
exceptions.  The first is a directory listing where VMS format has been
requested by including a version component in the request file specification. 
The second is in similar fashion, but with the <span class="high italic">tree</span> facility, displaying a
directory tree.  The third is in the navigation page of the <span class="high italic">UPDate</span> menu. 
In all of the instances the canonical form of the extended file specification
is presented (although any actual reference to the file is URL-encoded as
described above). 

<a id="2.4.3" href="#"></a>
<a id="2.4.3.documentcache" href="#"></a>
<a id="documentcache" href="#"></a>
<h3 class="head"><span class="numb">2.4.3</span><span class="text">Document Cache</span></h3>

<p> The Web server is most commonly set up to cache static documents (files). 
A cache is higher speed storage, in-memory, in the server itself.  Cached
documents are checked periodically for changes when being requested.  Changes
to a file are determined by the comparing the modification date/time and file
length.  A common check period is one minute, though it can set longer or even
disabled.  If a document has changed the old one is discarded from cache
(called invalidation) and the new one loaded into cache while being transfered
to the client.

<p> After making changes to a document it is possible the server will continue
to serve the old one for a short period.  This can be overridden by using the
browser's <span class="high italic">Reload</span> facility.  This directs the server to go and check
the on-disk file regardless, invalidating it if necessary.
<!-- source:0300_DIRECTORY.WASDOC -->
<hr class="page">
<a id="3." href="#"></a>
<a id="3.directorylisting" href="#"></a>
<a id="directorylisting" href="#"></a>
<h1 class="head"><span class="numb">3.</span><span class="text">Directory Listing</span></h1>

<div class="TOC2cols2">
<table class="TOC2table">
<tr><td><a href="#3.1.controllingaccesstoadirectory"><span class="numb">3.1</span><span class="text">Controlling Access To A Directory</span></a>
<tr><td><a href="#3.2.quothiddenquotfiles"><span class="numb">3.2</span><span class="text">&quot;Hidden&quot; Files</span></a>
<tr><td><a href="#3.3.serverdirectives"><span class="numb">3.3</span><span class="text">Server Directives</span></a>
<tr><td><a href="#3.3.1.wwwwasd"><span class="numb">3.3.1</span><span class="text">.WWW_WASD</span></a>
<tr><td><a href="#3.3.2.layout"><span class="numb">3.3.2</span><span class="text">Layout</span></a>
<tr><td><a href="#3.3.3.directorystyle"><span class="numb">3.3.3</span><span class="text">Directory Style</span></a>
<tr><td><a href="#3.3.4.selectivelisting"><span class="numb">3.3.4</span><span class="text">Selective Listing</span></a>
<tr><td><a href="#3.3.5.listingtitle"><span class="numb">3.3.5</span><span class="text">Listing Title</span></a>
<tr><td><a href="#3.3.6.listingfont"><span class="numb">3.3.6</span><span class="text">Listing Font</span></a>
<tr><td><a href="#3.3.7.fileversions"><span class="numb">3.3.7</span><span class="text">File Versions</span></a>
<tr><td><a href="#3.3.8.readmefiles"><span class="numb">3.3.8</span><span class="text">Readme Files</span></a>
<tr><td><a href="#3.3.9.listingdelimiters"><span class="numb">3.3.9</span><span class="text">Listing Delimiters</span></a>
<tr><td><a href="#3.3.10.suppressingdirectories"><span class="numb">3.3.10</span><span class="text">Suppressing Directories</span></a>
<tr><td><a href="#3.3.11.listingrefreshandexpiry"><span class="numb">3.3.11</span><span class="text">Listing Refresh and Expiry</span></a>
<tr><td><a href="#3.3.12.scriptingfromdirectorylistings"><span class="numb">3.3.12</span><span class="text">Scripting From Directory Listings</span></a>
<tr><td><a href="#3.3.13.autoscripting"><span class="numb">3.3.13</span><span class="text">Auto-Scripting</span></a>
<tr><td><a href="#3.3.14.targetwindow"><span class="numb">3.3.14</span><span class="text">Target Window</span></a>
<tr><td><a href="#3.3.15.specifyingcontenttype"><span class="numb">3.3.15</span><span class="text">Specifying Content-Type</span></a>
<tr><td><a href="#3.3.16.iconplaintextlink"><span class="numb">3.3.16</span><span class="text">Icon Plain Text Link</span></a>
<tr><td><a href="#3.3.17.querystring"><span class="numb">3.3.17</span><span class="text">Query String</span></a>
<tr><td><a href="#3.3.18.allowingoverride"><span class="numb">3.3.18</span><span class="text">Allowing Override</span></a>
<tr><td><a href="#3.4.directorytree"><span class="numb">3.4</span><span class="text">Directory Tree</span></a>
</table>
</div>

<table class="NAVtable NAVprint"><tr>
<td><a href="javascript:window.history.back();">&#8617;&#xFE0E;</a>
<td><a href="#2.">&#8598;&#xFE0E;</a>
<td><a href="#0.">&#8593;&#xFE0E;</a>
<td><a href="#4.">&#8600;&#xFE0E;</a>
<td><a href="javascript:window.history.forward();">&#8618;&#xFE0E;</a>
</table>

<p> A directory listing is sometimes refered to as a document  <span class="high italic">Index</span>, and is
generally titled &quot;Index of &hellip;&quot;. 

<p> Unless disabled by the server's configuration, a directory listing is 
recognised by the server whenever a wildcard is present in a specification and 
there is no query string directing another activity (e.g. a document search).  
Compliant with other web implementations, a directory listing is also 
generated if a URL specifies a directory only and that directory contains no 
home page. 

<p> <span class="high bold">All specifications must be made using URL-style paths.</span>
See <a class="link" href="#2.3.documentspecification">2.3 Document Specification</a>.

<p> The directory listing is designed to look very much like the basic layout 
of other servers, except that all directories are grouped at the top.  In the 
opinion of the author, this looks and functions better than when interspersed
with the files, as is otherwise common.  The default listing provides: 

<ul class="list simple list0">
<li class="item"> iconic indication of the data type
<li class="item"> file name
<li class="item"> last revison date/time
<li class="item"> size
<li class="item"> description
</ul>

<p> The description can be either just that, a description of the role of that
type of file under VMS, or if presented within quotes, an HTML document's own
internal description taken from the &quot;&lt;title&gt;&lt;/title&gt;&quot; element.

<p> Note that directory listings only processes the physical file system.  
This may or may not correspond to the web environment's virtual mappings. 

<p> The following link illustrates the directory listing format:
<a class="link blank" target="_blank" href="/wasd_root/wasdoc/*.*">/wasd_root/wasdoc/*.*</a>

<a id="3.0.0.0.1" href="#"></a>
<a id="3.vmsishformat" href="#"></a>
<a id="vmsishformat" href="#"></a>
<h5 class="head"><span class="text">VMS-ish Format</span></h5>

<p> The default listing has a <span class="high italic">generic</span> WWW look about it, however
it can be made to look a little more like the format of the VMS
&quot;DIRECTORY&quot; command. In this mode the directories are presented as VMS
subdirectories, the version number is shown, if a version wildcard was
included in the specification then all matching versions are shown, the size
is presented in used and allocated blocks, and automatic script activation is
disabled. The VMS-style format is enabled by providing an explicit or wildcard
version number with the specification, as in the following example:
<a class="link blank" target="_blank" href="/wasd_root/wasdoc/*.*;">/wasd_root/wasdoc/*.*;</a>

<a id="3.0.0.0.2" href="#"></a>
<a id="3.listingicons" href="#"></a>
<a id="listingicons" href="#"></a>
<h5 class="head"><span class="text">Listing Icons</span></h5>

<p> By default (and generally) WASD installations are configured to return a
binary file for unknown content-types (usually triggering a browser
&quot;save-as&quot; dialog).  For such files, and in fact all files in general, a
directory listing icon is usually a link to a plain-text version of the file
(regardless of the actual content).  This becomes convenient way to access the
content for files with &quot;interesting&quot; file name extensions and the actual
markup of HTML source files, etc.  Of course some files containing non-textual
data will be variously displayed as gibberish depending on the browser.

<div class="note">
<a id="3.0.0.0.3" href="#"></a>
<a id="3.ymmv" href="#"></a>
<a id="ymmv" href="#"></a>
<h5 class="head center"><span class="text">YMMV</span></h5>
<hr class="note_hr">
Some browsers and operating systems insist they know better than the server and
ignore the response-specified content-type, inferring presentation of the
content from <span class="high italic">magic bytes</span> in that content or the trailing
dot-separated <span class="high italic">file name extension</span>.
<hr class="note_hr">
</div>

<a id="3.1" href="#"></a>
<a id="3.1.controllingaccesstoadirectory" href="#"></a>
<a id="controllingaccesstoadirectory" href="#"></a>
<h2 class="head"><span class="numb">3.1</span><span class="text">Controlling Access To A Directory</span></h2>

<p> The following files (empty, or not), when within a specific directory 
regulate access to that directory, and the listing of any parent directory or 
subdirectories. 

<ul class="list">

<li class="item"> <span class="high bold monosp">.WWW_HIDDEN &ndash; </span> 
Renders the directory completely invisible to the directory listing  mechanism. 
Files within the directory may still be accessed if specified  explicitly but
the directory content itself cannot be listed by any means. 

<li class="item"> <span class="high bold monosp">.WWW_NOWILD &ndash; </span> 
Renders the directory incapable of being listed using &quot;*.*&quot; characters
at the end of the path, even if allowed by the server.  This is a little
different to .WWW_HIDDEN, which hides the directory completely.  The
<span class="high italic">no-wild</span> still allows a directory without a home page to list as a
directory, it does however <span class="high bold">prevent the forced listing using the
&quot;*.*&quot; syntax</span>.

<li class="item"> <span class="high bold monosp">.WWW_NOP &ndash; </span> 
Any parent directory is not listed.

<li class="item"> <span class="high bold monosp">.WWW_NOS &ndash; </span> 
Any subdirectories are not listed.

<li class="item"> <span class="high bold monosp">.WWW_NOPS &ndash; </span> 
Any parent directory or subdirectories are not listed.

</ul>

<a id="3.2" href="#"></a>
<a id="3.2.quothiddenquotfiles" href="#"></a>
<a id="quothiddenquotfiles" href="#"></a>
<h2 class="head"><span class="numb">3.2</span><span class="text">&quot;Hidden&quot; Files</span></h2>

<p> Any file name beginning with a period is hidden from the directory listing 
mechanism (i.e. in VMS parlance it has only a type/suffix/extension).  If 
specifically accessed they will be retrieved however.  Hence the following 
files would not appear in a directory listing: 

<div class="blockof mono">.WWW_NOPS
.CANT_BE_SEEN
.HIDDEN_FROM_VIEW
.;1
.WWW_WASD
</div>

<a id="3.3" href="#"></a>
<a id="3.3.serverdirectives" href="#"></a>
<a id="serverdirectives" href="#"></a>
<h2 class="head"><span class="numb">3.3</span><span class="text">Server Directives</span></h2>

<p> The WASD server behaviour can be modified using <span class="high italic">server 
directives</span>.  For directory listings this involves the inclusion of a query 
string beginning with &quot;?httpd=index&quot;.  The server detects this URI
query string and processes it internally, changing the default action of
directory listings.

<p> Multiple directives can be combined by concatenating them with intervening 
ampersands, as per normal URI syntax.

<div class="blockof code">?httpd=index&amp;autoscript=no
?httpd=index&amp;readme=no
?httpd=index&amp;type=text/plain
?httpd=index&amp;layout=<span class="high italic">format</span>
?httpd=index&amp;script=<span class="high italic">script-name</span>
?httpd=index&amp;script=<span class="high italic">script-name</span>&amp;readme=no
?httpd=index&amp;delimit=none&amp;readme=no&amp;nos=yes
</div>

<p> Server directives specified in the URI propagate when moving between
directories unless the query string also contains

<div class="blockof code">&amp;local=yes
</div>

<a id="3.3.1" href="#"></a>
<a id="3.3.1.wwwwasd" href="#"></a>
<a id="wwwwasd" href="#"></a>
<h3 class="head"><span class="numb">3.3.1</span><span class="text">.WWW_WASD</span></h3>

<p> The control file .WWW_WASD can be used to contain server directives. 
Directives are generally included one per line with &quot;#&quot; prefixed comment
lines allowed.

<p> When a .WWW_WASD file is present in a directory it takes precedence over
any SSI or URI (query string) directives also being applied, unless it includes
an <span class="high italic">override=yes</span> directive.  When this is present any SSI and/or URI
directive string is also applied to the request.

<div class="blockof code"># an example .WWW_WASD file
autoscript=no
readme=no
style=sort2
sort=s-
override=yes
</div>

<a id="3.3.2" href="#"></a>
<a id="3.3.2.layout" href="#"></a>
<a id="layout" href="#"></a>
<h3 class="head"><span class="numb">3.3.2</span><span class="text">Layout</span></h3>

<p> Allows specification of the directory listing layout from the URL,
overriding the server default. The layout directive is a short,
case-insensitive string that specifies the included fields, relative placement
and optionally the width of the fields in a directory listing. Each field is
controlled by a single letter (one with colon-separated parameter) and
optional leading decimal number specifying the width. When a width is not
specified an appropriate default applies. An underscore is used to indicate a
single space and is used to separate the fields (two consecutive works well). 

<ul class="list simple list0">

<li class="item"> <span class="high bold">C &ndash; </span> creation date
<li class="item"> <span class="high bold">D &ndash; </span> description (often best specified last)

<ul class="list simple list0">
<li class="item"> <span class="high bold">D:L &ndash; </span> for files, make a link out of the description text
</ul>

<li class="item"> <span class="high bold">I &ndash; </span> icon (takes no field-width attribute)

<ul class="list simple list0">
<li class="item"> <span class="high bold">L &ndash; </span> link (highlighted anchor using the name of the file)
<li class="item"> <span class="high bold">L:F &ndash; </span> file-system name (for ODS-5 displays spaces, etc.) 
<li class="item"> <span class="high bold">L:N &ndash; </span> name-only, do not display the extension
<li class="item"> <span class="high bold">L:U &ndash; </span> force name to upper-case
</ul>

<li class="item"> <span class="high bold">N &ndash; </span> name (no link, why bother? who knows!)
<li class="item"> <span class="high bold">O &ndash; </span> owner (can be disabled)
<li class="item"> <span class="high bold">R &ndash; </span> revision date
<li class="item"> <span class="high bold">S &ndash; </span> size

<ul class="list simple list0">
<li class="item"> <span class="high bold">S:B &ndash; </span> in bytes (comma-formatted)
<li class="item"> <span class="high bold">S:D &ndash; </span> decimal kilos (see below)
<li class="item"> <span class="high bold">S:F &ndash; </span> kilo and mega are displayed to one decimal place
<li class="item"> <span class="high bold">S:K &ndash; </span> in kilo-bytes (and fractions thereof)
<li class="item"> <span class="high bold">S:M &ndash; </span> in mega-bytes (and fractions thereof)
</ul>

<li class="item"> <span class="high bold">U &ndash; </span> upper-case file and directory names (must be the
first character)

</ul>


<p> The default layout is:

<div class="blockof code">I__L__R__S__D
</div>

<p> The following provide other examples:

<div class="blockof code">?httpd=index&amp;layout=UI__L__R__S__D
?httpd=index&amp;layout=I__L__R__S:b__D
?httpd=index&amp;layout=I__L__R__S__D
?httpd=index&amp;layout=I__15L__S__D
?httpd=index&amp;layout=15L__9R__S
?httpd=index&amp;layout=15N_9C_9R_S
</div>

<p> <span class="high bold">By default the size of files is calculated as 1024 byte
kilos.</span>

<p> When using the &quot;S:D&quot;, the size is displayed as per &quot;F&quot; with
1000 byte kilos.  If it is prefered to have the default display in 1000 byte
kilos then set the directory listing layout using:

<div class="blockof code">?httpd=index&amp;layout=I__L__R__S:d__D
</div>

or explicitly direct the &quot;kilo&quot; quantity to 1000 with

<div class="blockof code">?httpd=index&amp;layout=I__L__R__S:0__D
</div>

to 1024 (as per VMS /UNIT=BYTES) with

<div class="blockof code">?httpd=index&amp;layout=I__L__R__S:2__D
</div>

with or without an explicit size directive

<div class="blockof code">?httpd=index&amp;layout=I__L__R__S:2:K__D
</div>

The following links illustrate the difference between the &quot;kilo&quot; values:

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;layout=I__L__R__S:0__D">/wasd_root/wasdoc/*.*?httpd=index&layout=I__L__R__S:0__D</a>
<td class="tabd">(1000)
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;layout=I__L__R__S:2__D">/wasd_root/wasdoc/*.*?httpd=index&layout=I__L__R__S:2__D</a>
<td class="tabd">(1024)
</table>

<p> If unsure of the kilo value being used check the
&quot;&lt;meta&gt;&quot; information in the directory listing.

<p> The following links illustrate this functionality by listing this 
document's directory in various formats.

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*">/wasd_root/wasdoc/*.*</a>
<td class="tabd">Default
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;layout=I__L">/wasd_root/wasdoc/*.*?httpd=index&layout=I__L</a>
<td class="tabd">Only an icon and link.
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*;?httpd=index&amp;layout=I__L__S">/wasd_root/wasdoc/*.*;?httpd=index&layout=I__L__S</a>
<td class="tabd">Icon, link and size (in VMS-style format).
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;layout=N__9C__9R">/wasd_root/wasdoc/*.*?httpd=index&layout=N__9C__9R</a>
<td class="tabd">Name, day created and day revised.
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;layout=UN__9C__9R">/wasd_root/wasdoc/*.*?httpd=index&layout=UN__9C__9R</a>
<td class="tabd">Name (in upper-case), day created and day revised.
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;layout=30D:l__S:b__R">/wasd_root/wasdoc/*.*?httpd=index&layout=30D:l__S:b__R</a>
<td class="tabd">Description (fixed width) as a link, size in bytes, and day revised.
</table>

<a id="3.3.3" href="#"></a>
<a id="3.3.3.directorystyle" href="#"></a>
<a id="directorystyle" href="#"></a>
<h3 class="head"><span class="numb">3.3.3</span><span class="text">Directory Style</span></h3>

<p> WASD has a default directory listing style where the page title is a series
of links to the various directories in the path, then column labels are
separated from directory links by a horizontal line, the after the listed
directories a blank line, and the listed files, followed by another horizontal
line, all in monospace font.  There have been a small number of variations on
this over the years.  The current default (post-v10.4) style is implemented
using an HTML table and differs from the historical preformatted text approach.

<p> For each style there is a second variant where the horizontal lines
partitioning the listing are not present.

<p> The various directory listing styles are illustrated below.

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*">/wasd_root/wasdoc/*.*</a>
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;style=default2">/wasd_root/wasdoc/*.*?httpd=index&style=default2</a>
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;style=sort">/wasd_root/wasdoc/*.*?httpd=index&style=sort</a>
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;style=sort2">/wasd_root/wasdoc/*.*?httpd=index&style=sort2</a>
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;style=anchor">/wasd_root/wasdoc/*.*?httpd=index&style=anchor</a>
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;style=anchor2">/wasd_root/wasdoc/*.*?httpd=index&style=anchor2</a>
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;style=htdir">/wasd_root/wasdoc/*.*?httpd=index&style=htdir</a>
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;style=htdir2">/wasd_root/wasdoc/*.*?httpd=index&style=htdir2</a>
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;style=original">/wasd_root/wasdoc/*.*?httpd=index&style=original</a>
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;style=original2">/wasd_root/wasdoc/*.*?httpd=index&style=original2</a>
</table>

<a id="3.3.3.0.1" href="#"></a>
<a id="3.3.3.sortablelisting" href="#"></a>
<a id="sortablelisting" href="#"></a>
<h5 class="head"><span class="text">Sortable Listing</span></h5>

<p> There is also a useful alternate style that allows manual, automatic and
programmatic sorting of the listing content.  The sort is performed by
JavaScript and does not require a re-request of the server.  A sortable listing
is indicated by <span class="high" style="letter-spacing:-4px;">&#9660;&#9650;</span>&nbsp;
in the header icon column (if present).  When a column has been sorted
ascending/descending symbols are present adjacent to the column label.
The taper of the symbol shape <span class="high" style="letter-spacing:-4px;">&#9660;</span>&nbsp;
indicating larger/later to smaller/earlier top to bottom (descending), and
<span class="high" style="letter-spacing:-4px;">&#9650;</span>&nbsp; smaller/earlier to larger/later top to
bottom (ascending).  Manual sorting is accomplished by clicking on the column
label.  This reverses the current sort order.

<p> The examples above include the basic sortable listing.

<p> The sortable listing by default generates the standard WASD ascending by
name listing.  It is also possible to automatically sort a listing on a
particular column when it is generated.  This is done with an additional
parameter specifying the layout column character as used in
.  The default is to list top-to-bottom
ascending order.  An optional &quot;-&quot; lists top-to-bottom in descending
order (the redundant &quot;+&quot;) is also accepted.

<p> Examples of automatic sort on size, descending size, revision data and
descending revision date are below.

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;style=sort&amp;sort=s">/wasd_root/wasdoc/*.*?httpd=index&style=sort&sort=s</a>
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;style=sort2&amp;sort=s-">/wasd_root/wasdoc/*.*?httpd=index&style=sort2&sort=s-</a>
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;style=sort&amp;sort=r+">/wasd_root/wasdoc/*.*?httpd=index&style=sort&sort=r+</a>
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;style=sort2&amp;sort=r-">/wasd_root/wasdoc/*.*?httpd=index&style=sort2&sort=r-</a>
</table>

<p> Programmatic listing from JavaScript embedded in a README.HTML or enclosing
SSI document can be performed by calling the wasdDirSort() function with a
string parameter containing the column character and optional order character.
The following example sorts descending by size.

<div class="blockof code">&lt;script language=&quot;JavaScript&quot;&gt;wasdDirSort('S-')&lt;/script&gt;
</div>

<p> To make all directory listings for a server or site sortable, place the
following mapping rule appropriately close to the top of relevant mapping
rules.

<div class="blockof code">SET * dir=style=sort
</div>

<a id="3.3.4" href="#"></a>
<a id="3.3.4.selectivelisting" href="#"></a>
<a id="selectivelisting" href="#"></a>
<h3 class="head"><span class="numb">3.3.4</span><span class="text">Selective Listing</span></h3>


<p> The WASD directory listing permits the use of VMS wildcards in the file
specification.  This directly allows selected listings of files.  For example,
all files, all the SDML files in this document's directory, all the HTML files,
and finally all the files containing 01 in the name.

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*">/wasd_root/wasdoc/*.*</a>
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.wasdoc">/wasd_root/wasdoc/*.wasdoc</a>
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.html">/wasd_root/wasdoc/*.html</a>
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*0*.*">/wasd_root/wasdoc/*0*.*</a>
</table>

<p> In addition, it is possible to selectively include and/or exclude selected
files using the server directive <span class="high italic">httpd=index&amp;these=</span>. The parameter
is one or more, comma-separated file name specifications which may contain
wildcards.  The directory listing usually would have file name and type
wildcard (though can be a selector in itself) and then files are selected using 
using the above directive.  If a selector is preceded by an exclamation point
(&quot;!&quot;) this excludes matching files.  Matching is first to last and the
first match hit is applied.

<p> The following examples provide the equivalent listings to the examples above.

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;these=*">/wasd_root/wasdoc/*.*?httpd=index&these=*</a>
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;these=*.wasdoc">/wasd_root/wasdoc/*.*?httpd=index&these=*.wasdoc</a>
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;these=*.html">/wasd_root/wasdoc/*.*?httpd=index&these=*.html</a>
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;these=*0*.*">/wasd_root/wasdoc/*.*?httpd=index&these=*0*.*</a>
</table>

<p> This example lists all of the files above in the one listing.

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;these=*.wasdoc,*.html,*01*.*">/wasd_root/wasdoc/*.*?httpd=index&these=*.wasdoc,*.html,*01*.*</a>
</table>

<p> This example lists all files except those with an .HTML type.

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;these=!*.html">/wasd_root/wasdoc/*.*?httpd=index&these=!*.html</a>
</table>

<a id="3.3.5" href="#"></a>
<a id="3.3.5.listingtitle" href="#"></a>
<a id="listingtitle" href="#"></a>
<h3 class="head"><span class="numb">3.3.5</span><span class="text">Listing Title</span></h3>

<p> The listing (page) title may be explicitly supplied using the
<span class="high italic">httpd=index&amp;title=..</span> directive.

<p> The keywords parallel those provided for path mapping <span class="high italic">SET dir=title=..</span>.

<p> <ul class="list simple list0">
<li class="item"> &quot;0&quot; (digit zero) suppress any title
<li class="item"> &quot;1..99&quot; where 1 is the top-level directory (device), 2 is the
second-level directory, 3 &hellip; 99 the current directory
<li class="item"> &quot;DEFAULT&quot; the default for the directory <span class="high italic">style</span>
<li class="item"> &quot;OWNER&quot; the VMS account owning the directory
<li class="item"> &quot;REMOTE&quot; the remote user name (for X509 authentication the certificate
common-name)
<li class="item"> &quot;THIS=&lt;string&gt;&quot; a literal string
</ul>

<a id="3.3.6" href="#"></a>
<a id="3.3.6.listingfont" href="#"></a>
<a id="listingfont" href="#"></a>
<h3 class="head"><span class="numb">3.3.6</span><span class="text">Listing Font</span></h3>

<p> Historically and by default, directory listings are provided in a monospace
font.  The parent document or browser (proprtional) font may be used instead
with the <span class="high italic">httpd=index&amp;font=inherit</span> directive.  This can only be used with
the sortable and tabular (post-v10.4) listings.  Historical listing styles are
only suitable for monospace fonts.

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;font=inherit">/wasd_root/wasdoc/*.*?httpd=index&font=inherit</a>
</table>

<p> There is the per-path  <span class="high italic">SET dir=font=inherit</span> mapping rule equivalent.

<a id="3.3.7" href="#"></a>
<a id="3.3.7.fileversions" href="#"></a>
<a id="fileversions" href="#"></a>
<h3 class="head"><span class="numb">3.3.7</span><span class="text">File Versions</span></h3>

<p> As described above, a directory listing can be requested in a <span class="high italic">VMSish</span>
style by appending a version delimter to the URL file specification, with
multiple versions of the file, where they exist, displayed with version number.

<p> Multiple versions may also be selectively listed using the
<span class="high italic">httpd=index&amp;versions=</span> directive.  The parameter can be an integer
representing the maximum number of versions to be listed, or an asterisk
wildcard indicating all versions should be listed.

<div class="blockof code">?httpd=index&amp;versions=0
?httpd=index&amp;versions=3
</div>

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;versions=*">/wasd_root/wasdoc/*.*?httpd=index&versions=*</a>
</table>

<p> There is the per-path  <span class="high italic">SET dir=versions=</span> mapping rule equivalent.

<a id="3.3.8" href="#"></a>
<a id="3.3.8.readmefiles" href="#"></a>
<a id="readmefiles" href="#"></a>
<h3 class="head"><span class="numb">3.3.8</span><span class="text">Readme Files</span></h3>

<p> When a directory listing is generated any &quot;README.&quot;, &quot;README.TXT&quot; or
&quot;README.HTML&quot; file (or  others as configured for the particular server) in the
directory will have the  contents displayed immediately below the title of the
page.  This allows  additional information on the directory's contents,
function, etc., to be  presented.  This can be suppressed by appending the
following query-string to  the directory specification, as in the accompanying
example: 

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;readme=no">/wasd_root/wasdoc/*.*?httpd=index&readme=no</a>
</table>

<p> Read-me files can be SSI documents if configured by the server
administrator. General SSI guidelines apply to these, see
<a class="link" href="#4.serversideincludesssi">4. Server Side Includes (SSI)</a>

<a id="3.3.9" href="#"></a>
<a id="3.3.9.listingdelimiters" href="#"></a>
<a id="listingdelimiters" href="#"></a>
<h3 class="head"><span class="numb">3.3.9</span><span class="text">Listing Delimiters</span></h3>

<p> A directory listing is normally delimited by a header, comprising an
&quot;Index of&quot;, column headings and horizontal line, and a footer,
comprising a horizintal line.  This default behaviour may be modified using the
&quot;delimit=&quot; directive.

<ul class="list list0">
<li class="item"> <span class="high bold">header &ndash; </span> 
a header comprising a horizontal rule and column heading is generated
<li class="item"> <span class="high bold">footer &ndash; </span> 
a footer comprising a horizontal rule is generated
<li class="item"> <span class="high bold">none &ndash; </span> 
no header or footer is generated
<li class="item"> <span class="high bold">both &ndash; </span> 
both header and footer is generated (default)
</ul>

<div class="blockof code">?httpd=index&amp;delimit=none
?httpd=index&amp;delimit=top
</div>

<a id="3.3.10" href="#"></a>
<a id="3.3.10.suppressingdirectories" href="#"></a>
<a id="suppressingdirectories" href="#"></a>
<h3 class="head"><span class="numb">3.3.10</span><span class="text">Suppressing Directories</span></h3>

<p> Parent and subdirectories may be suppressed in a listing using the &quot;nop&quot;,
&quot;nops&quot; and &quot;nos&quot; directives.  These parallel the purpose of the directory
listing control files described in <a class="link" href="#3.1.controllingaccesstoadirectory">3.1 Controlling Access To A Directory</a>,
and if set to true suppress the listing of the corresponding directories.

<ul class="list list0">
<li class="item"> <span class="high bold">nop &ndash; </span> 
any parent directory is not listed
<li class="item"> <span class="high bold">nops &ndash; </span> 
any subdirectories are not listed
<li class="item"> <span class="high bold">nos &ndash; </span> 
any parent directory or subdirectories are not listed
</ul>

<div class="blockof code">?httpd=index&amp;nop=yes
?httpd=index&amp;nops=yes
?httpd=index&amp;nos=yes
</div>

<a id="3.3.11" href="#"></a>
<a id="3.3.11.listingrefreshandexpiry" href="#"></a>
<a id="listingrefreshandexpiry" href="#"></a>
<h3 class="head"><span class="numb">3.3.11</span><span class="text">Listing Refresh and Expiry</span></h3>

<p> Directory listings and trees may be <span class="high italic">pre-expired</span>.  That is, the listing
is reloaded each time the page is referenced.  This is convenient in some
environments where directory contents change frequently, but adds considerable
over-head and so is often disabled by default.  Individual directory listings
may have either default behaviour over-ridden using syntax similar to the
following examples:

<div class="blockof code">/dir1/dir2/*.*?httpd=index?expired=yes
/dir1/dir2/*.*?httpd=index?expired=no
/tree/dir1/dir2/?httpd=index?expired=yes
/tree/dir1/dir2/?httpd=index?expired=no
</div>

<a id="3.3.12" href="#"></a>
<a id="3.3.12.scriptingfromdirectorylistings" href="#"></a>
<a id="scriptingfromdirectorylistings" href="#"></a>
<h3 class="head"><span class="numb">3.3.12</span><span class="text">Scripting From Directory Listings</span></h3>

<p> When a directory listing is requested a script name can be specified to be 
used as a prefix to all of the file links in the listing.  When the client 
selects a file link the script specified is implicitly activated. 

<div class="blockof code">?httpd=index&amp;script=script_name
</div>

<p> The following link illustrates this facility by specifying the  <span class="high italic">liner</span>
script.  When a link is selected the <span class="high italic">liner</span> script presents the file with
preprended line numbers:

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;script=/cgi-bin/liner">/wasd_root/wasdoc/*.*?httpd=index&script=/cgi-bin/liner</a>
</table>

<a id="3.3.13" href="#"></a>
<a id="3.3.13.autoscripting" href="#"></a>
<a id="autoscripting" href="#"></a>
<h3 class="head"><span class="numb">3.3.13</span><span class="text">Auto-Scripting</span></h3>

<p> The server's <span class="high italic">auto-scripting</span> facility (see description of
[AddType] configuration  directive in the Technical Overview) can be suppressed
by appending the following  query-string to the directory specification, as in
the accompanying example:

<div class="blockof code">?httpd=index&amp;autoscript=no
</div>

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;autoscript=no">/wasd_root/wasdoc/*.*?httpd=index&autoscript=no</a>
</table>

<p> This implies that any file accessed from the listing will be transfered 
without any data conversion possible due to script activation.  The browser
must then process the document in  some fashion (often by activating a <span class="high italic">save
as</span> dialog).

<a id="3.3.14" href="#"></a>
<a id="3.3.14.targetwindow" href="#"></a>
<a id="targetwindow" href="#"></a>
<h3 class="head"><span class="numb">3.3.14</span><span class="text">Target Window</span></h3>

<p> Files generally open in the current browser window.  It is possible to open
a file in another window using the <span class="high italic">target=</span> directive.

<div class="blockof code">?httpd=index&amp;target=_blank
</div>

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;target=_blank">/wasd_root/wasdoc/*.*?httpd=index&target=_blank</a>
</table>

<p>
<a id="3.3.14.0.0.1" href="#"></a>
<a id="3.3.14.browserhtmlsupportedtargets" href="#"></a>
<a id="browserhtmlsupportedtargets" href="#"></a>
<h6 class="head display0"><span class="text">Browser (HTML) Supported Targets</span></h6>
<span class="high bold">Browser (HTML) Supported Targets</span>
<table class="tabl">
<tr class="tabr under">
<th class="tabh">Target
<th class="tabh">Description
<tr class="tabr">
<tr class="tabr">
<td class="tabd">_blank
<td class="tabd">opens the file in a new window or tab
<tr class="tabr">
<td class="tabd">_self
<td class="tabd">in the same frame
<tr class="tabr">
<td class="tabd">_parent
<td class="tabd">in the parent frame
<tr class="tabr">
<td class="tabd">_top
<td class="tabd">in the full body of the window
<tr class="tabr">
<td class="tabd"><span class="high italic">framename</span>
<td class="tabd">in a named frame
</table>

There is a per-path mapping &quot;SET dir=target=&quot; equivalent.

<a id="3.3.15" href="#"></a>
<a id="3.3.15.specifyingcontenttype" href="#"></a>
<a id="specifyingcontenttype" href="#"></a>
<h3 class="head"><span class="numb">3.3.15</span><span class="text">Specifying Content-Type</span></h3>

<p> When accessing files it is possible to explicitly specify the identifying
content-type to be returned to the browser in the HTTP response header.  Of
course this does not change the actual content of the file, just the header
content-type!  This is primarily provided to allow access to plain-text
documents that have obscure, non&quot;-standard&quot; or non-configured file extensions.
See <a class="link" href="#2.2.explicitlyspecifyingcontenttype">2.2 Explicitly Specifying Content-Type</a>.

<p> It could also be used for other purposes, &quot;forcing&quot; the browser to accept a
particular file as a particular content-type.  This can be useful if the
extension is not configured (as mentioned above) or in the case where the file
contains data of a known content-type but with an extension conflicting with an
already configured extension specifying data of a different content-type.

<p> It is posssible to &quot;force&quot; the content-type for all files in a particular
directory.  Enter the path to the directory and then add

<div class="blockof code">?httpd=index&amp;type=text/plain
</div>

<p> (or what-ever type is desired).  Links to files in the listing will contain
the appropriate &quot;?httpd=content&amp;type=...&quot; appended as a query string.

<p> This is an example:

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*">/wasd_root/wasdoc/*.*</a>
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*?httpd=index&amp;type=text/plain">/wasd_root/wasdoc/*.*?httpd=index&type=text/plain</a>
</table>

<div class="note">
<a id="3.3.15.0.1" href="#"></a>
<a id="3.3.15.ymmv" href="#"></a>
<a id="ymmv" href="#"></a>
<h5 class="head center"><span class="text">YMMV</span></h5>
<hr class="note_hr">
Some browsers and operating systems insist they know better than the server and
ignore the response-specified content-type, inferring presentation of the
content from <span class="high italic">magic bytes</span> in that content or the trailing dot-separated
<span class="high italic">file name extension</span>.
<hr class="note_hr">
</div>

<a id="3.3.16" href="#"></a>
<a id="3.3.16.iconplaintextlink" href="#"></a>
<a id="iconplaintextlink" href="#"></a>
<h3 class="head"><span class="numb">3.3.16</span><span class="text">Icon Plain Text Link</span></h3>

<p> Directory listing icons are generally links to the content of the file
displayed as plain-text (<a class="link" href="#3.listingicons">&lsquo;Listing Icons&rsquo; in 3. Directory Listing</a>).  This can be disabled using
the <span class="high italic">ilink</span> directive.

<div class="blockof code">?httpd=index&amp;ilink=no
</div>

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/*.*&amp;ilink=no">/wasd_root/wasdoc/*.*&ilink=no</a>
</table>

There is a per-path mapping &quot;SET dir=noilink&quot;  equivalent.

<a id="3.3.17" href="#"></a>
<a id="3.3.17.querystring" href="#"></a>
<a id="querystring" href="#"></a>
<h3 class="head"><span class="numb">3.3.17</span><span class="text">Query String</span></h3>

<p> The <span class="high italic">query=&lt;string&gt;</span> directive can be used to propagate an explicit query
string to subsequent directory requests.  This is intended to be applied from a
<span class="high monosp">.WWW_WASD</span> control file because actual URI query strings are propagated by
default.

<div class="blockof code"># an example .WWW_WASD file
query=httpd=index&amp;style=sort2&amp;sort=s-
</div>

<a id="3.3.18" href="#"></a>
<a id="3.3.18.allowingoverride" href="#"></a>
<a id="allowingoverride" href="#"></a>
<h3 class="head"><span class="numb">3.3.18</span><span class="text">Allowing Override</span></h3>

<p> When a <span class="high monosp">.WWW_WASD</span> file is present in a directory it takes precedence over
any SSI or URI (query string) directives also available, unless it includes an
<span class="high italic">override=yes</span> directive.  When this is present any SSI and/or URI directive
string is also applied to the request.

<div class="blockof code"># an example .WWW_WASD file
override=yes
</div>

<a id="3.4" href="#"></a>
<a id="3.4.directorytree" href="#"></a>
<a id="directorytree" href="#"></a>
<h2 class="head"><span class="numb">3.4</span><span class="text">Directory Tree</span></h2>

<p> The &quot;Tree&quot; internal script allows a directory tree to be  generated.  This
script is supplied with a directory name from which it displays all
subdirectories in a hierarchical layout, showing subordinancies.  Selecting any
one of the subdirectories displayed generates a directory listing (see
<a class="link" href="#3.directorylisting">3. Directory Listing</a>). 

<p> Appending a file specification (with or without wildcards) to the 
directory name results in the any directory listing displaying only files 
matching the specification.  To display all files a &quot;*.*&quot;  should always be
appended. 

<p> Note that this script only processes the physical file system.  This may 
or may not correspond to the web environment's virtual mappings. 

<p> To enable the VMS-style directory listing format, or to use any of the 
directory server directives, append one, or a combination of, the following 
query strings to the directory specification: 

<div class="blockof code">?httpd=index&amp;autoscript=no
?httpd=index&amp;readme=no
?httpd=index&amp;script=<span class="high italic">script-name</span>
?httpd=index&amp;script=<span class="high italic">script-name</span>&amp;readme=no
</div>

<p> The following links provide online demonstrations:

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/tree/wasd_root/wasdoc/*.*">/tree/wasd_root/wasdoc/*.*</a>
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/tree/wasd_root/wasdoc/*.*;">/tree/wasd_root/wasdoc/*.*;</a>
<td class="tabd">VMS-ish
</table>

<p> Note that this activity is I/O intensive, and can take a considerable 
period if the tree is extensive. 
<!-- source:0400_SSI.WASDOC -->
<hr class="page">
<a id="4." href="#"></a>
<a id="4.serversideincludesssi" href="#"></a>
<a id="serversideincludesssi" href="#"></a>
<h1 class="head"><span class="numb">4.</span><span class="text">Server Side Includes (SSI)</span></h1>

<div class="TOC2cols2">
<table class="TOC2table">
<tr><td><a href="#4.1.virtualdocuments"><span class="numb">4.1</span><span class="text">Virtual Documents</span></a>
<tr><td><a href="#4.2.lastmodifiedinformation"><span class="numb">4.2</span><span class="text">Last-Modified Information</span></a>
<tr><td><a href="#4.3.preexpiringdocuments"><span class="numb">4.3</span><span class="text">Pre-Expiring Documents</span></a>
<tr><td><a href="#4.4.directivesyntax"><span class="numb">4.4</span><span class="text">Directive Syntax</span></a>
<tr><td><a href="#4.5.directives"><span class="numb">4.5</span><span class="text">Directives</span></a>
<tr><td><a href="#4.5.1.accesses"><span class="numb">4.5.1</span><span class="text">#ACCESSES</span></a>
<tr><td><a href="#4.5.2.config"><span class="numb">4.5.2</span><span class="text">#CONFIG</span></a>
<tr><td><a href="#4.5.3.dir"><span class="numb">4.5.3</span><span class="text">#DIR</span></a>
<tr><td><a href="#4.5.4.dcl"><span class="numb">4.5.4</span><span class="text">#DCL</span></a>
<tr><td><a href="#4.5.5.echo"><span class="numb">4.5.5</span><span class="text">#ECHO</span></a>
<tr><td><a href="#4.5.6.elif"><span class="numb">4.5.6</span><span class="text">#ELIF</span></a>
<tr><td><a href="#4.5.7.else"><span class="numb">4.5.7</span><span class="text">#ELSE</span></a>
<tr><td><a href="#4.5.8.endif"><span class="numb">4.5.8</span><span class="text">#ENDIF</span></a>
<tr><td><a href="#4.5.9.exec"><span class="numb">4.5.9</span><span class="text">#EXEC</span></a>
<tr><td><a href="#4.5.10.exit"><span class="numb">4.5.10</span><span class="text">#EXIT</span></a>
<tr><td><a href="#4.5.11.fcreated"><span class="numb">4.5.11</span><span class="text">#FCREATED</span></a>
<tr><td><a href="#4.5.12.flastmod"><span class="numb">4.5.12</span><span class="text">#FLASTMOD</span></a>
<tr><td><a href="#4.5.13.fsize"><span class="numb">4.5.13</span><span class="text">#FSIZE</span></a>
<tr><td><a href="#4.5.14.if"><span class="numb">4.5.14</span><span class="text">#IF</span></a>
<tr><td><a href="#4.5.15.include"><span class="numb">4.5.15</span><span class="text">#INCLUDE</span></a>
<tr><td><a href="#4.5.16.modified"><span class="numb">4.5.16</span><span class="text">#MODIFIED</span></a>
<tr><td><a href="#4.5.17.orif"><span class="numb">4.5.17</span><span class="text">#ORIF</span></a>
<tr><td><a href="#4.5.18.printenv"><span class="numb">4.5.18</span><span class="text">#PRINTENV</span></a>
<tr><td><a href="#4.5.19.set"><span class="numb">4.5.19</span><span class="text">#SET</span></a>
<tr><td><a href="#4.5.20.ssi"><span class="numb">4.5.20</span><span class="text">#SSI</span></a>
<tr><td><a href="#4.5.21.stop"><span class="numb">4.5.21</span><span class="text">#STOP</span></a>
<tr><td><a href="#4.6.variables"><span class="numb">4.6</span><span class="text">Variables</span></a>
<tr><td><a href="#4.7.flowcontrol"><span class="numb">4.7</span><span class="text">Flow Control</span></a>
<tr><td><a href="#4.8.querystrings"><span class="numb">4.8</span><span class="text">Query Strings</span></a>
<tr><td><a href="#4.9.fileandvirtualspecifications"><span class="numb">4.9</span><span class="text">File and Virtual Specifications</span></a>
<tr><td><a href="#4.9.1.thefilename"><span class="numb">4.9.1</span><span class="text">THE_FILE_NAME</span></a>
<tr><td><a href="#4.10.timeformat"><span class="numb">4.10</span><span class="text">Time Format</span></a>
<tr><td><a href="#4.11.osucompatibility"><span class="numb">4.11</span><span class="text">OSU Compatibility</span></a>
<tr><td><a href="#4.12.scriptgeneratedssidocuments"><span class="numb">4.12</span><span class="text">Script-Generated SSI Documents</span></a>
</table>
</div>

<table class="NAVtable NAVprint"><tr>
<td><a href="javascript:window.history.back();">&#8617;&#xFE0E;</a>
<td><a href="#3.">&#8598;&#xFE0E;</a>
<td><a href="#0.">&#8593;&#xFE0E;</a>
<td><a href="#5.">&#8600;&#xFE0E;</a>
<td><a href="javascript:window.history.forward();">&#8618;&#xFE0E;</a>
</table>

<p> The HTML pre-processor is used to provide dynamic information inside of an 
otherwise static, HTML (HyperText Markup Language) document.  The HTTPd server 
provides this as internal functionality, scanning the input document for 
special pre-processor <span class="high italic">directives</span>, which are replaced by dynamic 
information based upon the particular directive. 

<p> As of version 5.1 WASD SSI has been enhanced to provide flow-control
statements, allowing blocks of the document to be conditionally processed, see
<a class="link" href="#4.7.flowcontrol">4.7 Flow Control</a>. These extensions allow quite versatile documents to be
created without resorting to script processing.

<p> Two documents are provided as examples of SSI processing.

<ul class="list">

<li class="item"> <span class="high bold">A simple SSI document.</span>

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank" target="_blank" href="/wasd_root/wasdoc/env/ssi.shtml?httpd=content&amp;type=text/plain">WASD_ROOT:[WASDWASDOC.ENV]SSI.SHTML</a>
<td class="tabd">(<a class="link blank" target="_blank" href="/wasd_root/wasdoc/env/ssi.shtml">access as SSI</a>)
</table>

<li class="item"> <span class="high bold">An SSI document using variable assignment and flow-control.</span>

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank" target="_blank" href="/wasd_root/wasdoc/env/xssi.shtml?httpd=content&amp;type=text/plain">WASD_ROOT:[WASDWASDOC.ENV]XSSI.SHTML</a>
<td class="tabd">(<a class="link blank" target="_blank" href="/wasd_root/wasdoc/env/xssi.shtml">access as SSI</a>)
</table>

</ul>

<p> By default the HTML pre-processor is invoked when the document file's
extension is &quot;.SHTML&quot;. As there is a significant overhead with pre-processed
HTML compared to normal HTML, it should only be used when it serves a useful
documentary purpose, and not just for the novelty.

<p> Essential compatibility with OSU Server Side Includes is provided.  This
may ease any transition between the two.  See <a class="link" href="#4.11.osucompatibility">4.11 OSU Compatibility</a> for
further information.

<a id="4.1" href="#"></a>
<a id="4.1.virtualdocuments" href="#"></a>
<a id="virtualdocuments" href="#"></a>
<h2 class="head"><span class="numb">4.1</span><span class="text">Virtual Documents</span></h2>

<p> One effective use for pre-processed HTML is the creation of single  virtual
documents from two or more physical documents.  That is, the pre-processed
document is used to include multiple physical documents, that  may even be
independently administered, to return a composite document to the  client. 
This is a relatively low-overhead activity as SSI goes, but because it is a 
dynamic document, without some extra considerations (see
<a class="link" href="#4.2.lastmodifiedinformation">4.2 Last-Modified Information</a>).

<a id="4.1.0.0.1" href="#"></a>
<a id="4.1.example1" href="#"></a>
<a id="example1" href="#"></a>
<h5 class="head"><span class="text">Example 1</span></h5>

<p> This provides an example of the efficient use of SSI processing to create
virtual documents.  Each page will comprise a header (containing the body tag
and page header, etc), the document proper and a footer (containg the
end-of-page information, modification date, and end-body tag, etc).

<div class="blockof code">&lt;HTML&gt;
&lt;HEAD&gt;
&lt;TITLE&gt;Just an example!&lt;/TITLE&gt;
&lt;/HEAD&gt;
&lt;!--#include virtual=&quot;header.shtml&quot; --&gt;
&lt;P&gt; This is the document information.
&lt;P&gt; Blah, blah, blah.
&lt;!--#include virtual=&quot;/web/common/footer.shtml&quot; --&gt;
&lt;/HTML&gt;
</div>

<p> A more efficient variant places the document proper in its own, plain HTML
file which is then #included (it is much, much, much more efficient for the
server to <span class="high italic">throw</span> a file at the network, than parse every character in one ;^)

<div class="blockof code">&lt;HTML&gt;
&lt;HEAD&gt;
&lt;TITLE&gt;Just an example!&lt;/TITLE&gt;
&lt;/HEAD&gt;
&lt;!--#include virtual=&quot;header.shtml&quot; --&gt;
&lt;!--#include virtual=&quot;example.html&quot; --&gt;
&lt;!--#include virtual=&quot;footer.shtml&quot; --&gt;
&lt;/HTML&gt;
</div>

<a id="4.1.0.0.2" href="#"></a>
<a id="4.1.example2" href="#"></a>
<a id="example2" href="#"></a>
<h5 class="head"><span class="text">Example 2</span></h5>

<p> This example provides a seemingly more convoluted, but very much more
powerful configuration, that uses recursion to greatly simplify maintenance of
common-layout documents for the end-user.

<p> File 1; the document accessed via the browser URL, doesn't matter what
its name is, this configuration is completely naming independent.

<div class="blockof code">&lt;!--#ssi
#if var={PARENT_FILE_NAME} eqs=&quot;&quot;
   #set var=TITLE value=&quot;Just an Example&quot;
   #include virtual=&quot;/web/common/template.shtml&quot;
#else 
   #include virtual=&quot;document.html&quot;
#endif
--&gt;
</div>

<p> File 2; the TEMPLATE.SHTML refered to by the first include above.

<div class="blockof code">&lt;!--#ssi
#include virtual=&quot;/web/common/header.shtml&quot;
#include virtual=&quot;{DOCUMENT_ROOT}header.html&quot; fmt=&quot;?&quot;
#include virtual=&quot;{DOCUMENT_URI}&quot;
#include virtual=&quot;{DOCUMENT_ROOT}footer.html&quot; fmt=&quot;?&quot;
#include virtual=&quot;/web/common/footer.shtml&quot;
--&gt;
</div>

<p> File 3; the DOCUMENT.HTML refered to by the second include in file 1.

<p> This is just a <span class="high bold">bunch of HTML</span>!

<p> <span class="high bold">This is an explanation of how it works &hellip;</span>

<ol class="list list0">
<li class="item"> the browser accesses file 1 via a URL
<li class="item"> processing begins with file 1
<li class="item"> file 1 checks if it has a parent (is the first file processed),
<br> <span class="high bold">it doesn't and so &hellip;</span>
<li class="item"> file 1 set a variable named TITLE
<li class="item"> file 1 #includes file 2, a site-common template
<li class="item"> file 2 substitutes the TITLE variable contents as the document title
<li class="item"> file 2 #includes a site-common header
<li class="item"> file 2 #includes an optional document-local header
<li class="item"> <span class="high bold">here's the interesting bit &hellip;</span>
<br> file 2 now re-#includes the original document, file 1 (!!)
<li class="item"> file 1 checks if it has a parent (is the first file processed),
<br> <span class="high bold">it does and so &hellip;</span>
<li class="item"> file 1 #includes file 3 (the actual contents of the document)
<li class="item"> file 3 is a plain HTML document, just added to the output
<li class="item"> file 1 is now exhausted and processing returns to file 2
<li class="item"> file 2 #includes an optional document-local footer
<li class="item"> file 2 #includes a site-common footer
<li class="item"> file 2 is exhausted and processing returns to file 1
<li class="item"> file 1 is exhausted and processing stops
</ol>

<p> The following link provides an example of a
<a class="link blank" target="_blank" href="/wasd_root/wasdoc/env/example_document.shtml">such a virtual document</a>.

<a id="4.2" href="#"></a>
<a id="4.2.lastmodifiedinformation" href="#"></a>
<a id="lastmodifiedinformation" href="#"></a>
<h2 class="head"><span class="numb">4.2</span><span class="text">Last-Modified Information</span></h2>

<p> SSI documents generally contain dynamic elements, that is those that may
change with each access to the document (e.g. current date/time).  This makes
evaluation of any document modification date difficult and so by default no
&quot;Last-Modified: <span class="high italic">timestamp</span>&quot; information is supplied against an SSI document.  The
potential efficiencies of having document timestamps, so that requests can be
made for a document to be returned only if modified after a certain date/time
(&quot;If-Modified-Since: <span class="high italic">timestamp</span>&quot;), are significant against
the CPU overheads of processing SSI documents.

<p> WASD allows the document author to determine whether or not a last-modified
header field should be generated for a particular document and which
contributing file(s) should be used to determine it.  This is done using
the #modified directive.  If a virtual document is made up of multiple source
documents (files) each can be assessed using multiple virtual= or file= tags,
the most recently modified will be used to determine if the virtual document
has been modified, and also to generate the last-modified timestamp.

<p> The <span class="high italic">if-modified-since</span> tag compares the determined revision
date/time of the document file(s) with any &quot;If-Modified-Since:&quot;
timestamp supplied with the request.  If the virtual document's revision
date/time is the same or older than the request's then a not-modified (304
status) header is generated and sent to the client and document processing
ceases.  If more recent an appropriate &quot;Last-Modified:&quot; header field is
added to the document and it continues to be processed.

<p> If a request has a &quot;Pragma: no-cache&quot; field (as with Navigator's
<span class="high italic">reload</span> function) the document is always generated (this is
consistent with general WASD behaviour).
The following example illustrates the essential features.

<div class="blockof code">&lt;!--#ssi
#modified
#modified virtual=&quot;/web/common/header.shtml&quot;
#modified virtual=&quot;header.html&quot; fmt=&quot;?&quot;
#modified virtual=&quot;index.html&quot;  fmt=&quot;?&quot;
#modified virtual=&quot;footer.html&quot; fmt=&quot;?&quot;
#modified virtual=&quot;/web/common/footer.shtml&quot;
#modified if-modified-since
--&gt;
</div>

<p> This construct should be placed at the very beginning of the SSI document,
and certainly before there is any chance of output being sent to the browser. 
Once output to the client has occured there can be no change to the response
header information (not unreasonably).

<a id="4.3" href="#"></a>
<a id="4.3.preexpiringdocuments" href="#"></a>
<a id="preexpiringdocuments" href="#"></a>
<h2 class="head"><span class="numb">4.3</span><span class="text">Pre-Expiring Documents</span></h2>


<p> SSI preprocessed documents are <span class="high italic">dynamic</span> in the sense that the
information presented can be different every time the document is generated
(e.g. if time directives are included).  If it is important that each time the
document is accessed it is regenerated then an HTML META tag can be included in
the HTML header to cause the document to <span class="high italic">expire</span>.  This will result
in the document being reloaded with each access.  This can be accomplished two
ways.

<ul class="list">


<li class="item"> Use the #modified directive to include an &quot;Expires:
<span class="high italic">timestamp</span>&quot; response header field.  Place the following construct at
the beginning of the SSI document.

<div class="blockof code">&lt;!--#modified expires=&quot;Fri, 13 Jan 1978 14:00:00 GMT&quot; --&gt;
</div>
 An alternative, if the objective to to pre-expire the document, is to
specify an expiry of zero.  The is specially handled by the SSI engine.  It
adds an expiry response header field, plus cache-control header fields to
suppress document caching (on compliant browsers).

<div class="blockof code">&lt;!--#modified expires=&quot;0&quot; --&gt;
</div>

</ul>


<a id="4.4" href="#"></a>
<a id="4.4.directivesyntax" href="#"></a>
<a id="directivesyntax" href="#"></a>
<h2 class="head"><span class="numb">4.4</span><span class="text">Directive Syntax</span></h2>


<p> The syntax follows closely that used by the other implementations, but
some directives are tailored to the WASD and VMS environment. The directive is
enclosed within an HTML comment and takes the form: 

<div class="blockof code">&lt;!--#<span class="high bold">directive</span> [[<span class="high bold">tag1</span>=&quot;<span class="high italic">value</span>&quot;] [<span class="high bold">tag2</span>=&quot;<span class="high italic">value</span>&quot;] ...] --&gt;
</div>

<p> A <span class="high italic">tag</span> provides parameter information to the directive.  A directive may
have zero, one or more parameters.  Values supplied with any tag may be literal
or via variable substitution (see <a class="link" href="#4.6.variables">4.6 Variables</a>).  A value must be encolosed
by quotation marks if it contains white-space.

<p> A directive <span class="high bold">can be split over multiple lines</span> provided the
new line begins naturally on white-space within the directive.  For example,
this is correctly split

<div class="blockof code">&lt;!--#echo
created[=&quot;&lt;EMPHASIS&gt;(time-format)&quot;] --&gt;
</div>
 while the following is not (and would produce an error)

<div class="blockof code">&lt;!--#echo creat
ed[=&quot;&lt;EMPHASIS&gt;(time-format)&quot;] --&gt;
</div>

<p> Directive and tag keywords are case insensitive.  The tag value may or 
may not be case sensitive, depending upon the command/tag.  Generally the 
effect of a command is to produce additional text to be inserted in the 
document, although it is possible to control the flow of processing in a
document with decision structures.

<a id="4.5" href="#"></a>
<a id="4.5.directives" href="#"></a>
<a id="directives" href="#"></a>
<h2 class="head"><span class="numb">4.5</span><span class="text">Directives</span></h2>

<a id="4.5.0.0.1" href="#"></a>
<a id="4.5.ssidirectives" href="#"></a>
<a id="ssidirectives" href="#"></a>
<h5 class="head"><span class="text">SSI Directives</span></h5>

<table class="tabl">
<tr class="tabr under">
<th class="tabh">Directive
<th class="tabh">Description
<th class="tabh">Section
<tr class="tabr">
<tr class="tabr backlight">
<td class="tabd">#accesses
<td class="tabd">document access count
<td class="tabd"><a class="link" href="#4.5.1.accesses">4.5.1 #ACCESSES</a>
<tr class="tabr">
<td class="tabd">#config
<td class="tabd">document processing options
<td class="tabd"><a class="link" href="#4.5.2.config">4.5.2 #CONFIG</a>
<tr class="tabr backlight">
<td class="tabd">#dir
<td class="tabd">directory listing
<td class="tabd"><a class="link" href="#4.5.3.dir">4.5.3 #DIR</a>
<tr class="tabr">
<td class="tabd">#dcl
<td class="tabd">DCL command processing
<td class="tabd"><a class="link" href="#4.5.4.dcl">4.5.4 #DCL</a>
<tr class="tabr backlight">
<td class="tabd">#echo
<td class="tabd">output information
<td class="tabd"><a class="link" href="#4.5.5.echo">4.5.5 #ECHO</a>
<tr class="tabr">
<td class="tabd">#elif
<td class="tabd">flow control
<td class="tabd"><a class="link" href="#4.5.6.elif">4.5.6 #ELIF</a>
<tr class="tabr backlight">
<td class="tabd">#else
<td class="tabd">flow control
<td class="tabd"><a class="link" href="#4.5.7.else">4.5.7 #ELSE</a>
<tr class="tabr">
<td class="tabd">#endif
<td class="tabd">flow control
<td class="tabd"><a class="link" href="#4.5.8.endif">4.5.8 #ENDIF</a>
<tr class="tabr backlight">
<td class="tabd">#exec
<td class="tabd">same as &quot;#dcl&quot;
<td class="tabd"><a class="link" href="#4.5.9.exec">4.5.9 #EXEC</a>
<tr class="tabr">
<td class="tabd">#exit
<td class="tabd">flow control, stop current document processing
<td class="tabd"><a class="link" href="#4.5.10.exit">4.5.10 #EXIT</a>
<tr class="tabr backlight">
<td class="tabd">#fcreated
<td class="tabd">output file creation date/time
<td class="tabd"><a class="link" href="#4.5.11.fcreated">4.5.11 #FCREATED</a>
<tr class="tabr">
<td class="tabd">#flastmod
<td class="tabd">output file last modification date/time
<td class="tabd"><a class="link" href="#4.5.12.flastmod">4.5.12 #FLASTMOD</a>
<tr class="tabr backlight">
<td class="tabd">#fsize
<td class="tabd">output file size
<td class="tabd"><a class="link" href="#4.5.13.fsize">4.5.13 #FSIZE</a>
<tr class="tabr">
<td class="tabd">#if
<td class="tabd">flow control
<td class="tabd"><a class="link" href="#4.5.14.if">4.5.14 #IF</a>
<tr class="tabr backlight">
<td class="tabd">#include
<td class="tabd">include a text file or another SSI document
<td class="tabd"><a class="link" href="#4.5.15.include">4.5.15 #INCLUDE</a>
<tr class="tabr">
<td class="tabd">#modified
<td class="tabd">HTTP response control
<td class="tabd"><a class="link" href="#4.5.16.modified">4.5.16 #MODIFIED</a>
<tr class="tabr backlight">
<td class="tabd">#orif
<td class="tabd">flow control
<td class="tabd"><a class="link" href="#4.5.17.orif">4.5.17 #ORIF</a>
<tr class="tabr">
<td class="tabd">#printenv
<td class="tabd">list document variables
<td class="tabd"><a class="link" href="#4.5.18.printenv">4.5.18 #PRINTENV</a>
<tr class="tabr backlight">
<td class="tabd">#set
<td class="tabd">assign value to a document variable
<td class="tabd"><a class="link" href="#4.5.19.set">4.5.19 #SET</a>
<tr class="tabr">
<td class="tabd">#ssi
<td class="tabd">block of SSI statements
<td class="tabd"><a class="link" href="#4.5.20.ssi">4.5.20 #SSI</a>
<tr class="tabr backlight">
<td class="tabd">#stop
<td class="tabd">stop SSI processing completely
<td class="tabd"><a class="link" href="#4.5.21.stop">4.5.21 #STOP</a>
</table>

<a id="4.5.1" href="#"></a>
<a id="4.5.1.accesses" href="#"></a>
<a id="accesses" href="#"></a>
<h3 class="head"><span class="numb">4.5.1</span><span class="text">#ACCESSES</span></h3>

<p> The <span class="high italic">#accesses</span> directive allows the number of times the document 
has been accessed to be included.  It does this by creating a counter file in 
the same location and using the same name with a dollar symbol appended to the 
type (extension).  The count may be reset by deleting the file.  This is an 
expensive function (in terms of file system activity) and so should be used 
appropriately.  It can be disabled by server configuration.  Three tags provide 
additional functionality: 

<ul class="list">

<li class="item"> <span class="high bold">ORDINAL</span>

<div class="blockof code">&lt;!--#accesses ordinal --&gt;
</div>

<p> Provides the count as 1st, 2nd, 3rd, 4th, 5th &hellip; 10th, 11th, 12th
&hellip; 120th, 121st, 122nd, etc.

<li class="item"> <span class="high bold">SINCE</span>

<div class="blockof code">&lt;!--#accesses since=&quot;<span class="high italic">text</span>&quot; --&gt;
</div>

<p> This tag includes the specified text immediately after the access count is 
displayed, then adds the creation date of the counter file.

<li class="item"> <span class="high bold">TIMEFMT</span>

<div class="blockof code">&lt;!--#accesses since=&quot;<span class="high italic">text</span>&quot; timefmt=&quot;[<span class="high italic">time-format</span>]&quot; --&gt;
</div>

Allows the time format of the <span class="high italic">since</span> tag to be supplied, where 
<span class="high italic">time-format</span> is specified according to <a class="link" href="#4.10.timeformat">4.10 Time Format</a>. 

</ul>

<a id="4.5.2" href="#"></a>
<a id="4.5.2.config" href="#"></a>
<a id="config" href="#"></a>
<h3 class="head"><span class="numb">4.5.2</span><span class="text">#CONFIG</span></h3>

<p> The <span class="high italic">#config</span> directive allows time and file size formats to be  specified
for all subsequent directives providing these values.  Optional  specifications
for individual directives may still be made, and override, do  not supercede,
any specification made using a <span class="high italic">config</span> directive.  A  <span class="high italic">config</span> directive may
be made once, or any number of times in a  document, and applies until another
is made, or until the end of the document. 

<ul class="list">

<li class="item"> <span class="high bold">ERRMSG</span>

<div class="blockof code">&lt;!--#config errmsg=&quot;<span class="high italic">string</span>&quot; --&gt;
</div>

<p> This directive allows the error message generated if a problem problem
processing the SSI document occurs (e.g. miss-spelled directive) to be
specified in the document. 

<li class="item"> <span class="high bold">TIMEFMT</span>

<div class="blockof code">&lt;!--#config timefmt=&quot;<span class="high italic">time-format</span>&quot; --&gt;
</div>

Where <span class="high italic">time-format</span> is specified according to<a class="link" href="#4.10.timeformat">4.10 Time Format</a>.

<li class="item"> <span class="high bold">SIZEFMT</span>

<div class="blockof code">&lt;!--#config sizefmt=&quot;<span class="high italic">size-format</span>&quot; --&gt;
</div>

Where <span class="high italic">size-format</span> is specified using the following keywords:

<ul class="list list0">
<li class="item"> &quot;abbrev&quot; (as bytes, kbytes, Mbytes)
<li class="item"> &quot;blocks&quot; (VMS blocks, used)
<li class="item"> &quot;bytes&quot; (e.g. &quot;1,256,731 bytes&quot;)
</ul>

<li class="item"> <span class="high bold">TRACE</span>

<div class="blockof code">&lt;!--#config trace=&quot;<span class="high italic">1</span>&verbar;<span class="high italic">0</span>&quot;  --&gt;
</div>

<p> Switches document processing trace on or off, intended for use when
debugging more complex or flow-controlled SSI documents.

<p> Output from a trace is colour-coded.

<ul class="list">

<li class="item"> <span class="high bold">Blue &ndash; </span>
As a line is read from the document is is displayed in blue.  The text is
preceded by a square-bracketed source file line number and flow-control level.

<li class="item"> <span class="high bold">Red &ndash; </span>
As an SSI statement is actually processed it is displayed in red. Due to
document parsing this may occur at some point after the line is read from file.

<li class="item"> <span class="high bold">Magenta &ndash; </span>
As variables are set or read the variable name and value is displayed.  A
variable set has the name separated from the value by an equate symbol
(&quot;=&quot;), when being read the character is a full-colon (&quot;:&quot;). 

<li class="item"> <span class="high bold">Black &ndash; </span>
Document (HTML and text) output is displayed as black plain text.

</ul>

<p> The following link provides an example of a
<a class="link blank" target="_blank" href="/wasd_root/wasdoc/env/xssi.shtml?httpd=ssi&amp;trace=on">document trace</a>.

</ul>

<a id="4.5.3" href="#"></a>
<a id="4.5.3.dir" href="#"></a>
<a id="dir" href="#"></a>
<h3 class="head"><span class="numb">4.5.3</span><span class="text">#DIR</span></h3>

<p> The <span class="high italic">#dir</span> directive generates an <span class="high italic">Index of &hellip;</span> directory listing
inside an HTML document.  Apart from not  generating a title (it is up to the
pre-processed document to title, or  otherwise caption, the listing) it
provides all the functionality of the WASD  HTTPd directory listing (see
<a class="link" href="#3.directorylisting">3. Directory Listing</a>), including query string format control via the
&quot;par=&quot; parameter (note that from the &quot;?httpd=index&quot; introducer used with
directory listings is not necessary from SSI). It is an WASD HTTPd extension to
pre-processed HTML.

<ul class="list">

<li class="item"> <span class="high bold">FILE</span>

<p> Listing specified using a VMS file path. 

<div class="blockof code">&lt;!--#dir file=&quot;<span class="high italic">file-name</span>&quot; [par=&quot;<span class="high italic">server-directive(s)</span>&quot;] --&gt;
</div>

<li class="item"> <span class="high bold">VIRTUAL</span>

<p> Listing specified using URL-style syntax. 

<div class="blockof code">&lt;!--#dir virtual=&quot;<span class="high italic">path</span>&quot; [par=&quot;<span class="high italic">server-directive(s)</span>&quot;] --&gt;
</div>

</ul>

<p> For example:

<div class="blockof code">&lt;!--#dir file=&quot;/wasd_root/src/httpd/&quot; --&gt;

&lt;!--#dir file=&quot;/wasd_root/src/httpd/*.c&quot; par=&quot;layout=UL__S&amp;nops=yes&quot; --&gt;
</div>

<a id="4.5.4" href="#"></a>
<a id="4.5.4.dcl" href="#"></a>
<a id="dcl" href="#"></a>
<h3 class="head"><span class="numb">4.5.4</span><span class="text">#DCL</span></h3>

<p> The <span class="high italic">#dcl</span> directive executes a DCL command and incorporates the output
into the processed document.  It is an WASD HTTPd extension to the more common
<span class="high italic">exec</span> directive, which is also included.

<p> By default, output from the DCL command has all HTML-forbidden characters
(e.g. &quot;&lt;&quot;, &quot;&amp;&quot;) escaped before inclusion in the processed document.  Thus
command output cannot interfere with document  markup, but nor can the DCL
command provide HTML markup.  This behaviour may be changed by appending the
following tag to the directive:

<div class="blockof code">type=&quot;text/html&quot;
</div>

<p> Some <span class="high italic">#dcl</span> directives are for <span class="high italic">privileged</span> documents only, documents
defined as those being owned by the SYSTEM account, and not  being
world-writeable.  The reason for this should be obvious.  There are implicit
security concerns about any document being able to execute any DCL command(s),
even if it is being executed in a completely unprivileged process.  Hence only
<span class="high italic">innocuous</span> commands are allowed in standard documents. 

<ul class="list">

<li class="item"> <span class="high bold">SAY</span>

<p> Execute the DCL &quot;WRITE SYS&dollar;OUTPUT&quot; command, using the  specified parameter. 

<div class="blockof code">&lt;!--#dcl say=&quot;hello.&quot; --&gt;
</div>

<li class="item"> <span class="high bold">SHOW</span>

<p> Execute the DCL &quot;SHOW&quot; command, using the specified parameter. 

<div class="blockof code">&lt;!--#dcl show=&quot;device/full tape1:&quot; --&gt;
</div>

<li class="item"> <span class="high bold">DIR</span>

<p> Execute the DCL &quot;DIRECTORY&quot; command, using the supplied file specification. 
Qualifiers may be included in the optional &quot;par&quot; tag to control the format of
the listing.

<div class="blockof code">&lt;!--#dcl dir=&quot;web:[000000]&quot; --&gt;
&lt;!--#dcl dir=&quot;web:[000000]&quot; par=&quot;/nohead/notrail&quot; --&gt;
&lt;!--#dcl dir=&quot;web:[000000]&quot; par=&quot;/size/date&quot; --&gt;
</div>

<li class="item"> <span class="high bold">EXEC</span> (privileged)

<p> Execute the specified DCL command.

<div class="blockof code">&lt;!--#dcl exec=&quot;show device/full tape1:&quot; --&gt;
</div>

<li class="item"> <span class="high bold">FILE</span> (privileged)

<p> Execute the DCL command procedure specified as a VMS file path, with any 
specified parameters applied to the procedure. 

<div class="blockof code">&lt;!--#dcl file=&quot;WASD_ROOT:[SHTML]TEST.COM&quot; par=&quot;PARAM1 PARAM2&quot; --&gt;
</div>

<li class="item"> <span class="high bold">VIRTUAL</span> (privileged)

<p> Execute the DCL command procedure specified in URL-style syntax, with any 
specified parameters applied to the procedure. 

<div class="blockof code">&lt;!--#dcl virtual=&quot;../shtml/test.com&quot; par=&quot;PARAM1 PARAM2&quot; --&gt;
</div>

<li class="item"> <span class="high bold">CGI</span>

<p> Execute the specified CGI script.  The CGI response header is suppressed and
only the response body is included in the document.

<div class="blockof code">&lt;!--#dcl cgi=&quot;/cgi-bin/calendar?2004&quot; --&gt;
</div>

</ul>

<a id="4.5.5" href="#"></a>
<a id="4.5.5.echo" href="#"></a>
<a id="echo" href="#"></a>
<h3 class="head"><span class="numb">4.5.5</span><span class="text">#ECHO</span></h3>

<p> The <span class="high italic">#echo</span> directive incorporates the specified information into the
processed document. Multiple tags may be used within the one directive.

<ul class="list">

<li class="item"> <span class="high bold">VALUE=</span>
<br><span class="high bold">VAR=</span>

<p> Any SSI variable (e.g. CREATED), CGI variable (e.g. HTTP_USER_AGENT),
or document assigned variable (e.g. EXAMPLE1), see <a class="link" href="#4.6.variables">4.6 Variables</a>.

<div class="blockof code">&lt;!--#echo value={created} var={example1} --&gt;
</div>

<li class="item"> <span class="high bold">CREATED</span>

<p> The date/time of the current document's creation.

<div class="blockof code">&lt;!--#echo created[=&quot;<span class="high italic">time-format</span>&quot;] --&gt;
</div>

<li class="item"> <span class="high bold">DATE_LOCAL</span>

<p> Include the current date/time.

<div class="blockof code">&lt;!--#echo date_local[=&quot;<span class="high italic">time-format</span>&quot;] --&gt;
</div>

<li class="item"> <span class="high bold">DATE_GMT</span>

<p> Include the current Greenwich Mean Time (UTC) date/time.

<div class="blockof code">&lt;!--#echo date_gmt[=&quot;<span class="high italic">time-format</span>&quot;] --&gt;
</div>

<li class="item"> <span class="high bold">DOCUMENT_NAME</span>

<p> The current document's URL-style path.

<div class="blockof code">&lt;!--#echo document_name --&gt;
</div>

<li class="item"> <span class="high bold">FILE_NAME</span>

<p> The current document's VMS file path.

<div class="blockof code">&lt;!--#echo file_name --&gt;
</div>

<li class="item"> <span class="high bold">HEADER</span>

<p> Append the specified string to the response header (with correct carriage
control).  Should be used as early as possible in the SSI document.

<div class="blockof code">&lt;!--#echo header=&quot;Pragma: no-cache&quot; --&gt;
&lt;!--#echo header=&quot;X-Extension-Header: just an example!&quot; --&gt;
</div>

<li class="item"> <span class="high bold">LAST_MODIFIED</span>

<p> The date/time of the current document's last modification.

<div class="blockof code">&lt;!--#echo last_modified[=&quot;<span class="high italic">time-format</span>&quot;] --&gt;
</div>

</ul>

<a id="4.5.6" href="#"></a>
<a id="4.5.6.elif" href="#"></a>
<a id="elif" href="#"></a>
<h3 class="head"><span class="numb">4.5.6</span><span class="text">#ELIF</span></h3>

<p> The <span class="high italic">#elif</span> directive (else-if) allows blocks of HTML markup and SSI
directives to be conditionally processed, see <a class="link" href="#4.7.flowcontrol">4.7 Flow Control</a> and
<a class="link" href="#4.5.14.if">4.5.14 #IF</a>.  This directive effectively allows a <span class="high italic">case</span> statement to be
constructed.

<div class="blockof code">&lt;!--#elif var=&quot;[<span class="high italic">variable}</span>&verbar;<span class="high italic">literal</span>&quot; --&gt;
</div>
 
<a id="4.5.7" href="#"></a>
<a id="4.5.7.else" href="#"></a>
<a id="else" href="#"></a>
<h3 class="head"><span class="numb">4.5.7</span><span class="text">#ELSE</span></h3>

<p> The <span class="high italic">#else</span> directive allows blocks of HTML markup and SSI directives to be
conditionally processed, see <a class="link" href="#4.7.flowcontrol">4.7 Flow Control</a>.  It is the default block
after an &quot;#if&quot;, &quot;#orif&quot; or &quot;#elif&quot;.

<div class="blockof code">&lt;!--#else --&gt;
</div>
 
<a id="4.5.8" href="#"></a>
<a id="4.5.8.endif" href="#"></a>
<a id="endif" href="#"></a>
<h3 class="head"><span class="numb">4.5.8</span><span class="text">#ENDIF</span></h3>

<p> The <span class="high italic">#endif</span> directive marks the end of a block of document text
being conditionally processed, see <a class="link" href="#4.7.flowcontrol">4.7 Flow Control</a>.

<div class="blockof code">&lt;!--#endif --&gt;
</div>

<a id="4.5.9" href="#"></a>
<a id="4.5.9.exec" href="#"></a>
<a id="exec" href="#"></a>
<h3 class="head"><span class="numb">4.5.9</span><span class="text">#EXEC</span></h3>

<p> The <span class="high italic">#exec</span> directive executes a DCL command and incorporates the  output
into the processed document.  It is the VMS equivalent of the  <span class="high italic">exec</span> shell
directive of some Unix implementations.  It is  implemented in the same way as
the #DCL directive, and so the general detail  of that directive applies.  It
supports both the <span class="high italic">cmd</span> tag and the  <span class="high italic">cgi</span> tag, allowing execution of CGI
scripts (the response header is absorbed).

<div class="blockof code">&lt;!--#exec cmd=&quot;show device/full tape1:&quot; --&gt;
&lt;!--#exec cgi=&quot;/cgi-bin/calendar?2004&quot; --&gt;
</div>

<p> The <span class="high italic">#exec</span> directive is for <span class="high italic">privileged</span> documents only, documents
defined as those being owned by the SYSTEM account, and not being
world-writeable.  The reason for this should be obvious.  There are implicit
security concerns about any document being able to execute any DCL command(s),
even if it is being executed in a completely unprivileged process. 
 
<a id="4.5.10" href="#"></a>
<a id="4.5.10.exit" href="#"></a>
<a id="exit" href="#"></a>
<h3 class="head"><span class="numb">4.5.10</span><span class="text">#EXIT</span></h3>

<p> The <span class="high italic">#exit</span> directive causes the server to stop processing the current SSI
file.  If the current file was an #included SSI file, processing continues back
with the parent file.  Note that the <span class="high italic">#stop</span> directive also is available, it
stops processing of the entire virtual document.

<div class="blockof code">&lt;!--#exit --&gt;
</div>
 
<a id="4.5.11" href="#"></a>
<a id="4.5.11.fcreated" href="#"></a>
<a id="fcreated" href="#"></a>
<h3 class="head"><span class="numb">4.5.11</span><span class="text">#FCREATED</span></h3>

<p> The <span class="high italic">#fcreated</span> directive incorporates the creation date/time of a
specified file/document into the processed document. 

<ul class="list">

<li class="item"> <span class="high bold">FILE</span>

<p> Document specified using a VMS file path. 

<div class="blockof code">&lt;!--#fcreated file=&quot;<span class="high italic">file-name</span>&quot; [fmt=&quot;<span class="high italic">time-format</span>&quot;] --&gt;
</div>

<li class="item"> <span class="high bold">VIRTUAL</span>

<p> Document specified using URL-style syntax. 

<div class="blockof code">&lt;!--#fcreated virtual=&quot;<span class="high italic">path</span>&quot; [fmt=&quot;<span class="high italic">time-format</span>&quot;] --&gt;
</div>

</ul>

<a id="4.5.12" href="#"></a>
<a id="4.5.12.flastmod" href="#"></a>
<a id="flastmod" href="#"></a>
<h3 class="head"><span class="numb">4.5.12</span><span class="text">#FLASTMOD</span></h3>

<p> The <span class="high italic">#flastmod</span> directive incorporates the last modification 
date/time of a specified file/document into the processed document. 

<ul class="list">


<li class="item"> <span class="high bold">FILE</span>

<p> Document specified using a VMS file path. 

<div class="blockof code">&lt;!--#flastmod file=&quot;<span class="high italic">file-name</span>&quot; [fmt=&quot;<span class="high italic">time-format</span>&quot;] --&gt;
</div>

<li class="item"> <span class="high bold">VIRTUAL</span>

<p> Document specified using URL-style syntax. 

<div class="blockof code">&lt;!--#flastmod virtual=&quot;<span class="high italic">path</span>&quot; [fmt=&quot;<span class="high italic">time-format</span>&quot;] --&gt;
</div>

</ul>

<a id="4.5.13" href="#"></a>
<a id="4.5.13.fsize" href="#"></a>
<a id="fsize" href="#"></a>
<h3 class="head"><span class="numb">4.5.13</span><span class="text">#FSIZE</span></h3>

<p> The <span class="high italic">#fsize</span> directive incorporates the size, in bytes, kbytes or 
Mbytes, of a specified file/document into the processed document. 

<ul class="list">

<li class="item"> <span class="high bold">FILE</span>

<p> Document specified using a VMS file path.

<div class="blockof code">&lt;!--#fsize file=&quot;<span class="high italic">file-name</span>&quot; [fmt=&quot;<span class="high italic">size-format</span>&quot;] --&gt;
</div>

<li class="item"> <span class="high bold">VIRTUAL</span>

<p> Document specified using URL-style syntax.

<div class="blockof code">&lt;!--#fsize virtual=&quot;<span class="high italic">path</span>&quot; [fmt=&quot;<span class="high italic">size-format</span>&quot;] --&gt;
</div>

</ul>

<a id="4.5.14" href="#"></a>
<a id="4.5.14.if" href="#"></a>
<a id="if" href="#"></a>
<h3 class="head"><span class="numb">4.5.14</span><span class="text">#IF</span></h3>

<p> The <span class="high italic">#if</span> directive allows blocks of HTML markup and SSI directives to be
conditionally processed, see <a class="link" href="#4.7.flowcontrol">4.7 Flow Control</a>.

<ul class="list">

<li class="item"> <span class="high bold">VAR=</span>

<p> Variable the decision will be based upon.

<div class="blockof code">&lt;!--#if var=&quot;[<span class="high italic">variable}</span>&verbar;<span class="high italic">literal</span>]&quot; --&gt;
</div>

<li class="item"> <span class="high bold">EQS=</span>

<p> Is the string the same as in the variable?

<li class="item"> <span class="high bold">EQ=</span>

<p> If the variable is a number is it the same as this?

<li class="item"> <span class="high bold">GT=</span>

<p> If the variable is a number is it greater than this?

<li class="item"> <span class="high bold">LT=</span>

<p> If the variable is a number is it less than this?

<li class="item"> <span class="high bold">SRCH=</span>

<p> Search the variable for this string.  May contain the <span class="high monosp">*</span> (asterisk)
wildcard, matching one or more characters, and the <span class="high bold">%</span> (percentage), matching
any single character.

</ul>

<p> As in the following examples:

<div class="blockof code">&lt;!--#if value={DOCUMENT_URI} eqs=&quot;/wasd_root/doc/env/xssi.shtml&quot; --&gt;
&lt;!--#if value={COUNT} lt=10 --&gt;
&lt;!--#if value=&quot;This is a test!&quot; eqs={STRING} --&gt;
&lt;!--#if value={PATH_INFO} srch=&quot;*/env/*&quot; --&gt;
</div>
 
<a id="4.5.15" href="#"></a>
<a id="4.5.15.include" href="#"></a>
<a id="include" href="#"></a>
<h3 class="head"><span class="numb">4.5.15</span><span class="text">#INCLUDE</span></h3>

<p> The <span class="high italic">#include</span> directive incorporates the contents of a specified 
file/document into the processed document.

<ul class="list">

<li class="item"> <span class="high bold">FILE</span>

<p> Include the contents of the document specified using a VMS file
specification.

<div class="blockof code">&lt;!--#include file=&quot;<span class="high italic">file-name</span>&quot; --&gt;
</div>

<li class="item"> <span class="high bold">VIRTUAL</span>

<p> Include the contents of the document specified using URL-style syntax.

<div class="blockof code">&lt;!--#include virtual=&quot;<span class="high italic">path</span>&quot; --&gt;
</div>

</ul>

<p> The contents of the specified file are included differently depending on the
MIME content-type of the file.  Files of <span class="high italic">text/html</span> content-type (HTML
documents) are included directly, and any HTML tags within them contribute to
the markup of the document.  Files of <span class="high italic">text/plain</span> content-type (plain-text
documents) are encapsulated in &quot;&lt;pre&gt;&lt;/pre&gt;&quot; tags and have all HTML-forbidden
characters (e.g. &quot;&lt;&quot;, &quot;&amp;&quot;) escaped before inclusion in the processed document. 
An HTML file can be forced to be included as plain-text by using the following
syntax:

<div class="blockof code">&lt;!--#include virtual=&quot;example.html&quot; type=&quot;text/plain&quot; --&gt;
</div>

<p> To &quot;force&quot; a file to be considered as text regardless of the actual content
(as determined by the server from the file type), use on of the following
depending on whether it should be rendered as plain or HTML text.

<div class="blockof code">&lt;!--#include virtual=&quot;example.html&quot; content=&quot;text/plain&quot; --&gt;
&lt;!--#include virtual=&quot;example.html&quot; content=&quot;text/html&quot; --&gt;
</div>

<p> Other SSI files may be included and their content dynamically included in
the resulting document.  To prevent a recursive inclusion of documents the
nesting level of SSI documents is limited to five.
 
<a id="4.5.16" href="#"></a>
<a id="4.5.16.modified" href="#"></a>
<a id="modified" href="#"></a>
<h3 class="head"><span class="numb">4.5.16</span><span class="text">#MODIFIED</span></h3>

<p> The <span class="high italic">#modified</span> directive allows a document author to control the
&quot;Last-Modified:&quot;/&quot;If-Modified-Since:&quot;/&quot;304 Not modified&quot; behaviour of an SSI
document.  See <a class="link" href="#4.1.virtualdocuments">4.1 Virtual Documents</a>.

<ul class="list">

<li class="item"> <span class="high bold italic">no tag</span>

<p> Get the last-modified date/time of the current document.

<div class="blockof code">&lt;!--#modified --&gt;
</div>

<li class="item"> <span class="high bold">FILE</span>

<p> Get the last-modified date/time of the document specified using VMS file
specification.

<div class="blockof code">&lt;!--#modified file=&quot;<span class="high italic">file-name</span>&quot; --&gt;
</div>

<li class="item"> <span class="high bold">VIRTUAL</span>

<p> Get the last-modified date/time of the document specified using URL-style
syntax.

<div class="blockof code">&lt;!--#modified virtual=&quot;<span class="high italic">path</span>&quot; --&gt;
</div>

<li class="item"> <span class="high bold">IF-MODIFIED-SINCE</span>

<p> Compares any &quot;If-Modified-Since:&quot; request header timestamp to the revision
date time obtained using <span class="high italic">file</span> or <span class="high italic">virtual</span> (most recent if multiple).  If
the document timestamp is more recent (has been modified) an appropriate
&quot;Last-Modified&quot; response header field is generated and added to the response,
and document processing continues.  If it has not been modified a &quot;304&quot;
response header is return (document not modified) and document processing
stops.

<div class="blockof code">&lt;!--#modified if-modified-since --&gt;
</div>

<li class="item"> <span class="high bold">LAST-MODIFIED</span>
<p> Adds a &quot;Last-Modified:&quot; response header field using a timestamp retrieved
using <span class="high italic">file</span> or <span class="high italic">virtual</span> (note: unnecessary if the <span class="high italic">if-modified-since</span> tag
is used).

<div class="blockof code">&lt;!--#modified last-modified --&gt;
</div>

<li class="item"> <span class="high bold">EXPIRES</span>

<p> Adds a &quot;Expires:&quot; response header field.  The string literal should be a legitimate RFC-1123 date string.  This can be
used for pre-expiring documents (so they are always reloaded), set it to a date
in the not-too-distant past (as in the example below). Of course it could also
be used for setting the legitimate future expiry of documents.

<div class="blockof code">&lt;!--#modified expires=&quot;Fri, 13 Jan 1978 14:00:00 GMT&quot; --&gt;
</div>

</ul>

<a id="4.5.17" href="#"></a>
<a id="4.5.17.orif" href="#"></a>
<a id="orif" href="#"></a>
<h3 class="head"><span class="numb">4.5.17</span><span class="text">#ORIF</span></h3>

<p> The <span class="high italic">#orif</span> directive (or-if) allows blocks of HTML markup and SSI
directives to be conditionally processed, see <a class="link" href="#4.7.flowcontrol">4.7 Flow Control</a> and
<a class="link" href="#4.5.14.if">4.5.14 #IF</a>.  In the absence of any real expression parser this directive allows
a block to be processed if one of multiple conditions are met.

<div class="blockof code">&lt;!--#orif var=&quot;[<span class="high italic">variable}</span>&verbar;<span class="high italic">literal</span>&quot; --&gt;
</div>
 
<a id="4.5.18" href="#"></a>
<a id="4.5.18.printenv" href="#"></a>
<a id="printenv" href="#"></a>
<h3 class="head"><span class="numb">4.5.18</span><span class="text">#PRINTENV</span></h3>

<p> The <span class="high italic">#printenv</span> directive prints a plain-text list of all SSI-specific,
then CGI, then document-assigned variables (see <a class="link" href="#4.6.variables">4.6 Variables</a>). This
directive is intended for use when debugging flow-controlled SSI documents.

<div class="blockof code">&lt;!--#printenv --&gt;
</div>

<p> The following link uses the example SSI document
<a class="link blank" target="_blank" href="/wasd_root/wasdoc/env/xssi.shtml?httpd=ssi&amp;text=plain">WASD_ROOT:[WASDOC.ENV]XSSI.SHTML</a> to
<a class="link blank" target="_blank" href="/wasd_root/wasdoc/env/xssi.shtml">demonstrate</a> this.

<a id="4.5.19" href="#"></a>
<a id="4.5.19.set" href="#"></a>
<a id="set" href="#"></a>
<h3 class="head"><span class="numb">4.5.19</span><span class="text">#SET</span></h3>

<p> The <span class="high italic">#set</span> directive allows a user variable to be assigned or modified,
see <a class="link" href="#4.6.variables">4.6 Variables</a>.

<div class="blockof code">&lt;!--#set var=&quot;<span class="high italic">variable-name</span>&quot; value=&quot;<span class="high italic">whatever</span>&quot; --&gt;
</div>

<p> Variables are always stored as strings and have a finite but generally
usable length.  Some comparison tags provided in the flow-control directives
treat the contents of variables as numbers.  A numeric conversion is done at
evaluation time.
 
<a id="4.5.20" href="#"></a>
<a id="4.5.20.ssi" href="#"></a>
<a id="ssi" href="#"></a>
<h3 class="head"><span class="numb">4.5.20</span><span class="text">#SSI</span></h3>

<p> The <span class="high italic">#ssi</span> directive allows multiple SSI directives to be used without the
requirement to enclose them in the normal HTML comment tags (i.e. &lt;!-- --&gt;).
This helps reduce the clutter in an SSI document that uses the extended
capabilities of variable assignment and flow control. Document HTML cannot be
included between the opening and closing comment elements of the &quot;#ssi&quot; tag,
although of course document output can be generated using the &quot;#echo&quot; tag.

<div class="blockof code">&lt;!--#ssi
#set var=HOUR value={DATE_LOCAL,12,2}
#if var={HOUR} lt=12
  #set var=GREETING value=&quot;Good morning&quot;
#elif var={HOUR} lt=19
  #set var=GREETING value=&quot;Good afternoon&quot;
#else
  #set var=GREETING value=&quot;Good evening&quot;
#endif
--&gt;
</div>

<p> The example SSI document
<a class="link blank" target="_blank" href="/wasd_root/wasdoc/env/xssi.shtml?httpd=ssi&amp;text=plain">WASD_ROOT:[WASDOC.ENV]XSSI.SHTML</a> will
<a class="link blank" target="_blank" href="/wasd_root/wasdoc/env/xssi.shtml">demonstrate</a> this concept.

<a id="4.5.21" href="#"></a>
<a id="4.5.21.stop" href="#"></a>
<a id="stop" href="#"></a>
<h3 class="head"><span class="numb">4.5.21</span><span class="text">#STOP</span></h3>

<p> The <span class="high italic">#stop</span> directive causes the server to stop processing the virtual
document.  It can be used with flow control structures to conditionally process
only part of a virtual document.  Note that the <span class="high italic">#exit</span> directive also is
available, it stops processing of the current file (for nested #includes,
etc.). 

<div class="blockof code">&lt;!--#stop --&gt;
</div>
 
<a id="4.6" href="#"></a>
<a id="4.6.variables" href="#"></a>
<a id="variables" href="#"></a>
<h2 class="head"><span class="numb">4.6</span><span class="text">Variables</span></h2>

<p> The SSI processor maintains information about the server, date and time,
request path, request parameters, etc., accessible via <span class="high italic">variable name</span>.
Although these <span class="high italic">server variables</span> cannot be modified by the document the
processor also allows the author to create and assign new <span class="high italic">document variables</span>
by name.  SSI variables have global scope, with a small number of exceptions
listed below.  That is, the same set of variables are shared with the parent
document by any other SSI documents <span class="high italic">#included</span>, and any included by those,
etc.

<p> Local variables:

<ul class="list list0">
<li class="item"> DOCUMENT_DEPTH &ndash; the current nesting level for #included SSI files
<li class="item"> PARENT_FILE_NAME &ndash; if an #included SSI file the name of the including file
<li class="item">THIS_FILE_NAME &ndash; the name of the SSI file currently being processed
</ul>

<p> One other special-purpose variable, THE_FILE_NAME, see <a class="link" href="#4.9.1.thefilename">4.9.1 THE_FILE_NAME</a>.

<p> Server assigned variables comprise some SSI-specific as well as the same
CGI variables available to CGI scripts. These may be found listed in the
<a class="link blank" target="_blank" href="../scripting/#cgivariables">CGI Variables</a> in <a class="link blank" target="_blank" href="../scripting/#0.">WASD Scripting</a> document.

&lt;P&gt; The following link provides a list of the
<a class="link blank" target="_blank" href="/wasd_root/wasdoc/env/xssi.shtml?httpd=ssi&amp;printenv=yes">SSI and CGI variables</a> available to SSI documents.

<p> Whenever a directive uses information from a tag (see <a class="link" href="#4.4.directivesyntax">4.4 Directive Syntax</a>) values from variables may be substituted as as a whole or partial
value.  This is done using curly braces to delimit the variable name.  For
example

<div class="blockof code">&lt;!--#include virtual={FILENAME} --&gt;
</div>

would include the file named by the contents of a variable named &quot;FILENAME&quot;.
When using a variable in a tag it is not necessary to enclose the tag parameter
in quotation marks unless there is additional literal text.  Variables may also
be used within literal strings, producing a compound, resultant string, as in
the following example

<div class="blockof code">&lt;!--#echo var=&quot;Hello {REMOTE_HOST}, time here is {LOCAL_TIME}&quot; --&gt;
</div>

<p> Variables are considered numeric when they begin with a digit.  Those
beginning with an alphabetic are considered to have a numeric value of zero.

<p> Variables are considered to be boolean <span class="high italic">false</span> if empty and <span class="high italic">true</span> when
not empty.

<a id="4.6.0.0.1" href="#"></a>
<a id="4.6.substrings" href="#"></a>
<a id="substrings" href="#"></a>
<h5 class="head"><span class="text">Substrings</span></h5>

<p> It is also possible to extract substrings from variables using the following
syntax,

<div class="blockof code">{<span class="high italic">variable-name</span>,<span class="high italic">start-index</span>,<span class="high italic">count</span>}
</div>

<p> where the start-index begins with the zeroth character and numbers up to
the last character in the string, and count may be zero or any positive number.
If only one number is supplied it is regarded as a count and the string is
extracted from the zeroth character.

<p> To illustrate,

<div class="blockof code">&lt;!--#set var=EXAMPLE value=&quot;This is an example!&quot; --&gt;
&lt;!--#echo &quot;{EXAMPLE,2}at was {EXAMPLE,8,999}&quot; --&gt;
</div>

<p> would output

<div class="blockof code">That was an example!
</div>

<a id="4.6.0.0.2" href="#"></a>
<a id="4.6.otherquotfunctionsquot" href="#"></a>
<a id="otherquotfunctionsquot" href="#"></a>
<h5 class="head"><span class="text">Other &quot;Functions&quot;</span></h5>

<ul class="list">

<li class="item"> <span class="high bold">LENGTH - </span> This &quot;function&quot; returns the length of the parameter string
(or substring).

<div class="blockof code">{<span class="high italic">variable-name</span>[,<span class="high italic">start-index</span>],<span class="high italic">count</span>]],length}
</div>

<p> For example

<div class="blockof code">&lt;!--#set var=EXAMPLE value=&quot;This is an example!&quot; --&gt;
&lt;!--#echo &quot;\&quot;{EXAMPLE}\&quot; is {EXAMPLE,length} characters long.&quot; --&gt;
&lt;!--#echo &quot;\&quot;{EXAMPLE,5,2}\&quot; is {EXAMPLE,5,2,length} characters long!&quot; --&gt;
</div>

<p> would output

<div class="blockof code">&quot;This is an example!&quot; is 19 characters long.
&quot;is&quot; is 2 characters long!
</div>

<li class="item"> <span class="high bold">EXISTS &ndash; </span> This &quot;function&quot; returns <span class="high italic">true</span> if the variable exists and
<span class="high italic">false</span> if it does not.  This is useful as accessing a non-existant variable
will result in an SSI error message with document processing ceasing!

<div class="blockof code">var={<span class="high italic">variable-name</span>,exists}
</div>

<p> For example

<div class="blockof code">&lt;!--#set var=BOGUS_VARIABLE value=&quot;irrelevant&quot; --&gt;
&lt;!--#if var={BOGUS_VARIABLE,exists} --&gt;
&amp;quot;BOGUS_VARIABLE&amp;quot; exists!
&lt;!--#else --&gt;
&amp;quot;BOGUS_VARIABLE&amp;quot; does NOT exist!
&lt;!--#endif --&gt;
</div>

</ul>

<p> The example SSI document
<a class="link blank" target="_blank" href="/wasd_root/wasdoc/env/xssi.shtml?httpd=ssi&amp;text=plain">WASD_ROOT:[WASDOC.ENV]XSSI.SHTML</a> can
<a class="link blank" target="_blank" href="/wasd_root/wasdoc/env/xssi.shtml">demonstrate</a> these concepts.
 
<a id="4.7" href="#"></a>
<a id="4.7.flowcontrol" href="#"></a>
<a id="flowcontrol" href="#"></a>
<h2 class="head"><span class="numb">4.7</span><span class="text">Flow Control</span></h2>

<p> WASD SSI allows blocks of document to be conditionally processed. This
uses constructs in a similar way to any programming language.  The emphasis
has been on simplicity and speed of processing.  No complex expression parser
is provided.  Despite this, complex document constructs can be implemented.
Flow control structures may be nested up to eight levels.

<ul class="list">

<li class="item"> <span class="high bold">#if &ndash; </span>
Marks the start of a conditionally processed block.  If evaluated true the
block is processed.

<li class="item"> <span class="high bold">#orif &ndash; </span>
Allows a document block to be
processed if one of multiple conditions are met. Must be used immediately
following a &quot;#if&quot; or &quot;elif&quot;. (This is the only really
WASD-idiosyncratic element)

<li class="item"> <span class="high bold">#elif &ndash; </span>
Allows a series of conditionals to be tested each with its own document block
available for processing.  Allows a type of case statement to be constructed.

<li class="item"> <span class="high bold">#else &ndash; </span>
Provides a default document block following unsuccessful &quot;#if&quot;,
&quot;orif&quot; and &quot;elif&quot; testing and consequent non-processed blocks.

<li class="item"> <span class="high bold">#endif &ndash; </span>
Terminates a conditional block.

</ul>

<p> The &quot;#if&quot;, &quot;#orif&quot; and &quot;#elif&quot; directives must provide an evaluation. This
can be single variable, which if numeric and non-zero is considered true, if
zero if false, or can be a string, which if empty is false, and if not empty is
true.  Tests can be made against the variable which when evaluated return a
true or false.  Multiple tests may be made against the one variable, or against
more than one variable.  Multiple tests act as a logical AND of the results and
terminate when the first fails.

<ul class="list">

<li class="item"> <span class="high bold">eqs &ndash; </span>
If the supplied string is the same as the variable string.

<li class="item"> <span class="high bold">srch &ndash; </span>
If the variable string matches the supplied search string. The search string
may contain the <span class="high monosp">*</span> (asterisk), matching any zero or more characters, and
<span class="high monosp">%</span> (percentage), matching any one character.

<li class="item"> <span class="high bold">eq &ndash; </span>
If the numeric value of the variable is the same as that of the supplied
number.  For a numeric value test to be legitimate both values must begin with
a digit.  Those beginning with an alphabetic are considered zero.

<li class="item"> <span class="high bold">lt &ndash; </span>
If the numeric value of the variable is less than that of the supplied number.

<li class="item"> <span class="high bold">gt &ndash; </span>
If the numeric value of the variable is greater than that of the supplied
number.

</ul>

<p> Any evaluation can have the result negated by prefixing it with an
exclamation point.  For instance, the first of these examples would produce a
<span class="high italic">false</span> result, the second <span class="high italic">true</span>.

<div class="blockof code">&lt;!--#if value=&quot;test&quot; !eqs=&quot;test&quot; --&gt;
&lt;!--#if value=20 !lt=10 --&gt;
</div>

<p> The following is a simple example illustration of variable setting, use
of variable substrings, and conditional processing of document blocks.

<div class="blockof code">&lt;!--##config trace=1 --&gt;
&lt;HTML&gt;
&lt;!--#set var=HOUR value={DATE_LOCAL,12,5} --&gt;
&lt;!--#if var={HOUR} lt=12 --&gt;
&lt;!--#set var=GREETING value=&quot;Good morning&quot; --&gt;
&lt;!--#elif var={HOUR} lt=19 --&gt;
&lt;!--#set var=GREETING value=&quot;Good afternoon&quot; --&gt;
&lt;!--#else --&gt;
&lt;!--#set var=GREETING value=&quot;Good evening&quot; --&gt;
&lt;!--#endif --&gt;
&lt;HEAD&gt;
&lt;TITLE&gt;&lt;!--#echo var={GREETING} --&gt;
&lt;!--#echo var=&quot;{REMOTE_HOST}!&quot; --&gt;&lt;/TITLE&gt;
&lt;/HEAD&gt;
&lt;BODY&gt;
&lt;H1&gt;Simple XSSI Demonstration&lt;/H1&gt;
&lt;!--#echo var={GREETING} --&gt; &lt;!--#echo var={REMOTE_HOST} --&gt;,
the time here is &lt;!--#echo var={DATE_LOCAL,12,5} --&gt;.
&lt;!--#if var={REMOTE_HOST} eqs={REMOTE_ADDR} --&gt;
(Sorry, I do not know your name, DNS lookup must be disabled!)
&lt;!--#endif --&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;
</div>

<p> The example SSI document
<a class="link blank" target="_blank" href="/wasd_root/wasdoc/env/xssi.shtml?httpd=ssi&amp;text=plain">WASD_ROOT:[WASDOC.ENV]XSSI.SHTML</a> further
<a class="link blank" target="_blank" href="/wasd_root/wasdoc/env/xssi.shtml">illustrates</a> these concepts.
 
<a id="4.8" href="#"></a>
<a id="4.8.querystrings" href="#"></a>
<a id="querystrings" href="#"></a>
<h2 class="head"><span class="numb">4.8</span><span class="text">Query Strings</span></h2>

<p> A query string may be passed to an SSI document in much the same way as to
a CGI script. In this way the behaviour of the document can be varied in
accordance to information explicitly passed to it when accessed. To prevent
the server's default query engine being given the request precede any query
string with &quot;?httpd=ssi&quot;. The server detects this and passes the
request instead to the SSI processor. Just append the desired query string
components to this as if they were form elements. For example:

<div class="blockof code">?httpd=ssi&amp;printenv=no
?httpd=ssi&amp;printenv=yes
?httpd=ssi&amp;trace=yes&amp;test2=one&amp;test2=two&amp;test3=three
</div>

<p> The following link uses the example SSI document
<a class="link blank" target="_blank" href="/wasd_root/wasdoc/env/xssi.shtml?httpd=ssi&amp;text=plain">WASD_ROOT:[WASDOC.ENV]XSSI.SHTML</a> to
<a class="link blank" target="_blank" href="/wasd_root/wasdoc/env/xssi.shtml">demonstrate</a>
this. Look for the &lt;QUOTE&gt;(FORM_TEST1=one), etc.

<a id="4.9" href="#"></a>
<a id="4.9.fileandvirtualspecifications" href="#"></a>
<a id="fileandvirtualspecifications" href="#"></a>
<h2 class="head"><span class="numb">4.9</span><span class="text">File and Virtual Specifications</span></h2>

<p> Documents may be specified using either the &quot;FILE&quot; or &quot;VIRTUAL&quot; tags.

<p> The &quot;FILE&quot; tag expects an absolute VMS file specification.

<p> The &quot;VIRTUAL&quot; tag expects an URL-style path to a document.  This can be an
absolute or relative path.  See <a class="link" href="#2.3.documentspecification">2.3 Document Specification</a> for further
details.

<a id="4.9.1" href="#"></a>
<a id="4.9.1.thefilename" href="#"></a>
<a id="thefilename" href="#"></a>
<h3 class="head"><span class="numb">4.9.1</span><span class="text">THE_FILE_NAME</span></h3>

<p> Generally, when an error are encountered document processing halts and
and an error report is generated.  For some common circumstances, in particular
the existance or not of a particular file, may require an alternative action. 
For file activities (e.g. #include, #flastmod, #created, #fsize) the optional
fmt=&quot;&quot; tag provides some measure of control on error behaviour.  If the format
string begins with a &quot;?&quot; files not found are not reported as errors and
processing continues.  Other file systems errors, such as directory not found,
syntax errors, etc., are always reported.

<p> Every time a file is accessed (e.g. #include, #flastmod) the server
variable THE_FILE_NAME gets set to that name if successful, or reset to empty
if unsuccessful.  This variable can be checked to determine success or
otherwise.

<ul class="list">

<li class="item"> For #included files, the 'fmt=&quot;?&quot;' just suppresses an error report, if
the file exists then it is included.

<li class="item"> For #modified file specifications use 'fmt=&quot;?&quot;' to suppress error
reporting on evaluation of files that may exist but are not mandatory.

<li class="item"> For file statistic directives (e.g. #flastmod, #fcreated, #fsize) the
'fmt=&quot;?&quot;' tag completely suppresses all output as well as error reporting. 
This can be used to check for the existance of a file.  For example if the file
TEST.TXT exists in the following example the variable THE_FILE_NAME would
contain the full file name, if it does not exist it would be empty, and the
code example would behave accordingly.

<div class="blockof code">&lt;!--#fcreated virtual=&quot;TEST.TXT&quot; fmt=&quot;?&quot; --&gt;
&lt;!--#if var={THE_FILE_NAME} eqs=&quot;&quot; --&gt;
File does not exist!
&lt;!--#else --&gt;
File exists!
&lt;!--#endif --&gt;
</div>

</ul>

<a id="4.10" href="#"></a>
<a id="4.10.timeformat" href="#"></a>
<a id="timeformat" href="#"></a>
<h2 class="head"><span class="numb">4.10</span><span class="text">Time Format</span></h2>

<p> Whenever a time directive is used an optional tag can be included to
specify the format of the output.  The default looks a little VMS-ish.  If a
format specification is made it must confirm to the C programming language
function <span class="high italic">strftime()</span>.

<p> The format specifier follows a similar syntax to the C standard library
<span class="high italic">printf()</span> family of functions, where conversion specifiers are introduced by
percentage symbols.  Here are some example uses:

<div class="blockof code">The date is &lt;!--#echo date_local fmt=&quot;%d/%m/%y&quot; --&gt;.
The time is &lt;!--#echo date_local fmt=&quot;%r&quot; --&gt;.
The day-of-the-week is &lt;!--#echo date_local fmt=&quot;%A&quot; --&gt;.
</div>

<p> A problem with any supplied time formatting specification will be reported.

<p> The following table provides the general conversion specifiers.  For further
information on the formatting process refer to a C programming library document
on the <span class="high italic">strftime()</span> function.

<a id="4.10.0.0.1" href="#"></a>
<a id="4.10.strftimeformatdirectives" href="#"></a>
<a id="strftimeformatdirectives" href="#"></a>
<h5 class="head"><span class="text">strftime() Format Directives</span></h5>

<table class="tabl">
<tr class="tabr under">
<th class="tabh">Specifier
<th class="tabh">Replaced by
<tr class="tabr">
<tr class="tabr backlight">
<td class="tabd">a
<td class="tabd">The locale's abbreviated weekday name
<tr class="tabr">
<td class="tabd">A
<td class="tabd">The locale's full weekday name
<tr class="tabr backlight">
<td class="tabd">b
<td class="tabd">The locale's abbreviated month name
<tr class="tabr">
<td class="tabd">B
<td class="tabd">The locale's full month name
<tr class="tabr backlight">
<td class="tabd">c
<td class="tabd">The locale's appropriate date and time representation
<tr class="tabr">
<td class="tabd">C
<td class="tabd">The century number (the year divided by 100 and truncated
to an integer) as a decimal number (00 - 99)
<tr class="tabr backlight">
<td class="tabd">d
<td class="tabd">The day of the month as a decimal number (01 - 31)
<tr class="tabr">
<td class="tabd">D
<td class="tabd">Same as %m/%d/%y
<tr class="tabr backlight">
<td class="tabd">e
<td class="tabd">The day of the month as a decimal number (1 - 31) in a
2 digit field with the leading space character fill
<tr class="tabr">
<td class="tabd">Ec
<td class="tabd">The locale's alternative date and time representation
<tr class="tabr backlight">
<td class="tabd">EC
<td class="tabd">The name of the base year (period) in the locale's
alternative representation
<tr class="tabr">
<td class="tabd">Ex
<td class="tabd">The locale's alternative date representation
<tr class="tabr backlight">
<td class="tabd">EX
<td class="tabd">The locale's alternative time representation
<tr class="tabr">
<td class="tabd">Ey
<td class="tabd">The offset from the base year (%EC) in the locale's
alternative representation
<tr class="tabr backlight">
<td class="tabd">EY
<td class="tabd">The locale's full alternative year representation
<tr class="tabr">
<td class="tabd">h
<td class="tabd">Same as %b
<tr class="tabr backlight">
<td class="tabd">H
<td class="tabd">The hour (24-hour clock) as a decimal number (00 - 23)
<tr class="tabr">
<td class="tabd">I
<td class="tabd">The hour (12-hour clock) as a decimal number (01 - 12)
<tr class="tabr backlight">
<td class="tabd">j
<td class="tabd">The day of the year as a decimal number (001 - 366)
<tr class="tabr">
<td class="tabd">m
<td class="tabd">The month as a decimal number (01 - 12)
<tr class="tabr backlight">
<td class="tabd">M
<td class="tabd">The minute as a decimal number (00 - 59)
<tr class="tabr">
<td class="tabd">n
<td class="tabd">The newline character
<tr class="tabr backlight">
<td class="tabd">Od
<td class="tabd">The day of the month using the locale's alternative
numeric symbols
<tr class="tabr">
<td class="tabd">Oe
<td class="tabd">The date of the month using the locale's alternative
numeric symbols
<tr class="tabr backlight">
<td class="tabd">OH
<td class="tabd">The hour (24-hour clock) using the locale's alternative
numeric symbols
<tr class="tabr">
<td class="tabd">OI
<td class="tabd">The hour (12-hour clock) using the locale's alternative
numeric symbols
<tr class="tabr backlight">
<td class="tabd">Om
<td class="tabd">The month using the locale's alternative numeric symbols
<tr class="tabr">
<td class="tabd">OM
<td class="tabd">The minutes using the locale's alternative numeric symbols
<tr class="tabr backlight">
<td class="tabd">OS
<td class="tabd">The seconds using the locale's alternative numeric symbols
<tr class="tabr">
<td class="tabd">Ou
<td class="tabd">The weekday as a number in the locale's alternative
representation (Monday=1)
<tr class="tabr backlight">
<td class="tabd">OU
<td class="tabd">The week number of the year (Sunday as the first day of the
week) using the locale's alternative numeric symbols
<tr class="tabr">
<td class="tabd">OV
<td class="tabd">The week number of the year (Monday as the first day of the
week) as a decimal number (01 -53) using the locale's
alternative numeric symbols. If the week containing January 1
has four or more days in the new year, it is considered
as week 1.  Otherwise, it is considered as week 53 of the
previous year, and the next week is week 1.
<tr class="tabr backlight">
<td class="tabd">Ow
<td class="tabd">The weekday as a number (Sunday=0) using the locale's
alternative numeric symbols
<tr class="tabr">
<td class="tabd">OW
<td class="tabd">The week number of the year (Monday as the first day of
the week) using the locale's alternative numeric symbols
<tr class="tabr backlight">
<td class="tabd">Oy
<td class="tabd">The year without the century using the locale's alternative
numeric symbols
<tr class="tabr">
<td class="tabd">p
<td class="tabd">The locale's equivalent of the AM/PM designations associated
with a 12-hour clock
<tr class="tabr backlight">
<td class="tabd">r
<td class="tabd">The time in AM/PM notation
<tr class="tabr">
<td class="tabd">R
<td class="tabd">The time in 24-hour notation (%H:%M)
<tr class="tabr backlight">
<td class="tabd">S
<td class="tabd">The second as a decimal number (00 - 61)
<tr class="tabr">
<td class="tabd">t
<td class="tabd">The tab character
<tr class="tabr backlight">
<td class="tabd">T
<td class="tabd">The time (%H:%M:%S)
<tr class="tabr">
<td class="tabd">u
<td class="tabd">The weekday as a decimal number between 1 and 7 (Monday=1)
<tr class="tabr backlight">
<td class="tabd">U
<td class="tabd">The week number of the year (the first Sunday as the first
day of week 1) as a decimal number (00 - 53)
<tr class="tabr">
<td class="tabd">V
<td class="tabd">The week number of the year (Monday as the first day of the
week) as a decimal number (00 - 53). If the week containing
January 1 has four or more days in the new year, it is
considered as week 1. Otherwise, it is considered as week 53
of the previous year, and the next week is week 1.
<tr class="tabr backlight">
<td class="tabd">w
<td class="tabd">The weekday as a decimal number (0 [Sunday] - 6)
<tr class="tabr">
<td class="tabd">W
<td class="tabd">The week number of the year (the first Monday as the first
day of week 1) as a decimal number (00 - 53)
<tr class="tabr backlight">
<td class="tabd">x
<td class="tabd">The locale's appropriate date representation
<tr class="tabr">
<td class="tabd">X
<td class="tabd">The locale's appropriate time representation
<tr class="tabr backlight">
<td class="tabd">y
<td class="tabd">The year without century as a decimal number (00 - 99)
<tr class="tabr">
<td class="tabd">Y
<td class="tabd">The year with century as a decimal number
<tr class="tabr backlight">
<td class="tabd">Z
<td class="tabd">Timezone name or abbreviation. If timezone information is
not available, no character is output.
<tr class="tabr">
<td class="tabd">%
<td class="tabd">%
</table>

<a id="4.11" href="#"></a>
<a id="4.11.osucompatibility" href="#"></a>
<a id="osucompatibility" href="#"></a>
<h2 class="head"><span class="numb">4.11</span><span class="text">OSU Compatibility</span></h2>

<p> Essential compatibility with OSU Server Side Includes directives is
provided.  This is intended to ease any transition to WASD, as existing SSI
documents will not need to be changed unless any of the WASD capabilities are
required.  To provide transparent processing of OSU <span class="high monosp">.HTMLX</span> files ensure the
following WASD configuration is in place.

<p> In HTTPD&dollar;CONFIG file:

<div class="blockof code">[AddType]
.HTMLX  text/x-shtml  -  OSU SSI HTML
</div>

<p> Note that the content description must contain the string &quot;OSU&quot; to activate
some compliancy behaviours.  

<p> In HTTPD&dollar;MAP file:

<div class="blockof code">redirect /*.*.htmlx /*.htmlx?httpd=ssi&amp;__part=*
</div>

<p> This provides a mechanism for the OSU part-document facility.
(Yes, the &quot;__part&quot; has two leading underscores!)

<a id="4.11.0.0.1" href="#"></a>
<a id="4.11.osudirectives" href="#"></a>
<a id="osudirectives" href="#"></a>
<h5 class="head"><span class="text">OSU Directives</span></h5>

<p> The following OSU directives are provided specifically for OSU
compatibility, although there is no reason why most of these may not also be 
deployed in general WASD SSI documents if there is a requirement.  Note that
these are OSU-specifics, other OSU directives are provided by the standard WASD
SSI engine.

<a id="4.11.0.0.1.1" href="#"></a>
<a id="4.11.osucompatibledirectives" href="#"></a>
<a id="osucompatibledirectives" href="#"></a>
<h6 class="head display0"><span class="text">OSU Compatible Directives</span></h6>
<table class="tabl">
<tr class="tabr under">
<th class="tabh">Directive
<th class="tabh">Description
<tr class="tabr">
<tr class="tabr backlight">
<td class="tabd">#begin <span class="high italic">label [<span class="high italic">label</span>]</span>
<td class="tabd">delimit a part-document (see <a class="link" href="#4.11.osuquotpartquots">&lsquo;OSU &quot;Part&quot;s&rsquo; in 4.11 OSU Compatibility</a>)
<tr class="tabr">
<td class="tabd">#config verify=1
<td class="tabd">enable commented-tag trace output
<tr class="tabr backlight">
<td class="tabd">#echo accesses
<td class="tabd">document access count
<tr class="tabr">
<td class="tabd">#echo accesses_ordinal
<td class="tabd">document access count
<tr class="tabr backlight">
<td class="tabd">#echo getenv=&quot;&quot;
<td class="tabd">output logical or symbol
<tr class="tabr">
<td class="tabd">#echo hw_name
<td class="tabd">system hardware name
<tr class="tabr backlight">
<td class="tabd">#echo server_name
<td class="tabd">HTTPd server host name
<tr class="tabr">
<td class="tabd">#echo server_version
<td class="tabd">HTTPd software version
<tr class="tabr backlight">
<td class="tabd">#echo vms_version
<td class="tabd">HTTPd system version of VMS
<tr class="tabr">
<td class="tabd">#end <span class="high italic">label</span> [<span class="high italic">label</span>]
<td class="tabd">delimit a part-document (see <a class="link" href="#4.11.osuquotpartquots">&lsquo;OSU &quot;Part&quot;s&rsquo; in 4.11 OSU Compatibility</a>)
<tr class="tabr backlight">
<td class="tabd">#include [file&verbar;virtual]=&quot;&quot; part=&quot;<span class="high italic">label</span>&quot;
<td class="tabd">include only part of a virtual document
</table>

<p> If WASD is configured for OSU SSI compatibility the following link provides
an online demonstration as well as further explanation of the OSU SSI engine
using an OSU preprocessor document from the distribution (included within
copyright compliance).

<p class="indent"> <a class="link blank monosp" target="_blank" href="/wasd_root/src/osu/preproc.htmlx">/wasd_root/src/osu/preproc.htmlx</a>

<p> How do we know WASD is processing it?  Look for the
<span class="high italic">#echo var=&quot;GETENV=SYS&dollar;REM_ID&quot;</span> towards the end of the document.  It should
indicate <span class="high nowrap">&quot;[VARIABLE_DOES_NOT_EXIST!]&quot;</span> because it's attempting to output a
DECnet-related logical name!

<a id="4.11.0.0.2" href="#"></a>
<a id="4.11.osuquotpartquots" href="#"></a>
<a id="osuquotpartquots" href="#"></a>
<h5 class="head"><span class="text">OSU &quot;Part&quot;s</span></h5>

<p> The OSU processor allows for delimited subsections of an <span class="high italic">#include</span>d
document, or a URL referenced document for that matter, to be included in the
output.  This is supported, but only for compatibility.  It is only enabled for
&quot;.HTMLX&quot; documents and if otherwise used may interact unexpectedly with WASD
SSI flow-control.

<a id="4.12" href="#"></a>
<a id="4.12.scriptgeneratedssidocuments" href="#"></a>
<a id="scriptgeneratedssidocuments" href="#"></a>
<h2 class="head"><span class="numb">4.12</span><span class="text">Script-Generated SSI Documents</span></h2>

<p> It is possible to have script output passed back through the SSI engine for
markup.  This approach might allow script output to automatically be wrapped
in standard site headers and footers for example.  Essentially the script must
output an SSI-markup response body and include in the otherwise standard CGI
response header a field containing &quot;Script-Control: X-content-handler=SSI&quot;. 
The following example in DCL show the essential elements of such a script.

<div class="blockof code">&dollar; say = &quot;write sys&dollar;output&quot;
&dollar; say &quot;Status: 200&quot;
&dollar; say &quot;Script-Control: X-content-handler=SSI&quot;&quot;
&dollar; say &quot;&quot;
&dollar; say &quot;&lt;HTML&gt;&quot;
&dollar; say &quot;&lt;HEAD&gt;&quot;
&dollar; say &quot;&lt;TITLE&gt;Example of X-content-handler=SSI&lt;/TITLE&gt;&quot;
&dollar; say &quot;&lt;/HEAD&gt;&quot;
&dollar; say &quot;&lt;BODY&gt;&quot;
&dollar; say &quot;&lt;!--#include virtual=&quot;&quot;/site/header.html&quot;&quot; --&gt;&quot;
&dollar; say &quot;&lt;H1&gt;Example of X-content-handler:SSI&lt;/H1&gt;&quot;
&dollar; say &quot;Hi there &lt;!--#echo var=&quot;&quot;WWW_REMOTE_HOST&quot;&quot; --&gt;&quot;
&dollar; say &quot;&lt;!--#include virtual=&quot;&quot;/site/footer.html&quot;&quot; --&gt;&quot;
&dollar; say &quot;&lt;/BODY&gt;&quot;
&dollar; say &quot;&lt;/HTML&gt;&quot;
</div>
<!-- source:0500_SEARCH.WASDOC -->
<hr class="page">
<a id="5." href="#"></a>
<a id="5.documentsearching" href="#"></a>
<a id="documentsearching" href="#"></a>
<h1 class="head"><span class="numb">5.</span><span class="text">Document Searching</span></h1>

<div class="TOC2cols2">
<table class="TOC2table">
<tr><td><a href="#5.1.plaintextsearch"><span class="numb">5.1</span><span class="text">Plain-Text Search</span></a>
<tr><td><a href="#5.2.htmlsearch"><span class="numb">5.2</span><span class="text">HTML Search</span></a>
<tr><td><a href="#5.3.searchsyntax"><span class="numb">5.3</span><span class="text">Search Syntax</span></a>
<tr><td><a href="#5.3.1.standardsearchform"><span class="numb">5.3.1</span><span class="text">Standard Search Form</span></a>
<tr><td><a href="#5.3.2.formsbasedsearch"><span class="numb">5.3.2</span><span class="text">Forms-Based Search</span></a>
<tr><td><a href="#5.3.3.searchoptions"><span class="numb">5.3.3</span><span class="text">Search Options</span></a>
<tr><td><a href="#5.3.4.examplesearchform"><span class="numb">5.3.4</span><span class="text">Example Search Form</span></a>
</table>
</div>

<table class="NAVtable NAVprint"><tr>
<td><a href="javascript:window.history.back();">&#8617;&#xFE0E;</a>
<td><a href="#4.">&#8598;&#xFE0E;</a>
<td><a href="#0.">&#8593;&#xFE0E;</a>
<td><a href="#6.">&#8600;&#xFE0E;</a>
<td><a href="javascript:window.history.forward();">&#8618;&#xFE0E;</a>
</table>

<p> The <span class="high italic">query</span> and <span class="high italic">extract</span> scripts provide real-time searching of
plain-text and HTML documents, and document retrieval.  The search is a
simple-string search, not a GREP-style search.  It is designed to provide a
useful mechanism for locating documents containing a keyword, not for document
analysis.  It has the useful feature for plain-text documents of allowing the
selective extraction of only the portion near the  <span class="high italic">hit</span>. 

<p> Only files with a plain-text or HTML MIME data type (see <a class="link" href="#2.documentaccessandspecification">2. Document Access and Specification</a>) will be searched.  Others may be  specified, or be
selected from wildcard file specification, but they will not  actually have
their contents searched. 

<p> Directory specifications may include a wildcard elipsis (allowing a
directory tree to be traversed) and/or file name wildcards.  In other words,
anything acceptable as VMS file system syntax (except in URL-format of course).
See examples in <a class="link" href="#5.3.1.standardsearchform">5.3.1 Standard Search Form</a>.

<a id="5.1" href="#"></a>
<a id="5.1.plaintextsearch" href="#"></a>
<a id="plaintextsearch" href="#"></a>
<h2 class="head"><span class="numb">5.1</span><span class="text">Plain-Text Search</span></h2>

<p> A search of a plain-text file is straight-forward.  Each line in the file 
is searched for the required string.  The first time it is encountered is 
considered a <span class="high italic">hit</span>.  The line is not searched for any further 
occurances. 

<p> Searches of plain text files allow the subsequent selection of partial 
documents (i.e. the retrieval of only a number of lines around any actual 
hit).  This allows the user to selectively extract a portion of a document, 
avoiding the need to explcitly scan through to the section of interest. 

<a id="5.2" href="#"></a>
<a id="5.2.htmlsearch" href="#"></a>
<a id="htmlsearch" href="#"></a>
<h2 class="head"><span class="numb">5.2</span><span class="text">HTML Search</span></h2>

<p> A search of an HTML file is a little more complex.  As might be expected, 
only text presented in the document text is searched, markup text is ignored.  
That is, all text not part of an HTML <span class="high italic">tag</span> construct is extracted  and
searched.  For example, out of the following HTML fragment 

<div class="blockof code">&lt;!-- an example HTML document --&gt;
&lt;p&gt;
The document entitled &lt;a target=&quot;_blank&quot; href=&quot;example.html&quot;&gt;&quot;Example Document&quot;&lt;/a&gt;
provides only an &lt;i&gt;overview&lt;/i&gt; of the full capabilities of HTML.
</div>
only the following text would actually be searched

<div class="blockof code">The document entitled &quot;Example Document&quot; provides only an overview
of the full capabilities of HTML.
</div>

<p> The mechanism for partial document retrieval available with plain-text 
files is <span class="high bold">not</span> present with HTML documents.  HTML files generally must be
treated as a whole, with the formatting of current sections often very
dependent on the formatting of previous sections.  This makes extracting a
subsection perilous without extensive syntactical analyis.  On the positive
side, HTML documents tend to be already divided into meaningful subdocuments
(files), making retrieval of a hit naturally more-or-less within context.

<p> Instead of partial document retrieval, the document is processed to place
anchors for each hit, making it possible to jump directly to a particular
section of interest.  Generally this works well but may occasionally distort
the presentation of a document.

<a id="5.3" href="#"></a>
<a id="5.3.searchsyntax" href="#"></a>
<a id="searchsyntax" href="#"></a>
<h2 class="head"><span class="numb">5.3</span><span class="text">Search Syntax</span></h2>

<p> A search may be initiated in basic three ways:

<ol class="list">

<li class="item"> Appending a question-mark and search string to a file specification (the 
simple syntax of &quot;ISINDEX&quot;-style searching).  This is standard HTTP, and of
course must conform to HTTP syntax.

<li class="item"> Providing the name of the query script followed by the directory path to
be searched.  The script then returns a standard search form.

<li class="item"> <span class="high italic">Forms</span>-based search, which allows the format and mechanism of 
the search to be controlled.

</ol>

<div class="note">
<a id="5.3.0.0.1" href="#"></a>
<a id="5.3.ltisindexgttagobsoleteasofhtml4" href="#"></a>
<a id="ltisindexgttagobsoleteasofhtml4" href="#"></a>
<h5 class="head center"><span class="text">&lt;isindex&gt; tag obsolete (as of HTML4)</span></h5>
<hr class="note_hr">

<p> Placing the HTML tag &quot;&lt;isindex&gt;&quot; within a  document's text is sufficient to
inform the browser that searching is  available for that document.  The browser
will inform the user of this and  allow a search of that document to be
initiated at any time.  Note that it is  limited to the one document. 

<p> Using the keyword search syntax explicitly is another method of initiating 
a search, and additionally can use a wildcard in the document specification.  
For example:

<div class="blockof code">/wasd_root/doc/env/*.*?formatted
</div>

<p> The following link provides an online demonstration search using the above
syntax.  Note the difference in the way plain-text file hits are presented
compared with those of HTML files. 

<p class="indent"> <a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/env/*.*?formatted">/wasd_root/wasdoc/env/*.*?formatted</a>
<hr class="note_hr">
</div>

<a id="5.3.1" href="#"></a>
<a id="5.3.1.standardsearchform" href="#"></a>
<a id="standardsearchform" href="#"></a>
<h3 class="head"><span class="numb">5.3.1</span><span class="text">Standard Search Form</span></h3>

<p> Using the &quot;QUERY&quot; script name followed by a URL-format path
specifying the directory to be searched returns a standard, script-generated
search form.

<p> The following link provides an online demonstration of the standard search
form.

<p class="indent"> <a class="link blank monosp" target="_blank" href="/cgi-bin/query/wasd_root/wasdoc/env/">/cgi-bin/query/wasd_root/wasdoc/env/</a>

<p> As with all search specifications, the directory specification may include
wildcard a elipsis (allowing a directory tree to be traversed) and/or file name
wildcards.  In other words, anything acceptable as VMS file system syntax
(except in URL-format of course).  See the following examples.

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/cgi-bin/query/wasd_root/wasdoc/env/*.html">/cgi-bin/query/wasd_root/wasdoc/env/*.html</a>
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/cgi-bin/query/wasd_root/wasdoc/.../">/cgi-bin/query/wasd_root/wasdoc/.../</a>
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/cgi-bin/query/wasd_root/wasdoc/.../*.html">/cgi-bin/query/wasd_root/wasdoc/.../*.html</a>
</table>

<a id="5.3.2" href="#"></a>
<a id="5.3.2.formsbasedsearch" href="#"></a>
<a id="formsbasedsearch" href="#"></a>
<h3 class="head"><span class="numb">5.3.2</span><span class="text">Forms-Based Search</span></h3>

<p> A &quot;forms-based&quot; search is initiated by the server receiving a file 
specification, which of course may contain wildcards, followed by a <span class="high italic">search</span>
parameter.  This is a typical HTML <span class="high italic">forms</span> format  URL.  For example: 

<div class="blockof code">*.txt?search=SIMPLE
/web/.../*.*?search=THIS
sub_directory/*.*?search=THAT
../sibling_directory/*.HTML?search=OTHER
</div>

<p> The following link provides an online demonstration search using the
form-based syntax. 

<p class="indent"> <a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/env/*.*?search=formatted">/wasd_root/wasdoc/env/*.*?search=formatted</a>

<a id="5.3.3" href="#"></a>
<a id="5.3.3.searchoptions" href="#"></a>
<a id="searchoptions" href="#"></a>
<h3 class="head"><span class="numb">5.3.3</span><span class="text">Search Options</span></h3>

<p> Additional URI components may be appended after the initial &quot;search=&quot;
parameter.  These are appended with intervening &quot;&amp;&quot;) characters. 

<ul class="list">

<li class="item"> <span class="high bold">Case-Sensitivity &ndash;</span> An optional URI component of 
&quot;case=yes&quot; or &quot;case=no&quot; makes the search case-sensistive or 
case-insensistive (the default).  The following example illustrates the use of 
this syntax: 

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/env/*.html?search=Protocol&amp;case=yes">/wasd_root/wasdoc/env/*.html?search=Protocol&case=yes</a>
<td class="tabd">case-sensistive search for &quot;Protocol&quot;
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/env/*.html?search=PrOtOcOl&amp;case=no">/wasd_root/wasdoc/env/*.html?search=PrOtOcOl&case=no</a>
<td class="tabd">case-<span class="high bold">in</span>sensistive search for &quot;PrOtOcOl&quot;
</table>

<li class="item"> <span class="high bold">Hits &ndash;</span> An optional URI component of &quot;hits=document&quot; or &quot;hits=line&quot;
makes the search results be presented by-document (file) or by line-by-line
(the default).  The following example illustrates the use of this syntax: 

/web/html/.../*.html?search=protocol&amp;hits=document
/web/html/.../*.html?search=protocol&amp;hits=line

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/env/*.html?search=protocol&amp;hits=document">/wasd_root/wasdoc/env/*.html?search=protocol&hits=document</a>
<td class="tabd">search result granularity by document
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/wasd_root/wasdoc/env/*.html?search=protocol&amp;hits=line">/wasd_root/wasdoc/env/*.html?search=protocol&hits=line</a>
<td class="tabd">search result granularity by line (the default)
</table>

</ul>

<a id="5.3.4" href="#"></a>
<a id="5.3.4.examplesearchform" href="#"></a>
<a id="examplesearchform" href="#"></a>
<h3 class="head"><span class="numb">5.3.4</span><span class="text">Example Search Form</span></h3>

<p> To allow the client to enter a search string and submit a search to the 
server a HTML level 2 <span class="high italic">form</span> construct can be used.  Here is an  example: 

<div class="blockof code">&lt;form action=&quot;/web/html/.../*.html&quot;&gt;
Search HTML documents for:&amp;nbsp; 
&lt;input type=&quot;text&quot; name=&quot;search&quot;&gt;
&lt;input type=&quot;submit&quot; value=&quot;execute&quot;&gt;
&lt;/form&gt;
</div>

<p> The following provides an online demonstration of the form used above:

<div class="blockof asis indent"><p><form action="/wasd_root/wasdoc/env/*.html">
Search HTML documents for:&nbsp; 
<input type="text" name="search">
<input type="submit" value="execute">
</form></div>
<a id="5.3.4.0.1" href="#"></a>
<a id="5.3.4.bellsandwhistles" href="#"></a>
<a id="bellsandwhistles" href="#"></a>
<h5 class="head"><span class="text">Bells and Whistles</span></h5>

<p> A form providing all the options refered to in  <a class="link" href="#5.3.3.searchoptions">5.3.3 Search Options</a> is
shown below (some additional white-space  introduced for clarity): 

<div class="blockof code">&lt;form action=&quot;/web/html/.../*.html&quot;&gt;

Search HTML documents for: 
&lt;input type=&quot;text&quot; name=&quot;search&quot;&gt;
&lt;input type=&quot;submit&quot; value=&quot;execute&quot;&gt;

&lt;br&gt;&lt;a target=&quot;_blank&quot; href=&quot;/query/-/aboutquery.html&quot;&gt;About&lt;/a&gt; this search.

&lt;br&gt;Output By:
line &lt;input type=&quot;radio&quot; name=&quot;hits&quot; value=&quot;line&quot; checked&gt;
document &lt;input type=&quot;radio&quot; name=&quot;hits&quot; value=&quot;document&quot;&gt;

&lt;br&gt;Case sensitive:
no &lt;input type=&quot;radio&quot; name=&quot;case&quot; value=&quot;no&quot; checked&gt;
yes &lt;input type=&quot;radio&quot; name=&quot;case&quot; value=&quot;yes&quot;&gt;

&lt;/form&gt;
</div>

<p> The following provides an online demonstration of the form used above:

<div class="blockof asis indent"><p> <form action="/web/html/.../*.html">
Search HTML documents for: 
<input type="text" name="search">
<input type="submit" value="execute">
<br><a class="link" target="_blank" href="/query/-/aboutquery.html">About</a> this
search.
<br>Output By:
line <input type="radio" name="hits" value="line" checked>
document <input type="radio" name="hits" value="document">
<br>Case sensitive:
no <input type="radio" name="case" value="no" checked>
yes <input type="radio" name="case" value="yes">
</form></div><!-- source:0600_LIBRARIAN.WASDOC -->
<hr class="page">
<a id="6." href="#"></a>
<a id="6.vmshelpandtextlibraries" href="#"></a>
<a id="vmshelpandtextlibraries" href="#"></a>
<h1 class="head"><span class="numb">6.</span><span class="text">VMS Help and Text Libraries</span></h1>

<table class="NAVtable NAVprint"><tr>
<td><a href="javascript:window.history.back();">&#8617;&#xFE0E;</a>
<td><a href="#5.">&#8598;&#xFE0E;</a>
<td><a href="#0.">&#8593;&#xFE0E;</a>
<td><a href="#7.">&#8600;&#xFE0E;</a>
<td><a href="javascript:window.history.forward();">&#8618;&#xFE0E;</a>
</table>

<p> Affectionately known as <span class="high italic">Conan the Librarian</span> &ndash; and with all due 
acknowlegement to Wierd Al.Yankovic <span class="high _smiley">&thinsp;</span> &ndash; this script makes VMS
<span class="high italic">Help</span> and <span class="high italic">Text</span> libraries accessible in the web environment. 

<p> The librarian script will be automatically activated if the file specified 
has an extension of &quot;.HLB&quot; or &quot;.TLB&quot;.  Alternatively it may be explicitly
activated by specifying <!-- conan --> as a prefix to the file specification (but
the ability to provide a relative specification is lost).  The following
examples illustrate the syntax: 

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/sys$common/syshlp/helplib.hlb">/sys$common/syshlp/helplib.hlb</a>
<td class="tabd">VMS Help
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/conan/sys$common/syshlp/helplib.hlb">/conan/sys$common/syshlp/helplib.hlb</a>
<td class="tabd">via /Conan
</table>

<a id="6.0.0.0.1" href="#"></a>
<a id="6.otherlibrarianfunctionality" href="#"></a>
<a id="otherlibrarianfunctionality" href="#"></a>
<h5 class="head"><span class="text">Other Librarian Functionality</span></h5>

<p> To obtain an index of matching libraries explicitly activate the 
<span class="high italic">Conan</span> script providing a wildcard file specification.

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/conan/sys$common/syshlp/*.hlb">/conan/sys$common/syshlp/*.hlb</a>
<td class="tabd">All Help libraries
</table>

<p> To obtain the library header information add a query string to the library 
file specification, as shown in the following example: 

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/conan/sys$common/syshlp/helplib.hlb?do=header">/conan/sys$common/syshlp/helplib.hlb?do=header</a>
<td class="tabd">VMS help library header
</table>

<!-- source:0700_BOOKREADER.WASDOC -->
<hr class="page">
<a id="7." href="#"></a>
<a id="7.bookreaderbooksandlibraries" href="#"></a>
<a id="bookreaderbooksandlibraries" href="#"></a>
<h1 class="head"><span class="numb">7.</span><span class="text">Bookreader Books and Libraries</span></h1>

<table class="NAVtable NAVprint"><tr>
<td><a href="javascript:window.history.back();">&#8617;&#xFE0E;</a>
<td><a href="#6.">&#8598;&#xFE0E;</a>
<td><a href="#0.">&#8593;&#xFE0E;</a>
<td><a href="#8.">&#8600;&#xFE0E;</a>
<td><a href="javascript:window.history.forward();">&#8618;&#xFE0E;</a>
</table>

<p> <span class="high bold">While largely of historical interest these days</span>, access to Bookreader
format documentation (and any generated  internally) is provided in the WASD
web environment via two integrated  scripts, <span class="high italic">HyperReader</span>, which reads the
books, and  <span class="high italic">HyperShelf</span>, which reads the Library and Shelf structures. 

<p> The HyperReader and HyperShelf scripts are automatically activated when 
the document file's extension is &quot;.DECW&dollar;BOOK&quot; and  &quot;.DECW&dollar;BOOKSHELF&quot;
respectively.  Alternatively, the  respective scripts may be explicitly
specified (but the ability to provide a  relative specification is lost).

<p> If the server system supports Bookreader documentation collection one ot
both the following links will provide an online demonstration:

<table class="tabl">
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/HyperShelf/">/HyperShelf/</a>
<tr class="tabr">
<td class="tabd"><a class="link blank monosp" target="_blank" href="/cgi-bin/HyperShelf/">/cgi-bin/HyperShelf/</a>
</table>
<!-- source:0800_UPDATE.WASDOC -->
<hr class="page">
<a id="8." href="#"></a>
<a id="8.webdocumentupdate" href="#"></a>
<a id="webdocumentupdate" href="#"></a>
<h1 class="head"><span class="numb">8.</span><span class="text">Web Document <span class="high bold">Upd</span>ate</span></h1>

<table class="NAVtable NAVprint"><tr>
<td><a href="javascript:window.history.back();">&#8617;&#xFE0E;</a>
<td><a href="#7.">&#8598;&#xFE0E;</a>
<td><a href="#0.">&#8593;&#xFE0E;</a>
<td><a href="#9.">&#8600;&#xFE0E;</a>
<td><a href="javascript:window.history.forward();">&#8618;&#xFE0E;</a>
</table>

<p> The <span class="high bold">Upd</span>ate facility allows Web documents and file environments to be
administered from a standard browser.  This facility is available to Web
administrator and user alike.  Availability and capability depends on the
authorization environment within the server.

<p> It <span class="high bold">should be stressed</span> that this is not designed as a full web
administration or authoring tool, and for document preparation relies on the
editing capabilities of the &quot;&lt;textarea&gt;&quot;  widget of the user's  browser.  It
does however, allow <span class="high bold">ad-hoc changes</span> to be made to documents fairly easily,
as well as allowing documents to be deleted, and directories to be created and
deleted.

<p> Consult the <a class="link blank" target="_blank" href="/httpd/-/updhelp.html">current <span class="high bold">Upd</span>ate documentation</a>
for usage detail.

<p> And depending on site configuration <a class="link blank" target="_blank" href="/upd/wasd_root/">/upd/wasd_root/</a> an example of
the interface.

<a id="8.0.0.0.1" href="#"></a>
<a id="8.updateaccesspermission" href="#"></a>
<a id="updateaccesspermission" href="#"></a>
<h5 class="head"><span class="text">Update Access Permission</span></h5>

<p> Of course, the user must have write (POST/PUT) access to the document or
area on the server (i.e. the <span class="high italic">path</span>) and the server account have file
system permission to write into the <span class="high under">parent directory</span>.

<p> Contact the Web Administrator for further information on the availablility
of authentication and authorization permissions to do online updates of Web
paths.

<p> The server will report &quot;Insufficient privilege or object protection
violation ... /path/&quot; if it does not have file system permission to write into
a directory.

<p> Write access by the server into VMS directories (using the POST or PUT HTTP
methods) is controlled using VMS ACLs. <span class="high bold">This is in addition to the path
authorization of the server itself of course!</span> The requirement to have an ACL
on the directory prevents inadvertant mapping/authorization of a path resulting
in the ability to write somewhere not intended.

<p> Two different ACLs implement two grades of access.

<ol class="list">

<li class="item"> If the ACL grants <span class="high bold">CONTROL</span> access to the server account then only
VMS-authenticated usernames with security profiles can potentially write to the
directory. Only potentially, because a further check is made to assess whether
that VMS account in particular has write access.

<p> This example shows a suitable ACL that applies only to the original
directory:

<div class="blockof code">&dollar; SET SECURITY directory.DIR -
  /ACL=(IDENT=HTTP&dollar;SERVER,ACCESS=READ+CONTROL)
</div>

This example shows setting an ACL that will propagate to created files and
importantly, subdirectories:

<div class="blockof code">&dollar; SET SECURITY directory.DIR -
  /ACL=((IDENT=HTTP&dollar;SERVER,OPTIONS=DEFAULT,ACCESS=READ+WRITE+DELETE+CONTROL), -
        (IDENT=HTTP&dollar;SERVER,ACCESS=READ+WRITE+DELETE+CONTROL))
</div>

<li class="item"> If the ACL grants <span class="high bold">WRITE</span> access then the directory can be written into
by any authenticated username for the authorized path.

<p> This example shows a suitable ACL that applies only to the original
directory:

<div class="blockof code">&dollar; SET SECURITY directory.DIR -
  /ACL=(IDENT=HTTP&dollar;SERVER,ACCESS=READ+WRITE)
</div>

This example shows setting an ACL that will propagate to created files and
importantly, subdirectories:

<div class="blockof code">&dollar; SET SECURITY directory.DIR -
  /ACL=((IDENT=HTTP&dollar;SERVER,OPTIONS=DEFAULT,ACCESS=READ+WRITE+DELETE), -
        (IDENT=HTTP&dollar;SERVER,ACCESS=READ+WRITE+DELETE))
</div>

</ol>
<!-- source:0900_INDEX.WASDOC -->
<hr class="page">
<a id="9." href="#"></a>
<a id="9.index" href="#"></a>
<a id="index" href="#"></a>
<h1 class="head"><span class="numb">9.</span><span class="text">Index</span></h1>

<table class="NAVtable NAVprint"><tr>
<td><a href="javascript:window.history.back();">&#8617;&#xFE0E;</a>
<td><a href="#8.">&#8598;&#xFE0E;</a>
<td><a href="#0.">&#8593;&#xFE0E;</a>
<td><a href="#10.">&#8600;&#xFE0E;</a>
<td><a href="javascript:window.history.forward();">&#8618;&#xFE0E;</a>
</table>

<div class="IDXcols2">
<table class="IDXtable">
<tr><td class="alpha">A</td><td class="text"><a href="#2.3.1.absolutefilepath">2.3.1&nbsp;Absolute File Path</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#0.abstract">&lsquo;Abstract&rsquo; in  WASD Web Environment</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.3.18.allowingoverride">3.3.18&nbsp;Allowing Override</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#0.apachelicenseversion20">&lsquo;Apache License, Version 2.0&rsquo; in  WASD Web Environment</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#10.attributionandacknowledgement">10.&nbsp;Attribution and Acknowledgement</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.3.13.autoscripting">3.3.13&nbsp;Auto-Scripting</a>
<tr><td class="alpha">B</td><td class="text"><a href="#5.3.4.bellsandwhistles">&lsquo;Bells and Whistles&rsquo; in 5.3.4 Example Search Form</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#10.bjoumlernhoumlehrmann">&lsquo;Bj&ouml;ern H&ouml;ehrmann&rsquo; in 10. Attribution and Acknowledgement</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#7.bookreaderbooksandlibraries">7.&nbsp;Bookreader Books and Libraries</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.3.14.browserhtmlsupportedtargets">&lsquo;Browser (HTML) Supported Targets&rsquo; in 3.3.14 Target Window</a>
<tr><td class="alpha">C</td><td class="text"><a href="#2.4.1.charactersinrequestpaths">2.4.1&nbsp;Characters In Request Paths</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#2.4.2.charactersinservergeneratedpaths">2.4.2&nbsp;Characters In Server-Generated Paths</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#10.clarkcooperetal">&lsquo;Clark Cooper, et.al.&rsquo; in 10. Attribution and Acknowledgement</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.1.controllingaccesstoadirectory">3.1&nbsp;Controlling Access To A Directory</a>
<tr><td class="alpha">D</td><td class="text"><a href="#4.4.directivesyntax">4.4&nbsp;Directive Syntax</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#4.5.directives">4.5&nbsp;Directives</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.directorylisting">3.&nbsp;Directory Listing</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.3.3.directorystyle">3.3.3&nbsp;Directory Style</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.4.directorytree">3.4&nbsp;Directory Tree</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#2.documentaccessandspecification">2.&nbsp;Document Access and Specification</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#2.4.3.documentcache">2.4.3&nbsp;Document Cache</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#2.1.documentcontenttype">2.1&nbsp;Document Content Type</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#5.documentsearching">5.&nbsp;Document Searching</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#2.3.documentspecification">2.3&nbsp;Document Specification</a>
<tr><td class="alpha">E</td><td class="text"><a href="#4.1.example1">&lsquo;Example 1&rsquo; in 4.1 Virtual Documents</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#4.1.example2">&lsquo;Example 2&rsquo; in 4.1 Virtual Documents</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#5.3.4.examplesearchform">5.3.4&nbsp;Example Search Form</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#2.2.explicitlyspecifyingcontenttype">2.2&nbsp;Explicitly Specifying Content-Type</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#2.4.extendedfilespecificationsods5">2.4&nbsp;Extended File Specifications (ODS-5)</a>
<tr><td class="alpha">F</td><td class="text"><a href="#2.2.fauxextension">&lsquo;Faux Extension&rsquo; in 2.2 Explicitly Specifying Content-Type</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#4.9.fileandvirtualspecifications">4.9&nbsp;File and Virtual Specifications</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.3.7.fileversions">3.3.7&nbsp;File Versions</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#4.7.flowcontrol">4.7&nbsp;Flow Control</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#5.3.2.formsbasedsearch">5.3.2&nbsp;Forms-Based Search</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#10.freesoftwarefoundation">&lsquo;Free Software Foundation&rsquo; in 10. Attribution and Acknowledgement</a>
<tr><td class="alpha">H</td><td class="text"><a href="#3.2.quothiddenquotfiles">3.2&nbsp;&quot;Hidden&quot; Files</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#5.2.htmlsearch">5.2&nbsp;HTML Search</a>
<tr><td class="alpha">I</td><td class="text"><a href="#5.3.ltisindexgttagobsoleteasofhtml4">&lsquo;&lt;isindex&gt; tag obsolete (as of HTML4)&rsquo; in 5.3 Search Syntax</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.3.16.iconplaintextlink">3.3.16&nbsp;Icon Plain Text Link</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#2.2.ignoredcontenttype">&lsquo;Ignored Content-Type&rsquo; in 2.2 Explicitly Specifying Content-Type</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#9.index">9.&nbsp;Index</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#1.introduction">1.&nbsp;Introduction</a>
<tr><td class="alpha">L</td><td class="text"><a href="#4.2.lastmodifiedinformation">4.2&nbsp;Last-Modified Information</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.3.2.layout">3.3.2&nbsp;Layout</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#0.license">&lsquo;License&rsquo; in  WASD Web Environment</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#10.licensedundertheapachelicenseversion20">&lsquo;Licensed under the Apache License, Version 2.0&rsquo; in 10. Attribution and Acknowledgement</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.3.9.listingdelimiters">3.3.9&nbsp;Listing Delimiters</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.3.6.listingfont">3.3.6&nbsp;Listing Font</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.listingicons">&lsquo;Listing Icons&rsquo; in 3. Directory Listing</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.3.11.listingrefreshandexpiry">3.3.11&nbsp;Listing Refresh and Expiry</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.3.5.listingtitle">3.3.5&nbsp;Listing Title</a>
<tr><td class="alpha">M</td><td class="text"><a href="#2.3.masterfiledirectory000000">&lsquo;Master file directory [000000]&rsquo; in 2.3 Document Specification</a>
<tr><td class="alpha">N</td><td class="text"><a href="#10.noneofthefollowinglicensingappearsincompatiblewiththeapachelicense">&lsquo;None of the following licensing appears incompatible with the Apache License&rsquo; in 10. Attribution and Acknowledgement</a>
<tr><td class="alpha">O</td><td class="text"><a href="#10.ohiostateuniversity">&lsquo;Ohio State University&rsquo; in 10. Attribution and Acknowledgement</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#0.onlinesearch">&lsquo;Online Search&rsquo; in  WASD Web Environment</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#10.opensslproject">&lsquo;OpenSSL Project&rsquo; in 10. Attribution and Acknowledgement</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#4.11.osuquotpartquots">&lsquo;OSU &quot;Part&quot;s&rsquo; in 4.11 OSU Compatibility</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#4.11.osucompatibility">4.11&nbsp;OSU Compatibility</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#4.11.osucompatibledirectives">&lsquo;OSU Compatible Directives&rsquo; in 4.11 OSU Compatibility</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#4.11.osudirectives">&lsquo;OSU Directives&rsquo; in 4.11 OSU Compatibility</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#4.6.otherquotfunctionsquot">&lsquo;Other &quot;Functions&quot;&rsquo; in 4.6 Variables</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#6.otherlibrarianfunctionality">&lsquo;Other Librarian Functionality&rsquo; in 6. VMS Help and Text Libraries</a>
<tr><td class="alpha">P</td><td class="text"><a href="#2.3.2.partialorrelativefilepath">2.3.2&nbsp;Partial (or Relative) File Path</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#10.paulejones">&lsquo;Paul E. Jones&rsquo; in 10. Attribution and Acknowledgement</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#5.1.plaintextsearch">5.1&nbsp;Plain-Text Search</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#4.3.preexpiringdocuments">4.3&nbsp;Pre-Expiring Documents</a>
<tr><td class="alpha">Q</td><td class="text"><a href="#3.3.17.querystring">3.3.17&nbsp;Query String</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#4.8.querystrings">4.8&nbsp;Query Strings</a>
<tr><td class="alpha">R</td><td class="text"><a href="#3.3.8.readmefiles">3.3.8&nbsp;Readme Files</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#10.rsadatasecurity">&lsquo;RSA Data Security&rsquo; in 10. Attribution and Acknowledgement</a>
<tr><td class="alpha">S</td><td class="text"><a href="#4.12.scriptgeneratedssidocuments">4.12&nbsp;Script-Generated SSI Documents</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.3.12.scriptingfromdirectorylistings">3.3.12&nbsp;Scripting From Directory Listings</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#5.3.3.searchoptions">5.3.3&nbsp;Search Options</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#5.3.searchsyntax">5.3&nbsp;Search Syntax</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.3.4.selectivelisting">3.3.4&nbsp;Selective Listing</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.3.serverdirectives">3.3&nbsp;Server Directives</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#4.serversideincludesssi">4.&nbsp;Server Side Includes (SSI)</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.3.3.sortablelisting">&lsquo;Sortable Listing&rsquo; in 3.3.3 Directory Style</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.3.15.specifyingcontenttype">3.3.15&nbsp;Specifying Content-Type</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#4.5.ssidirectives">&lsquo;SSI Directives&rsquo; in 4.5 Directives</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#5.3.1.standardsearchform">5.3.1&nbsp;Standard Search Form</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#4.10.strftimeformatdirectives">&lsquo;strftime() Format Directives&rsquo; in 4.10 Time Format</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#10.stuartlangridge">&lsquo;Stuart Langridge&rsquo; in 10. Attribution and Acknowledgement</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#4.6.substrings">&lsquo;Substrings&rsquo; in 4.6 Variables</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.3.10.suppressingdirectories">3.3.10&nbsp;Suppressing Directories</a>
<tr><td class="alpha">T</td><td class="text"><a href="#0.tableofcontent">&lsquo;Table of Content&rsquo; in  WASD Web Environment</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.3.14.targetwindow">3.3.14&nbsp;Target Window</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#10.tatsuhirotsujikawa">&lsquo;Tatsuhiro Tsujikawa&rsquo; in 10. Attribution and Acknowledgement</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#4.9.1.thefilename">4.9.1&nbsp;THE_FILE_NAME</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#4.10.timeformat">4.10&nbsp;Time Format</a>
<tr><td class="alpha">U</td><td class="text"><a href="#8.updateaccesspermission">&lsquo;Update Access Permission&rsquo; in 8. Web Document Update</a>
<tr><td class="alpha">V</td><td class="text"><a href="#4.6.variables">4.6&nbsp;Variables</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#4.1.virtualdocuments">4.1&nbsp;Virtual Documents</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#6.vmshelpandtextlibraries">6.&nbsp;VMS Help and Text Libraries</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.vmsishformat">&lsquo;VMS-ish Format&rsquo; in 3. Directory Listing</a>
<tr><td class="alpha">W</td><td class="text"><a href="#10.wasdvmswebservicesndashcopyrightcopy19962021markgdaniel">&lsquo;WASD VMS Web Services &ndash; Copyright &copy; 1996-2021 Mark G. Daniel&rsquo; in 10. Attribution and Acknowledgement</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#0.wasdwebenvironment">&lsquo;WASD Web Environment&rsquo; in  WASD Web Environment</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#8.webdocumentupdate">8.&nbsp;Web Document Update</a>
<tr><td class="alpha">Y</td><td class="text"><a href="#3.ymmv">&lsquo;YMMV&rsquo; in 3. Directory Listing</a>
<tr><td class="alpha">&nbsp;</td><td class="text"><a href="#3.3.15.ymmv">&lsquo;YMMV&rsquo; in 3.3.15 Specifying Content-Type</a>
</table>
</div>


<hr class="page">
<a id="10." href="#"></a>
<a id="10.attributionandacknowledgement" href="#"></a>
<a id="attributionandacknowledgement" href="#"></a>
<h1 class="head"><span class="numb">10.</span><span class="text">Attribution and Acknowledgement</span></h1>

<table class="NAVtable NAVprint"><tr>
<td><a href="javascript:window.history.back();">&#8617;&#xFE0E;</a>
<td><a href="#9.">&#8598;&#xFE0E;</a>
<td><a href="#0.">&#8593;&#xFE0E;</a>
<td><a>&#8600;&#xFE0E;</a>
<td><a href="javascript:window.history.forward();">&#8618;&#xFE0E;</a>
</table>

<a id="10.0.0.0.1" href="#"></a>
<a id="10.wasdvmswebservicesndashcopyrightcopy19962021markgdaniel" href="#"></a>
<a id="wasdvmswebservicesndashcopyrightcopy19962021markgdaniel" href="#"></a>
<h5 class="head"><span class="text">WASD VMS Web Services &ndash; Copyright &copy; 1996-2021 Mark G. Daniel</span></h5>

<a id="10.0.0.0.2" href="#"></a>
<a id="10.licensedundertheapachelicenseversion20" href="#"></a>
<a id="licensedundertheapachelicenseversion20" href="#"></a>
<h5 class="head"><span class="text">Licensed under the <span class="high bold">Apache License</span>, Version 2.0</span></h5>

<p>
<div class="blockof code">You may not use this software except in compliance with the License.
You may obtain a copy of the License at

<a class="link blank" target="_blank" style="margin-left:1em;" href="https://www.apache.org/licenses/LICENSE-2.0">https://www.apache.org/licenses/LICENSE-2.0</a>

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
</div>

<a id="10.0.0.0.3" href="#"></a>
<a id="10.noneofthefollowinglicensingappearsincompatiblewiththeapachelicense" href="#"></a>
<a id="noneofthefollowinglicensingappearsincompatiblewiththeapachelicense" href="#"></a>
<h5 class="head"><span class="text">None of the following licensing appears incompatible with the Apache License</span></h5>

<a id="10.0.0.0.4" href="#"></a>
<a id="10.clarkcooperetal" href="#"></a>
<a id="clarkcooperetal" href="#"></a>
<h5 class="head"><span class="text">Clark Cooper, et.al.</span></h5>

<p> This package uses the Expat XML parsing toolkit.

<div class="blockof code">Copyright (c) 1998, 1999, 2000
Thai Open Source Software Center Ltd and Clark Cooper
Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers.

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
&quot;Software&quot;), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
</div>

<a id="10.0.0.0.5" href="#"></a>
<a id="10.bjoumlernhoumlehrmann" href="#"></a>
<a id="bjoumlernhoumlehrmann" href="#"></a>
<h5 class="head"><span class="text">Bj&ouml;ern H&ouml;ehrmann</span></h5>

<p> This package uses essential algorithm and code from Flexible and Economical
UTF-8 Decoder.

<div class="blockof code">Copyright (c) 2008-2009 Bj&ouml;ern H&ouml;ehrmann (&lt;bjoern@hoehrmann.de&gt;)

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
&quot;Software&quot;), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
</div>

<a id="10.0.0.0.6" href="#"></a>
<a id="10.freesoftwarefoundation" href="#"></a>
<a id="freesoftwarefoundation" href="#"></a>
<h5 class="head"><span class="text">Free Software Foundation</span></h5>

<p> This package contains software made available by the Free Software
Foundation under the GNU General Public License.

<div class="blockof code">This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
</div>

<a id="10.0.0.0.7" href="#"></a>
<a id="10.ohiostateuniversity" href="#"></a>
<a id="ohiostateuniversity" href="#"></a>
<h5 class="head"><span class="text">Ohio State University</span></h5>

<p> This package contains software provided with the OSU (DECthreads) HTTP
server package, authored by David Jones:

<div class="blockof code">Copyright 1994,1997 The Ohio State University.  
The Ohio State University will not assert copyright with respect
to reproduction, distribution, performance and/or modification 
of this program by any person or entity that ensures that all 
copies made, controlled or distributed by or for him or it bear 
appropriate acknowlegement of the developers of this program.
</div>

<a id="10.0.0.0.8" href="#"></a>
<a id="10.opensslproject" href="#"></a>
<a id="opensslproject" href="#"></a>
<h5 class="head"><span class="text">OpenSSL Project</span></h5>
                                                                           
<p> This product <span class="high italic">can</span> include software developed by the OpenSSL Project for
use in the OpenSSL Toolkit (<a class="link blank" target="_blank" href="https://www.openssl.org/">https://www.openssl.org/</a>).

<div class="blockof code">Redistribution and use in source and binary forms, with or without
modification, are permitted ...
</div>

<a id="10.0.0.0.9" href="#"></a>
<a id="10.paulejones" href="#"></a>
<a id="paulejones" href="#"></a>
<h5 class="head"><span class="text">Paul E. Jones</span></h5>

<p> This package uses SHA-1 hash code.

<div class="blockof code">Copyright (C) 1998, 2009
Paul E. Jones &lt;paulej@packetizer.com&gt;

Freeware Public License (FPL)

This software is licensed as &quot;freeware.&quot;  Permission to distribute this
software in source and binary forms, including incorporation  into other
products, is hereby granted without a fee.
</div>

<a id="10.0.0.0.10" href="#"></a>
<a id="10.rsadatasecurity" href="#"></a>
<a id="rsadatasecurity" href="#"></a>
<h5 class="head"><span class="text">RSA Data Security</span></h5>

<p> This software contains code derived in part from RSA Data Security, Inc:

<div class="blockof code">permission granted to make and use derivative works provided that such works
are identified as &quot;derived from the RSA Data Security, Inc. MD5 Message-Digest
Algorithm&quot; in all material mentioning or referencing the derived work.
</div>

<a id="10.0.0.0.11" href="#"></a>
<a id="10.stuartlangridge" href="#"></a>
<a id="stuartlangridge" href="#"></a>
<h5 class="head"><span class="text">Stuart Langridge</span></h5>

<p> SortTable version 2
<br> Stuart Langridge, http://www.kryogenix.org/code/browser/sorttable/

<div class="blockof code">Thanks to many, many people for contributions and suggestions.
Licenced as X11: <a class="link blank" target="_blank" href="http://www.kryogenix.org/code/browser/licence.html">http://www.kryogenix.org/code/browser/licence.html</a>
This basically means: do what you want with it.
</div>

<a id="10.0.0.0.12" href="#"></a>
<a id="10.tatsuhirotsujikawa" href="#"></a>
<a id="tatsuhirotsujikawa" href="#"></a>
<h5 class="head"><span class="text">Tatsuhiro Tsujikawa</span></h5>

<p> nghttp2 - HTTP/2 C Library
<br> Tatsuhiro Tsujikawa, <a class="link blank" target="_blank" href="https://github.com/tatsuhiro-t">https://github.com/tatsuhiro-t</a>

<div class="blockof code">Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the &quot;Software&quot;), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
</div>

<p> <span class="high bold">VSI OpenVMS</span>,
<span class="high bold">VSI TCP/IP Services for OpenVMS</span>,
<span class="high bold">VSI C</span>

<br> are registered trademarks of VMS Software Inc. 

<p> <span class="high bold">OpenVMS</span>,
<span class="high bold">HP TCP/IP Services for OpenVMS</span>,
<span class="high bold">HP C</span>,
<span class="high bold">Alpha</span>,
<span class="high bold">Itanium</span> and
<span class="high bold">VAX</span>

<br> are registered trademarks of Hewlett Packard Enterprise 

<p> <span class="high bold">MultiNet</span> and <span class="high bold">TCPware</span> are registered trademarks of Process Software
Corporation

<table class="NAVtable NAVprint"><tr>
<td><a href="javascript:window.history.back();">&#8617;&#xFE0E;</a>
<td><a href="#9.">&#8598;&#xFE0E;</a>
<td><a href="#0.">&#8593;&#xFE0E;</a>
<td><a>&#8600;&#xFE0E;</a>
<td><a href="javascript:window.history.forward();">&#8618;&#xFE0E;</a>
</table>
<title>WASD Web Environment</title>