summaryrefslogtreecommitdiff
path: root/net/netzhandbuch
blob: 70834625103215f76c0dfaecfff64a324bbe6e83 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
____________________________________________________________________________ 
 
 
#on("b")##on ("u")# 
#center#Betriebssystem E U M E L 
#off ("u")# 
 
 
#center#Netzsoftware 
 
 
 
 
#off("b")# 
#center#Lizenzfreie Software der 
#on ("b")# 
 
#center#Gesellschaft für Mathematik und Datenverarbeitung mbH, 
#center#5205 Sankt Augustin 
 
 
#off("b")# 
#center#Die Nutzung der Software ist nur im Schul- und Hochschulbereich für 
#center#nichtkommerzielle Zwecke gestattet. 
 
#center#Gewährleistung und Haftung werden ausgeschlossen 
 
 
____________________________________________________________________________ 
#page# 
#pagenr ("%",1)##setcount(1)##block##pageblock##count per page# 
#headeven# 
#center#EUMEL Netzbeschreibung 
#center#____________________________________________________________ 
 
#end# 
#headodd# 
#center#Inhalt 
#center#____________________________________________________________ 
 
#end# 
#bottomeven# 
#center#____________________________________________________________ 
Netz - % #right# GMD 
#end# 
#bottomodd# 
#center#____________________________________________________________ 
GMD #right#Netz - % 
#end# 
 
#center#Inhalt 
 
#clear pos##lpos(1.0)##rpos(9.5)# 
#table# 
 
1. Einleitung  #topage("0")# 
 
Teil 1: Netz einrichten und benutzen  #topage("1")# 
 
 
1.1. Hardwarevoraussetzungen  #topage("1.1")# 
1.2. Einrichten des Netzes    #topage("1.2")# 
1.3. Benutzung des Netzes   #topage("1.3")# 
1.4. Informationsmöglichkeiten   #topage("1.4")# 
1.5. Eingriffsmöglichkeiten   #topage("1.5")# 
1.6. Fehlerbehebung im Netz   #topage("1.6")# 
1.7. Sicherheit im Netz       #topage("1.7")# 
 
 
 
Teil 2: Arbeitsweise der Netzsoftware   #topage("2")# 
 
 
2.1. Die Netztask    #topage("2.1")# 
2.2. Protokollebenen   #topage("2.2")# 
2.3. Stand der Netzsoftware  #topage("2.3")# 
 
 
 
Teil 3: Netz-Hardware-Interface   #topage("3")# 
 
 
3.1. Einführung   #topage("3.1")# 
3.2. Arbeitsweise des Netz-Hardware-Interfaces   #topage("3.2")# 
3.3. Netztreiber  #topage("3.3")# 
3.4. Prozedurschnittstelle des EUMEL-Netzes  #topage("3.4")# 
 
 
 
Anhang      #topage("A")# 
 
 
1. Fehlermeldungen  #topage("A.1")# 
2. Literaturhinweise    #topage("A.2")# 
3. Index  #topage("A.3")# 
 
#table end# 
#clear pos# 
 
#page# 
#pagenr ("%", 2)##setcount (1)##block##pageblock##count per page# 
#headeven# 
#center#EUMEL Netzbeschreibung 
#center#____________________________________________________________ 
 
#end# 
#headodd# 
#center#Einleitung 
#center#____________________________________________________________ 
 
#end# 
#bottomeven# 
#center#____________________________________________________________ 
Netz - % #right#GMD 
#end# 
#bottomodd# 
#center#____________________________________________________________ 
GMD #right#Netz - % 
#end# 

1. Einleitung 
 
#goalpage("0")# 
Das EUMEL-Netz dient dazu, mehrere EUMEL-Rechner (sog. #ib#Station#ie#en) miteinan­
der zu koppeln. Diese Kopplung wird vom Betriebssystem dazu benutzt, das Sen­
dungskonzept [1] so auszudehnen, daß Tasks verschiedener Stationen einander
Datenräume zusenden können. Auf dem #ib#Sendungskonzept#ie# aufbauende Konzepte
nutzen daher automatisch das Netz aus: So ist es z.B. möglich 
 
-  von einer Station aus auf einer anderen zu drucken, 
 
-  in die Task PUBLIC einer anderen Station #ib#Datei#ie#en zu sichern (save), vorausge­
   setzt, daß PUBLIC dort ein #on("b")#free global manager#off("b")# ist, 
 
-  auf einer anderen Station zu archivieren (z.B. wenn das eigene Archivlaufwerk
   defekt ist oder ein anderes Format hat). 
 
Diese #ib#Netzversion#ie# kann ab EUMEL-Version 1.8.1 eingesetzt werden. 
 
Diese Netzbeschreibung besteht aus drei Teilen. In Teil 1 wird beschrieben, wie das
EUMEL-Netz benutzt und eingerichtet wird. Als Benutzer eines EUMEL-
Rechners, der vernetzt ist, ist nur dieser Teil der Netzbeschreibung für Sie wichtig.
Teil 2 erklärt die Funktionsweise der #ib#Netzsoftware#ie#, im dritten Teil wird die Schnitt­
stelle für die Anpassung anderer #ib#Netzhardware#ie# definiert. 
 
Hinweis: 
 
Zur erstmaligen #ib#Installation#ie# des EUMEL-Netzes ist außer dieser Beschreibung noch
die Netzsoftware (auf Floppy) und die EUMEL-Netz-#ib#Installationsanleitung#ie#, die mit
der Software geliefert wird, notwendig. 
 
In der vorliegenden Netzbeschreibung wird das EUMEL-Netz möglichst "hardware
unabhängig" beschrieben. Wenn hardwareabhängige Beispiele gegeben werden, so
ist die dort beschriebene Hardware stets die #ib#Datenbox#ie#. 
#pagenr ("%", 3)##setcount (1)##block##pageblock##count per page# 
#headeven# 
#center#EUMEL Netzbeschreibung 
#cneter#____________________________________________________________ 
 
#end# 
#headodd# 
#center#Teil 1 :  Netz einrichten und benutzen 
#center#____________________________________________________________ 
 
#end# 
#bottomeven# 
#center#____________________________________________________________ 
Netz - % #right#GMD 
#end# 
#bottomodd# 
#center#____________________________________________________________ 
GMD #right#Netz - % 
#end# 
#page# 
 
Teil 1: Netz einrichten und benutzen 
#goalpage("1")# 
 
 
 
1.1. Hardwarevoraussetzungen 
#goalpage("1.1")# 
 
 
Zwei Stationen 
 
Sie können zwei #ib#Station#ie# miteinander vernetzen, wenn Sie dafür an jeder Station eine
#ib#V.24#ie#-#ib#Schnittstelle#ie# zur Verfügung stellen. 
 
Diese beiden Schnittstellen verbinden Sie mit einem Kabel zur #ib#Rechnerkopplung#ie# [2]. 
 
 
Mehrere Stationen 
 
Wenn Sie mehr als zwei Stationen vernetzen wollen, stehen Ihnen zwei Konzepte zur
Verfügung: das Anlegen von #ib#Netzknoten#ie# bzw. das Verwenden eines #ib#Strang#ie#es. Die
Konzepte können gemischt eingesetzt werden. 
 
Ein Strang besteht aus einer Anzahl von #ib#Netzbox#ie#en (z.B. KHW-Box oder Ethernet­
anschluß). 
 
Jede Box besitzt eine #ib#Schnittstelle#ie# (z.B. #ib#V.24#ie#) zum Anschluß an einen der Kanäle
1...15 der zugeordneten #ib#Station#ie# und eine weitere Schnittstelle zur #ib#Verbindung#ie# der
Boxen untereinander. 
 
Ein #ib#Knoten#ie# ist eine Station, bei der der Netzbetrieb über mehrere Kanäle läuft. 
 
Da die #ib#Netzsoftware#ie# pro #ib#Kanal#ie# eines Knotens eine Task generiert, ist das Knoten­
konzept dem Strangkonzept hinsichtlich des #ib#Durchsatz#ie#es unterlegen. Preisgünstiger
ist jedoch das #ib#Knotenkonzept#ie#, weil dabei #ib#Netzbox#ie#en überflüssig werden. 
 
Beim Knotenkonzept wird eine #ib#Vermaschung#ie# nicht zur Optimierung benutzt (Ver­
maschung heißt, daß eine #ib#Zielstation#ie# über verschiedene Knoten erreichbar ist). Daher
sollte man keine Vermaschung vorsehen. 
 
#ib#Nachbarn#ie# sind Stationen, die an denselben #ib#Netzstrang#ie# angeschlossen oder direkt
über ein #ib#V.24#ie#-Kabel verbunden sind. 
 
Bei der Entscheidung, welche Stationen man zu #ib#Knoten#ie# macht, sollte beachtet wer­
den, daß (a) Stationen, zwischen denen hoher Verkehr besteht, Nachbarn werden und
daß (b) besonders leistungsfähige Rechner #ib#Knoten#ie#stationen sein sollten. 
#page# 
 
1.2. Einrichten des Netzes 
#goalpage("1.2")# 
 
 
Hinweis: Dieses Kapitel ist nur für Systembetreuer wichtig. 
 
a) Legen Sie für die am Netz beteiligten Rechner #ib#Stationsnummer#ie#n fest (von 1 an
   aufsteigend). 
 
   Die Boxen haben ebenfalls Stationsnummern. Die Stationsnummern der Box und
   des zugeordneten Rechners müssen übereinstimmen. 
 
 
b) Holen Sie an jeder #ib#Station#ie# die Task #on("bold")#configurator#off("bold")# an ein Terminal und geben Sie
   das Kommando #on("bold")##ib#define station#ie# (x)#off("bold")#, wobei #on("bold")#x#off("bold")# die gewählte Stationsnummer ist. 
 
   Hinweis:  Taskkommunikationen, die zu diesem Zeitpunkt laufen, führen zu feh­
             lerhaftem Verhalten. Dies liegt daran, daß durch #on("bold")#define station#off("bold")# alle
             #ib#Task-Id#ie#'s geändert werden müssen, weil eine #ib#Task-Id#ie# u.a. die
             Stationsnummer der eigenen Station enthält (siehe 1.3). TASK-
             Variablen, die noch Task-Id's mit keiner oder falscher Stationsnum­
             mer enthalten, können nicht mehr zum Ansprechen einer Task ver­
             wendet werden. 
 
   Beispiel: Der #ib#Spoolmanager#ie# [3] richtet beim Kommando #on("bold")#start#off("bold")# einen #ib#Worker#ie# ein
             und merkt sich dessen #ib#Task-Id#ie# in einer TASK-Variablen, um sicher­
             zustellen, daß nur der Worker #ib#Datei#ie#en zum Drucken abholt. Wird jetzt
             das Kommando #on("bold")# define station#off("bold")# gegeben, kann der Spoolmanager
             seinen Worker nicht mehr identifizieren, weil der Worker eine neue
             Task-Id erhalten hat. Man muß daher vor #on("b")#define station#off("b")# den Worker
             löschen und ihn danach mit dem Kommando #on("bold")##ib#start#ie##off("bold")# im Spoolmanager
             wieder neu einrichten. 
 
 
   Sinnvollerweise gibt man #on("bold")#define station#off("bold")# sofort nachdem man ein frisches System
   vom Archiv geladen hat. 
 
   Zum Anschluß einer #ib#Datenbox#ie# #ib#konfigurieren#ie# Sie mit dem Kommando #on("bold")##ib#configurate#ie##off("bold")#
   den für das Netz vorgesehenen #ib#Kanal#ie# auf 
 
   -  transparent 
   -  9600 #ib#Baud#ie# (Standardeinstellung der Boxen) 
   -  #ib#RTS/CTS#ie#-#ib#Protokoll#ie# 
   -  großen Puffer 
   -  8 bit 
   -  even parity 
   -  1 stopbit. 
 
   Falls diese Einstellungen nicht alle angeboten werden, klären Sie mit Ihrem
   Rechnerlieferanten, ob und wie diese Einstellungen erreicht werden können. 
 
   Hinweis:  Notfalls kann auf das #ib#RTS/CTS#ie#-Protokoll verzichtet werden, wenn der
             Eingabepuffer der #ib#Station#ie# groß genug ist. Die Anzahl simultan laufen­
             der Netzkommunikationen ist dann auf 
 
                    puffergröße DIV 150 
 
             begrenzt (bei Z80, 8086: 3; bei M20: 10). 
 
   Hinweis:  Es können auch andere #ib#Baud#ie#raten (2400, 4800, 19200) an der Box
             eingestellt werden. 
 
 
c) Achten Sie bei der #ib#Verbindung#ie# von der Station zur #ib#Netzbox#ie# (bzw. zur Gegen­
   station bei einem Zweistationennetz ohne Boxen) darauf, daß neben den Emp­
   fangs- und Sendeleitungen auch die Leitungen RTS und CTS verdrahtet wer­
   den, also ein 5-poliges Kabel verwendet wird [2]. Die #ib#Pin-Belegung#ie# der Boxen
   entspricht der eines Kabels zur Rechner-Rechner-Kopplung. 
 
   Beispiel: 
 
   Verbindung eines BICOS-Systems mit der Box: 
 
   Stecker                  Stecker 
   Pin                      Pin 
 
   2  <--------->           3 
   3  <--------->           2 
   4  <--------->           5 
   5  <--------->           4 
   7  <--------->           7 
 
 
d) Richten Sie eine Task #on("bold")##ib#net#ie##off("bold")# unter #on("bold")#SYSUR#off("bold")# ein und legen Sie eine #ib#Datei#ie# #on("b")##ib#netz#ie##off("b")# an, die
   Ihre #ib#Netzkonfiguration#ie# enthält, oder ändern Sie die mitgelieferte Datei ent­
   sprechend ab (siehe auch 1.5.).#goalpage("sperre")# 
 
 
   Dem bisherigen Netz entspricht eine Datei #on("b")#netz#off("b")# mit folgendem Inhalt: 
 
     definiere netz; 
     routen (1,127,k); 
     starte kanal (k,1,x); 
     aktiviere netz. 
 
     k: ihr netzkanal. 
     x: IF yes ("#ib#Flußkontrolle#ie#") THEN 10 ELSE 3 FI. 
 
 
 
   Laden Sie die Datei #on("b")##ib#net install#ie##off("b")# vom Archiv #on("b")#net#off("b")# und übersetzen Sie diese. Je nach­
   dem, welche EUMEL-Version auf der Maschine installiert ist, werden die notwen­
   digen Programmdateien insertiert. 
 
   Es sind dies 
 
                          net report 
                          net hardware interface 
                          basic net 
                          net manager 
 
 
   Das Netz wird dabei gestartet. 
 
 
   Hinweis:  Obwohl die Task #on("b")#net#off("b")# sich noch mit #on("bold")##ib#continue#ie##off ("bold")# an ein Terminal holen
             läßt, sollte man dies nur kurzzeitig tun, da der Netzverkehr solange
             blockiert ist. 
 
             In der #ib#Datei#ie# #on("b")#netz#off("b")# sollte der #ib#Kanal#ie#, über den der meiste Verkehr erwar­
             tet wird, zuerst gestartet werden. Für ihn wird die Task #on("b")##ib#net port#ie##off("b")# gene­
             riert, für jeden weiteren Kanal wird eine Task #on("b")##ib#net port#ie# k#off("b")# (k=Kanal­
             nummer) generiert. 
#page# 

1.3. Benutzung des Netzes  
#goalpage("1.3")# 
 
 
Zur Benutzung des Netzes stehen folgende Operatoren und Prozeduren zur Verfü­
gung: 
 
 
 
TASK OP #ib#/#ie# (INT CONST station, TEXT CONST taskname) 
 
liefert die Task #on("bold")#taskname#off("bold")# von der #ib#Station#ie# #on("bold")#station#off("bold")#. 
 
 
#ib#Fehlerfälle#ie#: 
 
  -  #ib(4)#Task "...." gibt es nicht#ie(4)# 
 
     Die angeforderte Task gibt es auf der #ib#Zielstation#ie# nicht. 
 
  -  #ib(4)##ib#Collectortask#ie# fehlt#ie(4)# 
 
     die Task #on("b")##ib#net port#ie##off("b")# existiert nicht (siehe 6). 
 
     Hinweis:  #on("b")#net port#off("b")# wird bei jedem Start des Netzes neu generiert und beim
               Auftreten eines nicht vorhergesehenen #ib#Fehler#ie#s beendet. Die Feh­
               lermeldung steht im #on("b")##ib#report#ie##off("b")# (siehe 4). 
 
  -  #ib(4)#Station x antwortet nicht#ie(4)# 
 
     Eine nicht vorhandene oder abgeschaltete Station wurde angesprochen. 
 
     Hinweis: Dieser #ib#Fehler#ie# wird angenommen, wenn eine Überwachungszeit von
              ca. 30 Sekunden verstrichen ist, ohne daß Station x die Taskidenti­
              fikation angeliefert hat. 
 
  -  #ib(4)#Station x gibt es nicht#ie(4)# 
 
     #ib#Station#ie# x steht nicht in den #ib#Routentabelle#ie#n. 
 
     Diese Meldung kann auch erscheinen, wenn Station x erst kürzlich an das Netz
     angeschlossen wurde. Sie steht dann noch nicht in den Routentabellen (siehe
     auch 5.3.). 
 
     Beispiel: 
 
        list (5/"PUBLIC") 
 
     Die Dateiliste von PUBLIC der Station 5 wird angefordert. 
 
 
 
TASK OP #ib#/#ie# (INT CONST station, TASK CONST task) 
 
liefert 
 
station / name (task) 
 
Beispiel: 
 
   list (4/public) 
 
 
Fehlerfall: 
 
   "......" #ib(4)#gibt es nicht#ie(4)# 
 
   Auf der eigenen Station gibt es die Task #on("b")#task#off("b")# nicht. 
   Der Taskname wird auf der eigenen Station bestimmt, wenn es dort die Task 
   nicht gibt, führt dies zur obigen Fehlermeldung. 
 
Abhilfe: 
 
   Statt list(4/public) das Kommando list (4/"PUBLIC") verwenden. 
 
 
 
INT PROC #ib#station#ie# (TASK CONST task) 
 
liefert die #ib#Stationsnummer#ie# der Task #on("bold")#task#off("bold")#. 
 
Beispiel: 
 
   put (station (myself)) 
 
   gibt die eigene Stationsnummer aus. 
 
 
 
 
PROC #ib#reserve#ie# (TEXT CONST archivename, TASK CONST archivetask) 
 
dient dazu, das Archiv auf der #ib#Station#ie# #on("bold")#station#off("bold")# anzumelden. 
 
Beispiel: 
 
   reserve ("std", 4/"ARCHIVE"); #ib#list#ie# (4/"ARCHIVE") 
 
   gibt das Inhaltsverzeichnis der Archivfloppy im Laufwerk der Station 4 aus. 
 
   Hinweis: Vergessen Sie bei solchen #ib#Querarchivierungen#ie# nicht die Stationsangabe
            bei jedem einzelnen Archivkommando (z.B fetch ("xxx", #on("bold")#4/#off("bold")#
            "ARCHIVE")). 
 
   Hinweis: Querarchivieren ist langsam. Verwenden Sie es nur, wenn Sie Floppy­
            formate umsetzen wollen. 
 
 
 
 
PROC #ib#free global manager#ie# 
 
dient dazu, die eigene Task über das Netz ansprechbar zu machen. Jede andere
Task im Netz kann dann die üblichen #ib#Manager#ie#aufrufe (#on("bold")##ib#save#ie##off ("bold")#, #on("bold")##ib#fetch#ie##off ("bold")#, usw.) an die
eigene Task machen, sofern diese nicht an ein Terminal gekoppelt ist. 
 
Die Task wird (wie bei #on("bold")#break#off ("bold")#) abgekoppelt und meldet sich in Zukunft mit #on("bold")#mainte­
nance#off ("bold")# statt mit #on("bold")#gib kommando#off ("bold")#. 
 
Beispiel: 
 
   An Station 4 ruft man in der Task "hugo" das Kommando #on("bold")#free global manager#off("bold")#
   auf. Anschließend kann man von jeder Station aus z.B. #on("bold")#list (4/"hugo")#off ("bold")# usw. auf­
   rufen. 
 
 
 
 
TEXT PROC #ib#name#ie# (TASK CONST t) 
 
Diese (schon immer vorhandene) Prozedur wurde dahingehend erweitert, daß der
Name einer auf einer anderen Station existierenden Task über Netz angefordert wird. 
 
Existiert die Task nicht, so wird #on("bold")##ib#niltext#ie##off ("bold")# geliefert. 
 
Hinweis: Die Prozedur #on("bold")##ib#exists#ie##off ("bold")# wurde nicht auf das Netz ausgedehnt, da sie in Situa­
         tionen eingesetzt wird, wo es auf eine sehr schnelle Antwort ankommt.
         Daher liefert #on("bold")#exists#off ("bold")# für eine stationsfremde Task immer FALSE. Will man
         wissen, ob eine solche Task existiert, verwende man die Abfrage 
 
         #on("bold")#IF name (task) <> "" THEN ... #off ("bold")#. 
 
#ib#Fehlerfall#ie#: 
 
   - #ib(4)#Station x antwortet nicht#ie(4)# 
 
   - #ib(4)##ib#Station#ie# x gibt es nicht#ie(4)# 
 
#page# 
 
1.4. Informationsmöglichkeiten 
 
#goalpage("1.4")# 
 
In der Task #on("bold")#net#off("bold")# wird eine #ib#Datei#ie# #on("bold")##ib#report#ie##off("bold")# geführt, in der #ib#Fehlersituationen#ie# des Netzes
verzeichnet werden. Diese Datei kann in jeder anderen Task auf derselben Station mit
#on("bold")##ib#list#ie# (/"#ib#net#ie#")#off("bold")# angesehen werden. Eine Erklärung der wichtigsten Meldungen finden Sie
im Anhang. 
 
In jeder Task kann durch das Kommando #on("bold")##ib#list#ie# (/"#ib#net port#ie#")#off("bold")# eine Übersicht über die
momentan laufenden #ib#Netzübertragungen#ie# der eigenen #ib#Station#ie# erhalten werden (nur für
den #ib#Kanal#ie#, an dem #on("b")##ib#net port#ie##off("b")# hängt). Entsprechendes gilt für die weiteren Netports der
eigenen Station. 
 
Mit #on("bold")##ib#list#ie# (/"#ib#net list")#ie##off("bold")# erhält man die Informationen, die man mit #on("b")#list (/"net")#off("b")# und #on("b")##ib#list#ie##off("b")# auf
alle Netports bekommt, sofern #on("b")##ib#listoption#ie##off("b")# (siehe S. #topage("listop")#) beim Generieren des Netzes
aufgerufen wurde. Dieser Aufruf funktioniert auch bei fremden Stationen (z.B. #on("b")#list
(5/"net list")#off("b")#). 
 
#page# 
 
1.5. Eingriffsmöglichkeiten 
 
#goalpage("1.5")# 
 
-  Jede Task kann #ib#Sende#ie(1,"ströme")#- und #ib#Empfangsströme#ie#, die bei #on("bold")#list (/"net port")#off("bold")# gemel­
   det worden sind und die eigene Task betreffen, abbrechen. Hierzu ist das Kom­
   mando #on("bold")##ib#erase#ie# ("x", /"#ib#net port#ie#")#off ("bold")# zu geben, wobei x die #ib#Stromnummer#ie# (aus dem #on("bold")#list#off ("bold")#)
   ist. 
   Unberechtigte #ib#Löschversuche#ie# werden abgewiesen. 
   Von privilegierten Tasks aus können jedoch mit #on("b")##ib#erase#ie##off("b")# beliebige Ströme abge­
   brochen werden. 
 
 
-  Durch das Kommando #on("bold")##ib#start#ie##off("bold")# kann von der Task #on("b")##ib#net#ie##off("b")# aus das Netz neu gestartet
   werden. Dies setzt eine gültige #ib#Datei#ie# #on("bold")#netz#off("bold")# voraus. Es wird ein #on("bold")##ib#run#ie##off("bold")# auf diese Datei
   gegeben. Das Kommando #on("b")##ib#start#ie##off("b")# ist nur noch aus Kompatibilitätsgründen zum alten
   Netz vorhanden. 
 
 
-  Durch das Kommando #on("bold")##ib#routen aufbauen#ie##off("bold")# in der Task #on("b")##ib#net#ie##off("b")# werden die #ib#Routentabelle#ie#n
   neu aufgebaut. Dies kann notwendig werden, wenn eine neue #ib#Station#ie# ans Netz
   angeschlossen wurde (#ib#Fehlermeldung#ie# '#ib(4)#Station x gibt es nicht#ie(4)#'). #on("bold")#routen aufbauen#off ("bold")#
   muß zuvor auch an allen dazwischenliegenden #ib#Knotenstation#ie#en gegeben werden. 
 
   #on("bold")#routen aufbauen#off ("bold")# erzeugt eine Task #on("b")##ib#router#ie##off("b")#, die sich an das Terminal koppelt (die
   Task #on("b")#net#off("b")# koppelt sich ab) und ein #ib#Protokoll#ie# ausgibt. Sind die #ib#Route#ie#n aufgebaut,
   beendet sich die Task #on("b")#router#off("b")# mit der Meldung #on("b")#fertig#off("b")#. Es werden nur Stationen
   bearbeitet, die nicht #ib#gesperrt#ie# (siehe S. #topage("sperre")#), und für die keine festen Routen
   vereinbart sind. Der Vorgang dauert ca. 5 Sek. pro nicht gesperrter Station und
   #ib#Netzkanal#ie#. Die #ib#Route#ie#n werden in einem #ib#Datenraum#ie# #on("b")##ib#port intern#ie##off("b")# hinterlegt. 
 
 
-  Der Aufruf #on("bold")##ib#definiere netz#ie##off("bold")# leitet eine #ib#Netzdefinition#ie# in der #ib#Datei#ie# #on("bold")##ib#netz#ie##off("bold")# ein. Dabei
   werden alle augenblicklichen Netzkommunikationen gelöscht. Die Tasks #on("b")##ib#net port#ie#
   (k)#off("b")#, wobei #on("b")#k#off("b")# die #ib#Kanalnummer#ie# ist, und #on("b")##ib#net timer#ie##off("b")# werden gelöscht. 
 
   Dieser Aufruf muß vor den Aufrufen von #on("bold")##ib#starte kanal#ie#, #ib#erlaube#ie#, #ib#sperre#ie#, #ib#routen#ie#,
   #ib#aktiviere netz#ie# und #ib#list option#ie##off("bold")# erfolgen. 
 
 
-  PROC #ib#sperre#ie# (INT CONST a,z) 
   bewirkt, daß die Stationen #on("bold")#a#off("bold")# bis #on("bold")#z#off("bold")# keine Manageraufrufe an Tasks dieser Station
   geben dürfen (Genauer gesagt werden sendecodes > 6 nicht weitergeleitet, son­
   dern ein errornak mit dem Text "#ib(4)#kein Zugriff auf Station#ie(4)#" zurückgeschickt). 
 
   Dieser Aufruf muß vor dem ersten #on("bold")##ib#starte kanal#ie##off("bold")# erfolgen. 
 
 
-  PROC #ib#erlaube#ie# (INT CONST a,z) 
   bewirkt, daß die Stationen #on("bold")#a#off("bold")# bis #on("bold")#z#off("bold")# Manageraufrufe an Tasks dieser Station geben
   dürfen. 
 
   Dieser Aufruf muß vor dem ersten #on("bold")##ib#starte kanal#ie##off("bold")# erfolgen. 
 
   Beispiel: Alle Stationen außer 8 und 10 sollen #ib#gesperrt#ie# sein: 
 
             #ib#sperre#ie# (1,127); erlaube (8,8); erlaube (10,10) 
 
   Hinweis: 127 ist z.Zt. die maximale #ib#Stationsnummer#ie(1," maximale")#. 
 
 
-  PROC #ib#routen#ie# (INT CONST a,z,k) 
   legt fest, daß die Stationen #on("bold")#a#off("bold")# bis #on("bold")#z#off("bold")# an #ib#Kanal#ie# #on("bold")#k#off("bold")# direkt angeschlossen sind. Sen­
   dungen dieser Stationen werden nur bearbeitet, wenn sie über diesen Kanal her­
   einkommen (siehe 1.7.). Fehlt für eine Station ein entsprechender Routenaufruf, so
   darf sie über einen beliebigen #ib#Netzkanal#ie# angeschlossen sein. Dies wird dann von
   #on("bold")##ib#routen aufbauen#ie##off("bold")# ermittelt. 
 
   PROC routen (INT CONST a,z,k,zw) 
   legt fest, daß die Stationen #on("bold")#a#off("bold")# bis #on("bold")#z#off("bold")# indirekt über die #ib#Knotenstation#ie# #on("bold")#zw#off("bold")# angeschlos­
   sen sind, und #on("b")#zw#off("b")# am Kanal #on("bold")#k#off("bold")# hängt. 
 
 
-  PROC #ib#starte kanal#ie# (INT CONST k,m,q) 
   startet eine #ib#Netztask#ie# am #ib#Kanal#ie# #on("bold")#k#off("bold")# im Modus #on("bold")#m#off("bold")# [4]. Dabei wird mit #on("bold")#q#off("bold")# die Anzahl
   paralleler #ib#Empfangsströme#ie# festgelegt. Dadurch kann erreicht werden, daß der
   #ib#Empfangspuffer#ie# nicht überläuft, indem nicht mehr als #on("b")#q#off("b")# Ströme quittiert werden.
   Bei #ib#V.24#ie#-#ib#Schnittstelle#ie#n gebe man 3 (ohne #ib#Flußkontrolle#ie#) bzw. 10 (mit Flußkon­
   trolle) an. 
 
 
-  PROC #ib#aktiviere netz#ie# 
   muß als Abschluß in der Datei #on("bold")##ib#netz#ie##off("bold")# aufgerufen werden. Dabei wird die Task vom
   Terminal abgekoppelt. Falls es bei #on("bold")##ib#definere netz#ie##off("bold")# den #ib#Datenraum#ie# #on("b")##ib#port intern#ie##off("b")#, der
   die #ib#Route#ie#n enthält, nicht gab, wird #on("bold")##ib#routen aufbauen#ie##off("bold")# aufgerufen. 
 
 
-  PROC #ib#listoption#ie##goalpage("listop")# 
   erzeugt eine Task #on("b")##ib#net list#ie##off("b")#, die bei #on("bold")#list#off("bold")# den #ib#Fehlermeldung#ie#sreport und den Zustand
   aller Netports liefert. Diese Task ist auch über Netz ansprechbar. In der Regel
   sollte man #on("b")#listoption#off("b")# in der Datei #on("b")#netz#off("b")# aufrufen, es sei denn, das System ist sehr
   klein. 
 
#page# 
 
1.6. #ib#Fehlersuche#ie# im Netz 
 
#goalpage("1.6")# 
 
#ib#Fehler#ie# im Netz können sich verschiedenartig auswirken. Im folgenden wird auf einige
Beispiele eingegangen: 
 
Beispiel: 
 
   Auf #on("bold")#list (4/public)#off("bold")# erfolgt die Meldung '#ib(4)#Station#ie(4, " x antwortet nicht")# 4 antwortet nicht'. 
 
 
#ib#Fehler#ie#möglichkeiten: 
 
   -  #ib#Station#ie# 4 ist nicht eingeschaltet. 
      Abhilfe: Station 4 einschalten. Kommando erneut geben. 
 
 
   -  #ib#Netztask#ie# an Station 4 ist nicht arbeitsfähig. 
      Abhilfe: Kommando #on("bold")##ib#start#ie##off ("bold")# in der Task "net" auf Station 4. 
 
 
   -  Stationsnummern und Boxnummern stimmen nicht überein. 
      Abhilfe: Mit #on("bold")#define station#off ("bold")# #ib#Stationsnummer#ie#n korrigieren (siehe 3.2). 
 
 
   -  #ib#Verbindung#ie# Rechner/Box am eigenen Rechner oder an Station 4 fehlt. 
      Abhilfe: Verbindungen überprüfen. Durch Ansprechen einer dritten Station
               kann oft schnell geklärt werden, welche Rechner/Box-Verbindung
               defekt sein muß. 
 
 
   -  Verbindung der Boxen untereinander defekt. 
      Abhilfe: Fehlende Verbindung, #ib#Masseschluß#ie# und #ib#Dreher#ie# (keine 1:1 Verbin­
               dung) überprüfen und beheben. 
 
      Hinweis: Liegt z.B. ein Masseschluß vor, so kann es durchaus sein, daß
               Boxen, die nicht in der Nähe des Masseschlusses stehen, noch
               miteinander arbeiten können. Man kann aus der Tatsache, daß zwei
               Boxen miteinander arbeiten können, also nicht schließen, daß man
               nicht nach diesem Fehler suchen muß. 
 
 
 
Beispiel: 
 
   Auf #on("bold")#list (4/public)#off("bold")# erfolgt keine Reaktion. 
 
 
   -  Station 4 ist während dieser Sendung zusammengebrochen. 
      Abhilfe: Station 4 wieder starten. Die Bearbeitung des #on("bold")##ib#list#ie##off ("bold")#-Kommandos wird
               automatisch wieder aufgenommen. 
 
 
   -  PUBLIC auf Station 4 ist nicht im Managerzustand. 
      Abhilfe: PUBLIC in den Managerzustand versetzen. 
 
 
   -  #ib#Fehler#ie# in der #ib#Netzhardware#ie#. 
      Überprüfen Sie, ob 
 
      -  die Boxen eingeschaltet sind, 
      -  die Bereitlampe blinkt (wenn nicht: #ib#RESET#ie# an der Box), 
      -  die #ib#V.24#ie#-Kabel richtig stecken, 
      -  die Boxen untereinander verbunden sind (1 zu 1 Verbindungen der 5 poli­
         gen Diodenbuchsen). 
 
 
   -  Fehler bei der #ib#Netzinstallation#ie#. 
      Überprüfen Sie, ob 
 
      -  alle Stationen an einem #ib#Strang#ie# gleiche oder kompatible Netzmodi einge­
         stellt haben [4], 
      -  alle Stationen an einem #ib#Netzstrang#ie# auf die gleiche #ib#Nutzdatenlänge#ie# einge­
         stellt sind, 
      -  bei der #ib#Kommunikation#ie# über #ib#Knoten#ie# alle Stationen die gleiche Nutzdaten­
         länge bei indirekten Sendungen eingestellt haben, 
      -  die #ib#Route#ie#n auf allen beteiligten Stationen korrekt eingestellt sind. 
 
 
 
Beispiel: 
 
   Auf #on("bold")#list (4/public)#off("bold")# erfolgt die Meldung '#ib(4)##ib#Collectortask#ie# fehlt#ie(4)#'. 
 
   -  Das Kommando #on("b")##ib#start#ie##off("b")# (bzw #on("b")##ib#aktiviere netz#ie##off("b")# in der #ib#Datei#ie# #on("b")#netz#off("b")#) wurde nicht gege­
      ben. Somit existiert #on("b")##ib#net port#ie##off("b")# nicht. 
      Abhilfe: Kommando #on("bold")#start#off ("bold")# in der Task #on("b")#net#off("b")# geben. 
 
 
   -  Die #ib#Netzsoftware#ie# ist auf einen nicht vorhergesehenen #ib#Fehler#ie# gelaufen. Dieser
      wird im #ib#Report#ie# vermerkt. #on("b")##ib#net port#ie##off("b")# wird dabei gelöscht. 
      Abhilfe: Geben Sie in der Task #on("bold")#net#off("bold")# das Kommando #on("bold")#start#off("bold")#. Dadurch wird die
               Netzsoftware neu gestartet. Alle Netzkommunikationen dieser Station
               gehen verloren. 
 
 
 
Beispiel: 
 
   Nach #on("bold")##ib#fetch#ie# ("hugo",4/public)#off("bold")# sind Teile der Datei "hugo" verfälscht. 
 
   -  Die #ib#V.24#ie#-#ib#Verbindung#ie# zur Box ist nicht in Ordnung. 
      Abhilfe: Abstand zwischen Rechner und Box verkürzen; #ib#Baud#ie#rate ernie­
               drigen; durch Wechseln der #ib#V.24#ie#-#ib#Schnittstelle#ie# feststellen, ob diese
               defekt ist. 
      Hinweis: Die Verbindung zwischen den Boxen ist durch #ib#Prüfsummen#ie# abge­
               sichert (Hardware). 
 
#page# 
 
1.7. Sicherheit im Netz 
 
#goalpage("1.7")# 
 
Bei Benutzung eines Rechnernetzes tauchen neue #ib#Sicherheitsprobleme#ie# auf. Um sie
verstehen und eingrenzen zu können, muß man sich mit dem #ib#Sicherheitskonzept#ie# des
Betriebssystems EUMEL vertraut machen: 
 
Eine Task im EUMEL kann nur manipuliert werden, wenn man sie entweder an ein
Terminal koppelt oder ihr Sendungen zustellt. 
 
Das Ankoppeln kann über #ib#Paßwort#ie# abgesichert werden. Nach dem Ankoppeln kann
die Task außerdem selbst bestimmen, wie sie die dann möglichen Eingaben behan­
delt. So kann z.B. noch ein komplizierter Paßalgorithmus zu durchlaufen sein, bis
man auf einer offenen Programmierumgebung landet. 
 
Sendungen können eine Task auch nur mit ihrem Einverständnis beeinflussen, da
eine Sendung nur zugestellt wird, wenn die Task in der Prozedur #on("b")##ib#wait#ie##off("b")# steht. Insbe­
sondere kann die Task den Absender einer Sendung überprüfen und gewisse Opera­
tionen nur bei gewissen Absendern zulassen. So lehnt ein #on("b")##ib#global manager#ie##off("b")# z.B. alle
Dateimanagerkommandos ab, die nicht von Nachkommen (z.B. Söhnen) der Task
kommt. #on("b")##ib#free global manager#ie##off("b")# hingegen läßt Operationen wie #on("b")##ib#save#ie##off("b")# oder #on("b")##ib#erase#ie##off("b")# von
beliebigen Tasks, auch von fremden #ib#Station#ie#en, zu. Will man nur bestimmte Fremd­
stationen zulassen, kann man z.B. folgendes Schema verwenden: 
 
   PROC my #ib#manager#ie# 
      (DATASPACE VAR ds, INT CONST code, phase, TASK CONST source): 
 
     IF station (source) = station (myself) OR station (source) = 10 
     THEN 
       free manager (ds, code, phase, source) 
     ELSE 
       errorstop ("kein Zugriff") 
     FI 
 
  END PROC my manager; 
 
  global manager (PROC my manager) 
#page# 
Hier werden nur #on("b")#save#off("b")# usw. von Tasks der eigenen Station und der Station 10 zuge­
lassen. Der Rest erhält die #ib#Fehlermeldung#ie# "kein Zugriff". 
 
Dieses Verfahren gewährt nur dann Sicherheit, wenn es nicht möglich ist, daß eine
beliebige Station sich als Station 10 ausgibt. 
 
Damit das Netz diese Sicherheit garantieren kann, müssen natürlich gewisse phy­
sische Voraussetzungen erfüllt sein. Wenn z.B. die Station 10 über eine #ib#V.24#ie# ange­
schlossen ist, aber jeder die Möglichkeit hat, an diese #ib#Schnittstelle#ie# seinen eigenen
Rechner anzuschliessen, dann kann das Netz natürlich nicht erkennen, ob es mit der
echten Station 10 verkehrt. 
 
Es muß also sichergestellt sein, daß an Kanälen für das Netz nicht manipuliert werden
kann. Bei einem #ib#Strang#ie# (Anschluß über #ib#Netzbox#ie#en) heißt das für die Boxen, daß sie
nur #ib#Telegramm#ie#e weitervermitteln, die die eingestellte #ib#Quellstationsnummer#ie# enthalten.
Sonst könnte jemand, der an denselben Strang wie #ib#Station#ie# 10 angeschlossen ist,
#ib#Telegramm#ie#e erzeugen, die so aussehen, als kämen sie von 10. 
 
Die #ib#Netzsoftware#ie# ihrerseits darf nur Telegramme auswerten, die über die richtige
#ib#Route#ie# (#ib#Kanal#ie# und #ib#Knotenstation#ie#) einlaufen. 
 
Leider hat dies die unangenehme Konsequenz, daß man automatisches Aufbauen und
Ändern von Routen verbieten muß, wodurch die Wartung der #ib#Netzkonfiguration#ie#
erschwert wird. 
 
Diese Version der #ib#Netzsoftware#ie# bietet den folgenden Kompromiß an: Nur für sicher­
heitsrelevante #ib#Stationen#ie(1,", sicherheitsrelevante")# (im Beispiel Station 10) muß in der #ib#Datei#ie# #on("b")##ib#netz#ie##off("b")# die Route
angegeben werden. Dies muß in allen Stationen geschehen, für die die Station
sicherheitsrelevant ist, und in allen #ib#Knoten#ie# dazwischen. 
 
Für nicht sicherheitsrelevante Stationen werden #ib#Routeninformationen#ie# automatisch
aufgebaut und geändert. 
 
Hinweis: 
Man wird oft ohne sicherheitsrelevante Stationen auskommen, indem man auf Ebenen
oberhalb der Netzebene Paßwortkontrollen einführt. So ist es z.B. ja möglich, Dateien
durch Paßworte zu schützen. Ein weiteres Beispiel ist ein #ib#Printerserver#ie#, der nur
ausdruckt, wenn eine mitgegebene Abrechnungskennung stimmt. Dabei ist es sogar
wünschenswert, daß die #ib#Station#ie# irrelevant ist, die den Druckauftrag gibt. 
#pagenr ("%",21)##setcount (1)##block##pageblock##count per page# 
#headeven# 
#center#EUMEL Netzbeschreibung 
#center#____________________________________________________________ 
 
#end# 
#headodd# 
#center#Teil 2 :  Arbeitsweise der Netzsoftware 
#center#____________________________________________________________ 
 
#end# 
#bottomeven# 
#center#____________________________________________________________ 
Netz - % #right#GMD 
#end# 
#bottomodd# 
#center#____________________________________________________________ 
GMD #right#Netz - % 
#end# 
#page# 
 
Teil 2: Arbeitsweise der Netzsoftware 
#goalpage("2")# 
 
 
 
2.1. Die Netztask 
#goalpage("2.1")# 
 
 
In diesem Kapitel wird beschrieben, wie eine #ib#Netztask#ie# in das System eingebettet ist
und welche Aufgaben sie hat. Unter Einhaltung dieser Konzepte kann die ausgeliefer­
te Netzsoftware so geändert werden, daß sie beliebige andere #ib#Netzhardware#ie# unter­
stützt. Die Netzsoftware ist so gegliedert, daß i.allg. nur eine hardwareabhängige
Komponente ausgetauscht werden muß (siehe Teil 3). 
 
Die Kommunikation zwischen Tasks im EUMEL-Betriebssystem basiert auf einem
#ib#Rendezvouskonzept#ie#: Die #ib#Zieltask#ie# einer Sendung muß empfangsbereit sein, wenn die
#ib#Quelltask#ie# sendet. 
 
Die Kommunikationsprozeduren auf der niedrigsten Ebene sind #on("bold")##ib#send#ie##off ("bold")# (Senden) und
#on("bold")##ib#wait#ie##off ("bold")# (Warten auf Empfang). Bei der Kommunikation werden ein Integer #on("bold")#code#off ("bold")# und ein
#ib#Datenraum#ie# #on("bold")#dr#off ("bold")# übergeben. #on("bold")#code#off ("bold")# muß >= 0 sein, da negative Codes systemintern ver­
wandt werden. Ist die empfangende Task an einen #ib#Kanal#ie# gekoppelt (#on("bold")##ib#continue#ie##off ("bold")#), so
führt eine Zeicheneingabe auf diesem Kanal dazu, daß eine Sendung mit dem Code
-4 ankommt. Die Eingabedaten müssen mit den üblichen #ib#Eingabeprozeduren#ie# (#on("bold")##ib#inchar#ie##off ("bold")#
usw.) abgeholt werden. Der übermittelte #ib#Datenraum#ie# und die Absendertask sind dabei
ohne Bedeutung und dürfen nicht interpretiert werden. 
 
Die Prozedur #on("bold")#send#off ("bold")# hat einen #ib#Rückmeldeparameter#ie#, der besagt, ob die Sendung
übermittelt wurde. Gibt es die Zieltask nicht oder steht sie nicht im #on("bold")#wait#off ("bold")#, so kann die
Sendung nicht übermittelt werden. 
 
Ein Entwicklungskriterium für das EUMEL-Netz war es, möglichst wenig Unterstüt­
zung von der virtuellen EUMEL-Maschine (#ib#EUMEL0#ie#) zu fordern, damit weitgehend in
ELAN programmiert werden kann. Dadurch ist es möglich, eine (privilegierte) Task mit
der Netzabwicklung zu betrauen. 
#page# 
Zunächst wird auf die #ib#EUMEL0#ie#-Unterstützung eingegangen: 
 
a)  Es gibt die Prozedur #on("bold")##ib#define collector#ie##off ("bold")#, mit der die für das Netz verantwortliche
    Task der EUMEL0-Maschine bekannt gemacht wird. Diese Task wird im fol­
    genden #ib#Collector#ie# genannt. 
 
b)  Es gibt die Prozedur #on("bold")##ib#define station#ie##off ("bold")#, die für den Rechner eine #ib#Stationsnummer#ie#
    einstellt. Anhand dieser Nummer werden die Rechner eines Netzes unterschie­
    den. Das Einstellen bewirkt, daß für alle Tasks die Stationsnummer in ihre
    #ib#Task-Id#ie# eingetragen wird (Task-Id's sind die Werte, die der Typ TASK anneh­
    men kann). 
 
c)  Der Befehl #on("bold")##ib#station#ie# (task)#off ("bold")# liefert die Stationsnummer der #on("bold")#task#off ("bold")#. So liefert z.B.
    #on("bold")##ib#station#ie# (myself)#off ("bold")# die #ib#Stationsnummer#ie# des eigenen Rechners. 
 
d)  Eine Sendung, deren #ib#Zieltask#ie# auf einem anderen Rechner liegt (also station (ziel)
    <> station (myself)), wird auf die #ib#Collectortask#ie# geleitet. 
 
e)  Es gibt eine Prozedur #on("bold")##ib#collected destination#ie##off ("bold")#, die es dem Collector erlaubt, die
    eigentliche Zieltask einer auf ihn geleiteten Sendung zu erfahren. 
 
f)  Es gibt eine Variante der Prozedur #on("bold")##ib#send#ie##off ("bold")#, die es dem Collector gestattet, der
    #ib#Zieltask#ie# eine andere Task als Absender vorzutäuschen. 
 
g)  Es gibt eine spezielle #ib#Task-Id#ie# #on("bold")##ib#collector#ie##off ("bold")#, durch die der augenblicklich eingestell­
    te #ib#Collector#ie# erreicht wird. Diese wird als Zieltask beim Aufruf der Vermittlungs­
    dienste angegeben (siehe S. #topage("collector")#). Eine Sendung an #on("bold")#collector#off ("bold")# wird von EUMEL0
    an den derzeitig eingestellten Collector geschickt. 
 
Ein Collector kann also auf drei Wegen von den übrigen Tasks desselben Rechners
Sendungen erhalten: 
 
  1. Über ein normales #on("b")#send#off("b")# (z.B. bei #on("bold")#list (/"net port")#off ("bold")#, wenn #on("b")#net port#off("b")# der derzeitige
     #ib#Collector#ie# ist), 
 
  2. über ein #on("b")#send#off("b")# an die Task #on("bold")#collector#off ("bold")# (s.u.) und 
 
  3. als umgeleitete Sendung (z.B. bei #on("bold")#list#off ("bold")# an eine Task auf einem anderen
     Rechner). 
 
Der Collector kann diese Fälle anhand von #on("bold")#collected destination#off ("bold")# unterscheiden. 
 
Die Punkte d) bis f) dienen dazu, den Collector für über Netz kommunizierende Tasks
unsichtbar zu machen: Der Collector taucht nicht als Ziel oder #ib#Quelle#ie# von Sendungen
auf. Das ist notwendig, damit normale Tasks sich nicht darum kümmern müssen, ob
eine Sendung übers Netz geht oder im eigenen Rechner bleibt. 
 
Wenn ein #ib#Datenraum#ie# an einen anderen Rechner geschickt wird, muß der gesamte
Inhalt (z. Zt. max. 1 MB) übertragen werden. Dies macht bei der üblichen Netzhard­
ware eine Zerlegung in #ib#Paket#ie#e nötig [5]. Bei der Zerlegung eines Datenraumes in
Pakete (#ib#Telegramm#ie#e) gelten folgende Einschränkungen: 
 
  -  Ein Paket kann maximal eine #ib#Datenraumseite#ie# als #ib#Nutzdaten#ie# enthalten. 
 
  -  Die #ib#Nutzdatenlänge#ie# ist für einen #ib#Übertragungsweg#ie# konstant. 
 
  -  Alle Stationen eines #ib#Netzstrang#ie#s senden mit gleicher Nutzdatenlänge (#on("b")##ib#data
     length#ie##off("b")#). 
 
  -  Bei indirekter #ib#Kommunikation#ie(1,"indirekte")# (über #ib#Knoten#ie#) muß die Nutzdatenlänge für in­
     direkte Verbindungen (#on("b")##ib#data length via node#ie##off("b")#) auf allen beteiligten Stationen
     gleich eingestellt sein. 
 
 
Für Netze stehen spezielle Blockbefehle zur Verfügung: 
 
 
g)  #ib#blockin#ie# / #ib#blockout#ie# (dr,seite,512+abstand,anzahl,rest) 
 
    Es werden maximal #on("bold")#anzahl#off ("bold")# Bytes transferiert. In #on("bold")#rest#off ("bold")# wird zurückgemeldet, wie
    viele Bytes nicht bearbeitet wurden (z.B. weil der #ib#Kanal#ie# nichts anliefert). Bear­
    beitet werden die Bytes 
 
       #on("bold")#seite#off ("bold")# * 512 + #on("bold")#abstand#off ("bold")# 
 
    bis maximal 
 
       #on("bold")#seite#off ("bold")# * 512 + #on("bold")#abstand#off ("bold")# + #on("bold")#anzahl#off ("bold")# - 1 
 
    Der Kanal, an den die Task gekoppelt ist, wird dabei über #ib#Stream-IO#ie# (d.h.
    #on("bold")##ib#incharety#ie##off ("bold")#, bei #on("bold")#blockin#off ("bold")# bzw. #on("bold")#out#off ("bold")# bei #on("bold")#blockout#off ("bold")#) angesprochen. 
 
    Hinweis: Die Anforderung darf nicht über #ib#Seitengrenze#ie# gehen, d.h. 
 
    #on("bold")#abstand#off ("bold")# + #on("bold")#anzahl#off ("bold")# <= 512 
 
    muß erfüllt sein. 
 
 
Eine Netzsendung läuft wie folgt ab: 
 
Die Task q auf Rechner rq mache ein #on("bold")##ib#send#ie##off ("bold")# an die Task z auf Rechner rz. 
 
1. Die Prozedur #on("bold")#send#off ("bold")# ist ein #ib#EUMEL0#ie#-Befehl. Die EUMEL0-Ebene erkennt, daß die
   Sendung an die #ib#Station#ie# rz geht, da die #ib#Stationsnummer#ie# in der #ib#Task-Id#ie# enthalten
   ist. Daher wird die Sendung zum #ib#Collector#ie# umgeleitet, den EUMEL0 wegen der
   Einstellung durch #on("bold")##ib#define collector#ie##off ("bold")# kennt, umgeleitet. 
 
2. Die Task Collector empfängt über #on("bold")##ib#wait#ie##off ("bold")# den #ib#Datenraum#ie#, den #ib#Sendecode#ie# und die
   Absendertask q. Die #ib#Zieltask#ie# z erfährt sie durch #on("bold")##ib#collected destination#ie##off ("bold")#. 
 
3. Der Collector nimmt Kontakt mit dem Collector des Rechners #on("b")#rz#off("b")# auf, dessen Sta­
   tionsnummer ja #on("bold")##ib#station#ie#(z)#off ("bold")# ist, und übermittelt diesem Sendecode, #ib#Quelltask#ie# (q),
   eigentliche Zieltask (z) und den #ib#Datenraum#ie#. Da die Collectoren in ELAN geschrie­
   ben sind, können sie an beliebige #ib#Netzhardware#ie# und #ib#Protokoll#ie#e angepaßt werden. 
 
4. Der #ib#Collector#ie# auf Rechner #on("b")#rz#off("b")# verwendet das spezielle #on("bold")#send#off ("bold")#, um der Zieltask die
   Sendung zuzustellen. Dadurch erscheint nicht der Collector, sondern die Task #on("b")#q#off("b")#
   als Absender der Sendung. 
 
Zur Abwicklung der #ib#Vermittlungsebene#ie# (siehe S. #topage("vermittlung")#) muß der Collector noch spe­
zielle Funktionen beherrschen. Diese sind 
 
   der #on("b")##ib#/#ie#-Operator#off("b")# (Taskname in #ib#Task-Id#ie# wandeln) und 
   die #on("b")##ib#name#ie##off("b")#-Prozedur (Task-Id in Namen wandeln). 
 
Der #on("b")#/#off("b")#-Operator macht eine Sendung an den #on("bold")##ib#collector#ie##off ("bold")#, wobei im #ib#Datenraum#ie# der Name
der Task steht und der #ib#Sendecode#ie# gleich der Stationsnummer ist (siehe [6] ). Der
#ib#Collector#ie# setzt sich mit dem Collector dieser Station in Verbindung, damit dieser die
Task-Id ermittelt und zurückschickt. Der eigene Collector schickt dann dem #on("b")#/#off("b")#-Oper­
ator als Antwort einen Datenraum, der die #ib#Task-Id#ie# enthält. 
 
Umgekehrt läuft #on("bold")##ib#name#ie##off ("bold")# ab: Wenn die Task-Id von einer fremden Station ist, schickt
#on("bold")#name#off ("bold")# eine Sendung an den #on("bold")##ib#collector#ie##off ("bold")#, wobei im Datenraum die Task-Id steht und
Sendecode = 256 ist. Der Collector entnimmt die #ib#Stationsnummer#ie# der Task aus der
Task-Id und läßt sich vom entsprechenden Collector den Tasknamen geben. Dieser
wird der #on("bold")#name#off ("bold")#-Prozedur im Antwortdatenraum übergeben. 
 
Netztasks bauen sich #ib#Routentabellen#ie# auf (#ib#Datei#ie#name #on("b")##ib#port intern#ie##off("b")#). Aufgrund dieser
Tabellen weiß jede #ib#Netztask#ie#, über welchen #ib#Kanal#ie# und welche #ib#Nachbarstation#ie# eine
#ib#Zielstation#ie# erreichbar ist. Wenn der #ib#Collector#ie# einen Sendeauftrag erhält, prüft er, ob
die Zielstation über seinen Kanal erreichbar ist. Wenn nicht, leitet er Parameter und
#ib#Datenraum#ie# der Sendung an die geeignete Netztask weiter. 
#page# 
 
2.2. Ebenen 
 
#goalpage("2.2")# 
 
In diesem Kapitel werden die #ib#Protokollebenen#ie# für das Netz beschrieben, wie sie die
ausgelieferte Netzsoftware benutzt und erwartet. Bei anderer Netzhardware als Daten­
boxen müssen die Ebenen a) bis c) ausgetauscht werden [4]. Unter Einhaltung der im
vorigen Kapitel beschriebenen Randbedingungen können auch die höheren Ebenen
geändert werden. 
 
 
a) Physikalische Ebene 
 
   -  #ib#Station#ie# <--> Box 
 
      #ib#V.24#ie#-#ib#Schnittstelle#ie# mit #ib#RTS/CTS#ie#-Handshake. Vollduplex. 
 
   -  Box <--> Box 
 
      #ib#RS422#ie# über 2 verdrillte Leitungspaare (Takt und Daten). 
 
 
b) Verbindungsebene 
 
   -  Station <--> Box 
 
      Asynchron 
      8 Bit 
      Even Parity 
      2400/4800/9600/19200 #ib#Baud#ie# einstellbar über Lötbrücken) 
 
   -  Box <--> Box 
 
      #ib#SDLC#ie# 
      400 KBaud 
#page# 
c) #ib#Netzebene#ie# 
#goalpage("quelle")# 
 
   -  Station <--> Box 
 
      #ib#Telegrammformat#ie#:  #ib#STX#ie#, <n>, <ziel>, <#ib#quelle#ie#>, <(n-4) byte> 
 
      <n> ist #ib#Längenangabe#ie# ( 8 <= n <= 160) 
      <ziel>, <quelle> sind #ib#Stationsnummer#ie#n. Diese müssen an den jeweiligen
      Boxen eingestellt sein. 
 
      Box --> Station: 
 
      Ein #ib#Telegramm#ie# kommt nur bei der #ib#Station#ie# an, bei deren Box die Nummer
      <ziel> eingestellt ist. Dadurch ist ein Mithören fremder #ib#Übertragung#ie# nicht
      möglich (Datenschutz). 
 
      Zwischen Telegrammen können #ib#Fehlermeldung#ie#en der Box (Klartext) übermittelt
      werden (z.B. 'skipped x', wenn ein #ib#STX#ie# von der Box erwartet wurde, aber 'x'
      von der Station ankommt). 
 
      Station --> Box: 
 
      Ein Telegramm wird nur abgeschickt, wenn <#ib#quelle#ie#> mit der eingestellten
      Nummer übereinstimmt (Datenschutz: Man kann nicht vorschwindeln, eine
      beliebige Station zu sein, es sei denn, man hat physischen Zugriff zur Box und
      stellt dort die Stationsnummer um). 
 
   -  Box <--> Box 
 
      #ib#Telegrammformat#ie#: 
          FRAME, <ziel>, <#ib#quelle#ie#>, <daten>, <CRC-Code> 
 
      Eine #ib#Längenangabe#ie# ist nicht nötig, da #ib#SDLC#ie# eine Rekonstruktion der Länge
      erlaubt. 
 
      Telegramme mit falschen #ib#CRC-Code#ie# werden vernichtet. Auf höheren Ebenen
      muß dies durch #ib#Zeitüberwachung#ie# erkannt und behandelt werden. 
 
#page# 
d) Transportebene 
 
   Diese Ebene wickelt das Rendezvous zwischen einer Task, die #on("bold")##ib#send#ie##off ("bold")# macht, und
   einer Task, die im #on("bold")##ib#wait#ie##off ("bold")# steht, ab [1]. 
 
   Der im #on("bold")#send#off ("bold")# angegebene #ib#Datenraum#ie# wird als Folge von #ib#Seiten#ie# (im EUMEL-
   Sinne: Pagingeinheit und Allokiereinheit) übermittelt, wobei jede Seite ggf. noch in
   n Byte große Stücke zerlegt wird. Es werden nur echt allokierte Seiten übermit­
   telt. Um nicht jedes #ib#Telegramm#ie# voll qualifizieren zu müssen, wird zunächst eine
   Art virtuelle #ib#Verbindung#ie# durch ein #ib#OPEN#ie#-Telegramm eröffnet. Danach folgen
   variabel viele #ib#DATA#ie#-Telegramme. Beide Sorten werden durch #ib#QUIT#ie#-Tele­
   gramme quittiert, um folgende Funktionen zu ermöglichen: 
 
   #ib#Flußkontrolle#ie# (z.B. Zielrechner langsam), 
   Wiederaufsetzen (verlorene Telegramme), 
   Abbruch (z.B. weil Zieltask inzwischen beendet). 
 
   Ein #ib#CLOSE#ie#-Telegramm ist nicht nötig, da das letzte DATA-Telegramm als
   solches erkannt werden kann (siehe unten). 
#page# 
   -  #ib#OPEN#ie#-Telegramm 
 
#clear pos# 
    0      1      2      3      4      5      6      7      8      9. Byte 
+------+------+------+------+-------------+-------------+-------------------+ 
I STX  I  24  I Ziel IQuelleI Endziel     I Endquelle   I Strom             I 
+------+------+------+------+-------------+-------------+-------------------+ 
 
   10     11     12     13     14     15     16     17                
+-------------+-------------+---------------------------+ 
I Sequenz     I  Seite      I  Quelltask                I 
+-------------+-------------+---------------------------+ 
 
   18     19     20     21     22     23                           
+---------------------------+-------------+ 
I  Zieltask                 I  Code       I 
+---------------------------+-------------+ 
 
 
 
          <#ib#ziel#ie#>, <#ib#quelle#ie#> siehe S. #topage("quelle")# 
 
          <#ib#endziel#ie#>    Eigentliche #ib#Zielstation#ie#. Ist <ziel> = <endziel>, so ist
                       das #ib#Telegramm#ie# angekommen. Andernfalls muß die Station
                       <ziel> den #ib#Nachbarn#ie# zum Erreichen des <endziel> als
                       neues <ziel> einsetzen und das Telegramm an diesen
                       Nachbarn weiterleiten. 
 
          <#ib#endquelle#ie#>  Eigentliche #ib#Absenderstation#ie#. <quelle> ist dagegen immer
                       die Nummer der sendenden #ib#Nachbarstation#ie#. 
 
          <#ib#strom#ie#>      Die #ib#Stromnummer#ie# identifiziert die virtuelle #ib#Verbindung#ie#. Sie
                       muß in den #ib#QUIT#ie#-Telegrammen angegeben werden. 
 
          <#ib#sequenz#ie#>    -1 (Kennzeichen für OPEN) 
 
          <#ib#seite#ie#>      Nummer der ersten echt allokierten #ib#Seite#ie# des #ib#Datenraum#ie#s
                       (=-1, falls Nilspace) 
 
          <#ib#quelltask#ie#>  #ib#Task-Id#ie# der sendenden Task 
 
          <#ib#zieltask#ie#>   Task-Id der empfangenden Task 
 
          <code>       Wert des im #on("bold")##ib#send#ie##off ("bold")# angegebenen Codes 
#page# 
   -  #ib#DATA#ie#-Telegramm 
 
 
 
 
 
    0      1      2      3      4      5      6      7      8      9. Byte    
+------+------+------+------+-------------+-------------+-------------------+ 
I STX  I LängeI Ziel IQuelleI Endziel     I Endquelle   I Strom             I 
+------+------+------+------+-------------+-------------+-------------------+ 
 
   10     11     12     13     14                                       
+-------------+-------------+-----------------------------------------------+ 
I Sequenz     I Seite       I n Byte Daten  (Länge = 14 + n)                I 
+-------------+-------------+-----------------------------------------------+ 

 
          <#ib#laenge#ie#>     Gesamtlänge des Telegramms. 
                       #on("b")#laenge#off("b")# = #on("b")##ib#nutzlaenge#ie##off("b")# + 14. 
                       Für #on("b")#nutzlaenge#off("b")# sind nur die Werte 64,128,256 und 512
                       zugelassen (siehe 1). #on("b")#laenge#off("b")# wird codiert dargestellt (siehe
                       Teil 3). 
 
 
          <#ib#sequenz#ie#>    wird von Telegramm zu Telegramm hochgezählt. Sie dient
                       der Überwachung bzgl. verlorengegangener Telegramme
                       bzw. durch #ib#Zeitüberwachung#ie# verdoppelter Telegramme. 
 
          <#ib#seite#ie#>      Nummer der x-ten echt allokierten Seite des #ib#Datenraum#ie#s
                       (x = ((<sequenz> DIV anzahl pakete pro seite) + 2) 
 
          <n byte>     #ib#Nutzinformation#ie#. Diese gehört zur #ib#Adresse#ie# a des Daten­
                       raums. 
 
                       a = 
                       N (<sequenz> DIV anzahl pakete pro seite + 1) * 512 
                           + (<sequenz> MOD anzahl pakete pro seite) * n 
 
                       wobei N (x) die Nummer der x-ten Seite und 
                       n die #ib#Nutzdatenlänge#ie# ist. 
 
                       Aus den Formeln ergibt sich, daß diese Nummer schon in
                       einem vorhergehenden DATA/OPEN-Telegramm über­
                       mittelt wurde (im Feld <seite>). 
 
   -  #ib#QUIT#ie#-Telegramm 
 
 
    0      1      2      3      4      5      6      7      8      9. Byte    
+------+------+------+------+-------------+-------------+-------------------+ 
I STX  I  12  I Ziel IQuelleI Endziel     I Endquelle   I Strom             I 
+------+------+------+------+-------------+-------------+-------------------+ 
 
   10     11                                                    
+-------------+ 
I Quit        I 
+-------------+ 
 
 
 
          <#ib#strom#ie#>      muß die #ib#Stromnummer#ie# sein, die in dem #ib#OPEN#ie#/#ib#DATA#ie#­
                       Telegramm stand, das quittiert wird. 
 
          <quit>       0 :  ok. Nächstes Telegramm schicken. 
 
                       -1:  #ib#Übertragung#ie# neu starten (mit #ib#OPEN#ie#), weil die Emp­
                            fangsstation das OPEN nicht erhalten hat. 
 
                       -2:  Übertragung ca. 20 Telegramme zurücksetzen. 
 
                       -3:  Übertragung abbrechen. 
 
                       -4:  #ib#Quittung#ie# für letztes Telegramm einer Sendung. 
 
 
e) #ib#Vermittlungsebene#ie##goalpage("vermittlung")# #goalpage("collector")# 
 
   Diese Ebene ist dafür zuständig, Namen von Tasks auf anderen Stationen in
   #ib#Task-Id#ie#'s (Werte des Typs TASK) zu wandeln und umgekehrt. Hierzu wird im
   entsprechenden #ib#OPEN#ie#-Telegramm der Code -6 (bzw. -7) als <code> ein­
   getragen. Die #ib#Netzempfangstask#ie# erkennt diese #ib#Codes#ie# und wickelt die Aufgaben
   selbst ab, so daß es dabei nicht nötig ist, irgendeine Task-Id der #ib#Zielstation#ie# zu
   kennen. 
 
   Dieses Verfahren ist möglich, weil im #on("bold")##ib#send#ie##off ("bold")# nur positive Codes erlaubt sind. 
#page# 
f) #ib#Höhere Ebenen#ie# 
 
   Höhere Ebenen sind nicht mehr netzspezifisch. Sie basieren alle auf dem Send/
   Wait-Konzept des EUMEL. So gibt es z.B. den #on("bold")##ib#global manager#ie##off ("bold")#, der Aufbewah­
   rung und Zugriff von #ib#Datei#ie#en in einer Task regelt. Dabei darf diese Task (bei der
   Variante #on("bold")##ib#free global manager#ie##off ("bold")#) auf einer beliebigen #ib#Station#ie# im Netz liegen. Wegen
   des #ib#Rendezvous-Konzept#ie#s können beliebige Sicherheitsstrategien benutzt werden
   (z.B.: keine Dateien an Station 11 ausliefern). Von großem Wert ist z.B., daß
   man ohne weiteres das Archiv (Floppylaufwerk) einer anderen Station anmelden
   und benutzen kann, wodurch eine einfache Konvertierung von Floppyformaten
   möglich ist. Dies ist möglich, weil auch die Archiv-Task der Stationen sich an
   das Globalmanagerprotokoll halten. 
 
 
 
 
 
Bemerkungen 
 
#ib#Fehlerbehandlung#ie# besteht bis Ebene c) darin, fehlerhafte #ib#Telegramm#ie#e einfach zu
entfernen. Die Ebene d) überwacht den Netzverkehr sowieso über #ib#Timeout#ie#s, die eine
Wiederholung eines Telegrammes bewirken, wenn die #ib#Quittung#ie# ausbleibt. 
 
Da bei der sendenden #ib#Station#ie# der ganze #ib#Datenraum#ie# zur Verfügung steht, ist eine
#ib#Fenstertechnik#ie# (wie bei #ib#HDLC#ie#) nicht nötig. Es kann zu jedem Zeitpunkt um beliebig
viele Telegramme zurückgesetzt werden. 
 
Da im EUMEL eine #ib#Textdatei#ie# ein #ib#Datenraum#ie# mit sehr komplexer Struktur ist (wegen
der Insert/Delete-Möglichkeiten, ohne den Rest der #ib#Datei#ie# zu verschieben), ist es ein
hoher Aufwand, von einem fremden Betriebssytem aus eine Textdatei in das
EUMEL-Netz zu senden. Für solche Zwecke muß noch eine einfachere Dateistruktur
definiert und entsprechende Dateikonverter erstellt werden. 
#page# 
 
2.3. Stand der Netzsoftware 
 
#goalpage("2.3")# 
 
Das EUMEL-System wickelt die Prozedur #on("bold")##ib#send#ie##off("bold")# über das Netz ab, wenn die Sta­
tionsnummer der #ib#Zieltask#ie# ungleich der eigenen #ib#Stationsnummer#ie# ist. Umgekehrt kann
man der von der Prozedur #on("bold")##ib#wait#ie##off("bold")# gelieferten Absendertask die #ib#Absenderstation#ie# entneh­
men (siehe Prozedur #on("bold")##ib#station#ie##off("bold")# in Teil 1). 
 
Anders als bei einem #on("bold")##ib#send#ie##off("bold")# innerhalb einer Station meldet ein #on("bold")#send#off("bold")# an eine Task einer
fremden Station immer 0 zurück (Task gibt es und Task war im wait), obwohl dies
nicht der Fall sein muß. Ist die Sendung vollständig zur Zielstation übertragen, so
versucht der dortige #ib#Collector#ie# diese hundertmal im Sekundenabstand zuzustellen.
Bleibt das erfolglos, wird die Sendung vernichtet. 
#pagenr ("%", 33)##setcount (1)##block##pageblock##count per page# 
#headeven# 
#center#EUMEL Netzbeschreibung 
#center#____________________________________________________________ 
 
#end# 
#headodd# 
#center#Teil 3 :  Netz Hardware Interface 
#center#____________________________________________________________ 
 
#end# 
#bottomeven# 
#center#____________________________________________________________ 
Netz - % #right#GMD 
#end# 
#bottomodd# 
#center#____________________________________________________________ 
GMD #right#Netz - % 
#end# 
#page# 
 
Teil 3: Netz-Hardware-Interface      
 
 
#goalpage("3")# 
 
 
3.1. Einführung 
 
 #goalpage("3.1")# 
 
In diesem Teil der Netzbeschreibung wird die #ib#Schnittstelle#ie# beschrieben, über die
#ib#Netzhardware#ie# (also #ib#Datenbox#ie#en, #ib#Netzbox#ie#en oder Netzkarten) an die EUMEL-Netz­
Software angepaßt werden kann. Dieser Teil der Beschreibung ist also nur für Netz­
implementatoren wichtig. 
 
Das EUMEL-Netz wurde dazu konzipiert, zwei oder mehr EUMEL-Rechner über
#ib#V.24#ie#-Leitungen oder Datenboxen miteinander zu vernetzen. Dem heutigen Stand der
Technik entsprechend, werden auf dem Markt eine Reihe von Möglichkeiten ange­
boten, um PC's zu vernetzen. Diese Netze unterscheiden sich auch dadurch, daß
unterschiedliche Medien zur Datenübertragung benutzt werden. Das #ib#EUMEL-
Datenboxen-Netz#ie# benutzt Telefonkabel, #ib#Ethernet#ie# beispielsweise Koax-Kabel. Auch
Lichtleiter werden zur Datenübertragung benutzt. Entsprechend gibt es eine ganze
Menge Hardware (#ib#Treiber#ie#, Netzzugangsgeräte, Datenboxen, Anschlußkarten), die die
Kopplung zwischen einem #ib#I/O-Kanal#ie# eines Rechners und dem Übertragungsmedium
(Kabel) übernimmt. Das Netz-Hardware-Interface soll als #ib#Schnittstelle#ie# zwischen der
Netz­Software und dem Treiber dienen. Damit wird es möglich, mehrere EUMEL-
Rechner über verschiedene (Teil-) Netze (in dieser Beschreibung Stränge genannt)
und unterschiedliche #ib#Netzhardware#ie# (Treiber) miteinander zu verbinden. Für den
EUMEL-Benutzer soll dabei kein Unterschied in der Benutzung des EUMEL-Netzes
feststellbar sein. 
#page# 
Neben unterschliedlichen Übertragungsmedien und Treibern gibt es weitere Unter­
schiede zwischen Netzen: 
 
     -  in der Netztopologie (Bus-, Ring- oder Sternnetze), 
 
     -  in den Netzzugangsverfahren (Token passing, time slice token, slotting oder
        CSMA/CD), 
 
     -  in der #ib#Übertragungsgeschwindigkeit#ie#, 
 
     -  im Aufbau der einzelnen #ib#Pakete#ie(1,", Aufbau der")# (#ib#Netztelegramm#ie#e). 
 
Alles, was mit den ersten drei Punkten zusammenhängt, wird von den Netzzugangs­
geräten behandelt. 
 
Der Paketaufbau aber muß zumeist im Rechner geschehen und kann in den seltens­
ten Fällen ganz vom Treiber übernommen werden. Ebenso kann der Treiber aus den
empfangenen Paketen nicht immer die Teile herausfiltern, die von der EUMEL-
#ib#Netzsoftware#ie# gebraucht werden. Diese Aufgaben übernimmt das #ib#Netz-Hardware-
Interface#ie#. Das Netz-Hardware-Interface stellt die #ib#Verbindung#ie# zwischen EUMEL-
#ib#Netzsoftware#ie# und den verschiedenen Netzhardwarearten dar. Ähnlich wie bei den
Drucker- und Terminal-Anpassungen wurde ein hardwareabhängiger Teil aus der
Netzsoftware abgetrennt und in einem eigenen #ib#Paket#ie# zusammengefaßt. Beim Start
des Netzes wird durch Angabe des entsprechenden #ib#Netzmodus#ie# für den jeweiligen
#ib#Kanal#ie# die entsprechende Anpassung für den benutzten Treiber ausgewählt. Wenn
andere, neue Treiber angepaßt werden sollen, so müssen lediglich in dem Paket #on("b")##ib#net
hardware interface#ie##off("b")# die entsprechenden Prozeduren hinzugefügt und die #ib#Sprungleisten#ie#
(#ib#SELECT#ie#-Statements) erweitert werden. 
 
Durch das #ib#Knotenkonzept#ie# in der #ib#Netzsoftware#ie# ist es möglich, über einen #ib#Knoten­
rechner#ie# Teilnetze (Stränge), die mit unterschiedlicher #ib#Netzhardware#ie# arbeiten, mitein­
ander zu verbinden. Es sind dann beispielsweise Verbindungen zwischen Rechnern,
die über #ib#Ethernet#ie# vernetzt sind, und Rechnern auf dem EUMEL-Datenboxen-Netz
möglich. Es ist auch möglich, mit einem Rechner Zugang zu einem Netz zu erhalten,
für das spezielle #ib#Netzhardware#ie# erforderlich ist (Datenboxen, Ethernet-Anschluß). Man
kann den Rechner über eine Rechner-Rechner-Kopplung (#ib#V.24#ie#) mit einem Rechner
verbinden, der bereits ans Netz angeschlossen ist, und so (allerdings auf Kosten der
Leistung des #ib#Knotenrechner#ie#s) Netzhardware einsparen. 
#page# 
 
3.2.  Arbeitsweise des 
      Netz-Hardware-Interfaces
      
 
 
 
 
    #goalpage("3.2")# 
 
Grob vereinfacht kann man sich die Arbeitsweise der #ib#EUMEL-Netz-Software#ie# so vor­
stellen: 
 
       reset box; 
       REP 
          IF zeichen da THEN lies telegramm ein 
             ELIF telegramm auszugeben THEN gib telegramm aus 
          FI 
       PER . 
 
(Es ist nur der Teil der Software beschrieben, der die Kanalbehandlung betrifft). 
 
 
Das Zusammenspiel zwischen EUMEL-Netz und Netz-Hardware-Interface ge­
schieht auf folgende Weise: 
 
 
     #on("b")#reset box;#off("b")# 
     REP 
        IF zeichen da THEN  #on("b")#next packet start#off("b")#; 
                            lies telegramm ein 
           ELIF telegramm auszugeben THEN gib telegramm aus 
        FI 
     PER. 
 
     gib telegramm aus: 
         #on("b")#transmit header#off("b")#; 
         gib eumelnetztelegramm aus; 
         #on("b")#transmit trailer #off("b")#. 
 
Die fett gedruckten Programmteile werden im Netz-Hardware-Interface realisiert, die
anderen Teile stecken in den darüberliegenden Teilen der EUMEL-Netz-Software. 
#page# 
Beim Senden eines #ib#Telegramm#ie#s wird von der #ib#Netzsoftware#ie# zuerst der #ib#Vorspann#ie# in
einem #ib#Datenraum#ie# an das Hardware-Interface übergeben (#on("b")##ib#transmit header#ie##off("b")#). Im Hard­
ware-Interface können aus dem Vorspann die entsprechenden Informationen (Tele­
grammlänge, #ib#Zielstation#ie# usw.) entnommen werden. Dann wird von der Netzsoftware
das Telegramm (inklusive Vorspann) per #on("b")##ib#blockout#ie##off("b")# übergeben. Danach wird #on("b")##ib#transmit
trailer#ie##off("b")# aufgerufen, um dem Hardware-Interface das Ende des Telegramms zu mel­
den. Beim Empfang ruft die Netzsoftware zuerst die #ib#I/O Control#ie# #ib#Telegrammfreigabe#ie#
auf [7]. Danach wird das erste #ib#Zeichen#ie# des Telegramms angefordert (#on("b")##ib#next packet
start#ie##off("b")#). Falls ein #ib#STX#ie# geliefert wurde, wird das Telegramm per #on("b")##ib#blockin#ie##off("b")# eingelesen. Falls
#ib#Niltext#ie# zurückgeliefert wird, wird von der Netzsoftware #ib#Timeout#ie# angenommen. Alle
anderen Zeichen werden so interpretiert, als ob Störungen aufgetreten wären. Die
Netzsoftware übernimmt die #ib#Fehlerbehandlung#ie#. Dazu wird u. U. ein Leerlesen des
Puffers vom Hardware-Interface verlangt (#on("b")##ib#flush buffers#ie##off("b")#). 
 
Bei der Einstellung der #ib#Nutzdatenlänge#ie# (#on("b")##ib#data length#ie##off("b")#) ist zu beachten, daß 
 
a)  alle #ib#Station#ie#en, die an einem #ib#Strang#ie# hängen, auf die gleiche Nutzdatenlänge
    eingestellt sein müssen. 
 
b)  Wenn mehrere Stränge über #ib#Knoten#ie# miteinander verbunden sind, muß die Nutz­
    länge für Sendungen über Knoten (#on("b")##ib#data length via node#ie##off("b")#) auf allen Stationen des
    gesamten Netzes gleich eingestellt sein. Die Zusammenfassung oder Aufteilung
    von #ib#Telegramm#ie#en in Knoten ist nicht möglich. 
 
c)  Als mögliche Nutzdatenlänge sind folgende Werte erlaubt: 
 
    64, 128, 256 und 512 Byte. 
 
    Größere Nutzdatenlängen sind zur Zeit nicht möglich. 
 
d)  Je größer die #ib#Nutzdatenlänge#ie# ist, desto geringer ist der Overhead an #ib#Zeichen#ie#,
    die auf den Rechnern verarbeitet werden müssen. Allerdings muß der Rechner
    leistungsfähig genug sein, die ankommenden Blöcke schnell genung zu verarbei­
    ten, und die Netztreiber müssen entsprechend große Puffer haben. 
 
 
Alle implementierten Netzanpassungen sollen in einem Netz-Hardware-Interface
zusammengefaßt werden. Dies ist notwendig, um über #ib#Knotenrechner#ie# Netzstränge
verbinden zu können, die mit unterschiedlicher #ib#Netzhardware#ie# arbeiten. So können
zum Beispiel ein #ib#Strang#ie#, der mit Datenboxen aufgebaut ist, und ein #ib#Ethernet#ie#-#ib#Strang#ie#
über einen Knotenrechner miteinander verkoppelt werden. 
#page# 
Aus diesem Grund wurden #on("b")#Netzmodi#off("b")# eingeführt. Man kann dadurch, daß die Netz­
modi, genau wie die #ib#Kanal#ie#angaben, in der #ib#Datei#ie# #on("b")##ib#netz#ie##off("b")# niedergelegt sind, ohne Aus­
tausch einer Softwarekomponente die Netzhardware wechseln. Es gibt auch die
Möglichkeit, durch verschiedene Netzmodi unterschiedliche Treiber an ein und das­
selbe Netz anzuschließen. Beispielsweise gibt es für einige Rechnertypen Steckkarten,
mit denen der Rechner an das Ethernet angeschlossen werden kann. Man kann,
wenn diese Karten angepaßt sind, den #ib#Ethernet#ie#-Zugang über verschiedene Netz­
anschlußkarten realisieren. 
 
Das Netz-Hardware-Interface muß folgende Aufgaben übernehmen: 
 
    Bei der Ausgabe an den Treiber: 
 
        -  Generieren und Ausgeben des #ib#Paket#ie#headers, 
        -  Umsetzen von logischen Stationsadressen (#ib#Stationsnummer#ie#n) in phy­
           sische #ib#Adresse#ie#n, 
        -  Ausgeben der Daten (EUMEL-Netz-#ib#Telegramm#ie#e), 
        -  Generieren und Ausgeben des Trailers und evtl. Auffüllen des Pakets mit
           #ib#Füllzeichen#ie#, falls auf dem Netz eine Mindestlänge für Pakete gefordert
           wird. 
 
    Bei der Eingabe vom Treiber: 
 
        -  Weglesen von #ib#Füllzeichen#ie#, 
        -  Prüfen der #ib#Adresse#ie#n, 
        -  Weglesen von #ib#Paket#ie#teilen, die in der EUMEL-Netz-Software nicht
           gebraucht werden. 
 
    Weiterhin können Funktionen wie 
 
        -  Reset des Treibers, 
        -  Prüfung, ob Stationsadresse und #ib#Adresse#ie# im Treiber übereinstimmen, 
        -  Statistik und Service 
 
    durch das Netz-Hardware-Interface übernommen werden. 
 
Dazu wird ein Satz von Prozeduren über die #ib#DEFINES#ie#-#ib#Schnittstelle#ie# des Netz-
Hardware-Interfaces zur Verfügung gestellt. Wenn neue Treiber oder Netzarten
implementiert werden sollen, so muß an diesem Interface nichts geändert werden. Die
herausgereichten Prozeduren realisieren #ib#Sprungleisten#ie# (#ib#SELECT#ie#-Statements), über
die durch Erweiterung (#ib#CASE#ie#) die Prozeduren erreicht werden können, die den ent­
sprechenden #ib#Netzmodus#ie# realisieren. Außerdem werden Informationsprozeduren für die
darüberliegenden Programmteile zur Verfügung gestellt. 
#page# 
 
3.3. Netztreiber 
 
 #goalpage("3.3")# 
Unter #ib#Netztreiber#ie#n versteht man die Einheiten, die den Anschluß des Rechners an ein
Netz realisieren. Das können #ib#Netzbox#ie#en sein, die mit dem Rechner über eine #ib#V.24#ie#-
Leitung verbunden sind, aber auch Anschlußkarten, die direkt auf den Datenbus des
Rechners gehen. Falls die #ib#Schnittstelle#ie# der Treiber-Hardware eine andere als die
serielle #ib#V.24#ie# ist, muß in der Regel eine Anpassung für die Hardware im #ib#SHard#ie# vorge­
nommen werden. 
 
Falls der Treiber über eine serielle #ib#V.24#ie#-#ib#Schnittstelle#ie# mit dem Rechner verbunden
ist, wie das auch bei der direkten Kopplung oder dem Datenboxennetz der Fall ist,
wird die hohe #ib#Übertragungsgeschwindigkeit#ie# auf dem eigentlichen Netz durch die
relativ geringe Übertragungsgeschwindigkeit auf der #ib#V.24#ie#-#ib#Schnittstelle#ie# zwischen
Rechner und Treiber (Box) gebremst. Über andere Schnittstellen im Rechner, wenn
sie mit #ib#Stream I/O#ie# [7] betrieben werden, kann man dies vermeiden. Diese Schnitt­
stellen müssen vom SHard bedient werden. 
 
Wenn in den Rechner integrierte Netztreiber (Netzanschlußkarten) benutzt werden
sollen, so muß in der Regel die Behandlung dieser Netzanschlußkarte im SHard
durchgeführt werden. 
 
Um effizient implementieren zu können, sollte darauf geachtet werden, daß möglichst
wenig zusätzliche #ib#Zeichen#ie# von der #ib#Netzsoftware#ie# bzw. dem Netz-Hardware-Inter­
face bearbeitet werden müssen. Das Auffüllen von Paketen auf eine Mindestlänge
sollte möglichst vom Treiber gemacht werden, ebenso wie das Weglesen dieser
Zeichen. 
 
Um einen sicheren und effektiven Netzbetrieb zu garantieren, sollten die Treiber
folgende Eigenschaften haben: 
 
     -  Die #ib#Stationsadresse#ie# ist im Treiber festgelegt, sie soll nicht ohne weiteres
        verändert werden können (Datenschutz). 
     -  Der Treiber reicht nur #ib#Paket#ie#e mit richtiger #ib#Zieladresse#ie#, keine #ib#Broad- oder
        Multicasts#ie# an die Netzsoftware weiter. 
     -  Der Treiber sendet nur #ib#Paket#ie#e mit richtiger #ib#Absenderadresse#ie# bzw. setzt die
        Absenderadresse selbst ein. 
     -  Die am Treiber eingestellte #ib#Adresse#ie# kann abgefragt werden, oder es wird,
        wenn ein Paket mit falscher #ib#Absenderadresse#ie# vom Rechner kommt, eine
        #ib#Fehlermeldung#ie# an den Rechner gegeben. Die Fehlermeldung muß durch das
        Netz-Hardware-Interface in den #on("b")##ib#report#ie##off("b")# eingetragen werden. 
     -  Falls Pakete mit #ib#Füllzeichen#ie# aufgefüllt werden müssen, sollten die Füll­
        zeichen durch den Treiber generiert und beim Empfang wieder entfernt
        werden. 
     -  Falls mehrere Betriebsmodi möglich sind, so sollten sie softwaremäßig
        einstellbar sein. 
     -  Falls die Treiber über eine serielle #ib#Schnittstelle#ie# an den Rechner angeschlos­
        sen werden, so sollte der Treiber konfigurierbar sein. In jedem Fall sollte die
        serielle Schnittstelle mit #ib#Flußkontrolle#ie# (#ib#RTS/CTS#ie#) implementiert werden. 
 
Zusätzlich ist ein Transparent-Modus als #ib#Netzmodus#ie# von Vorteil: 
 
     -  Der Modus (transparent) kann zu Testzwecken benutzt werden. Beispiels­
        weise um auch mit Rechnern kommunizieren zu können, die über Netz
        erreichbar sind, aber kein EUMEL-Netz-#ib#Protokoll#ie# benutzen. 
 
        Modus n:  transparent. 
 
                  Ausgabeseitig: Das #ib#Paket#ie# wird unverändert ausgegeben.
                                 #ib#Adresse#ie#n usw. müssen schon im Paket vor­
                                 handen sein. Es wird nicht mit #ib#Füllzeichen#ie#
                                 aufgefüllt. 
                  Eingabeseitig: Das Paket wird unverändert an die Netzsoft­
                                 ware weitergegeben. 
 
#page# 
 
3.4.  Prozedurschnittstelle 
      des EUMEL-Netzes 
      
 
 
 
 
     #goalpage("3.4")# 
Im PACKET #on("b")##ib#net hardware interface#ie##off("b")# sind folgende Prozeduren untergebracht: 
 
 
 
      BOOL PROC #ib#blockin#ie# 
          (DATASPACE VAR ds, INT CONST seite, abstand, länge): 
 
           Versucht, #on("b")#länge#off("b")# Zeichen vom #ib#Kanal#ie# einzulesen. Liefert TRUE, wenn alle
           Zeichen eingelesen wurden, FALSE, wenn innerhalb einer bestimmten
           Zeit nicht alle #on("b")#länge#off("b")# Zeichen eingelesen werden konnten (z.B. weil der
           Kanal nicht mehr Zeichen anliefert). Die eingelesenen Zeichen werden im
           #ib#Datenraum#ie# #on("b")#ds#off("b")# in #ib#Seite#ie# #on("b")#seite#off("b")# ab #on("b")#abstand#off("b")# bis #on("b")#abstand#off("b")# + #on("b")#länge#off("b")# - 1 abge­
           legt. 
 
               #ib#Fehlerfall#ie#: 
 
                     #on("b")#blockin Abbruch#off("b")# 
 
           Es werden weniger #ib#Zeichen#ie# innerhalb einer festgelegten Zeitspanne über
           den Kanal angeliefert, als mit #on("b")#länge#off("b")# gefordert. 
 
           Passiert z.B., wenn die Kabel während einer Netzübertragung unter­
           brochen werden, oder wenn die Gegenstelle abgeschaltet wird. Das
           #ib#Telegramm#ie# wird vernichtet, die Prozedur liefert FALSE, es wird eine
           entsprechende Meldung im #on("b")##ib#report#ie##off("b")# erzeugt. 
 
      PROC #ib#blockout#ie# 
          (DATASPACE CONST ds, INT CONST seite, abstand, länge): 
 
          Der Inhalt von Seite #on("b")#seite#off("b")# des #ib#Datenraum#ie#s #on("b")#ds#off("b")# wird von #on("b")#abstand#off("b")# bis
          #on("b")#abstand#off("b")# + #on("b")#länge#off("b")# - 1 ausgegeben. 
#page# 
      PROC #ib#set net mode#ie# (INT CONST mode): 
 
          Es wird der #ib#Netzmodus#ie# #on("b")#mode#off("b")# eingestellt. Im Netz-Hardware-Interface
          müssen alle Initialisierungen und Einstellungen vorgenommen werden,
          damit die mit #on("b")#mode#off("b")# geforderte #ib#Netzhardware#ie# unterstützt wird. Diese
          Prozedur wird bei jedem #on("b")##ib#start#ie##off("b")#-Kommando in der Netztask aufgerufen.
          Kann als Initialisierungsprozedur für dieses PACKET verwendet werden.
          Übergibt den in der #ib#Datei#ie# #on("b")##ib#netz#ie##off("b")# für diesen #ib#Kanal#ie# verlangten Netzmodus an
          das Netz-Hardware-Interface. Nach Aufruf dieser Prozedur müssen die
          wertliefernden Prozeduren #on("b")##ib#net mode#ie#, #ib#mode text#ie#, #ib#data length#ie##off("b")# und #on("b")##ib#data
          length via node#ie##off("b")# korrekt initialisiert sein. Der Aufruf von #on("b")##ib#net addess#ie##off("b")# muß
          die korrekten (physikalischen) #ib#Adresse#ie# der #ib#Station#ie#en liefern. 
 
      TEXT PROC net address (INT CONST stationsnummer): 
 
          Liefert die (Hardware-) Netz-#ib#Adresse#ie#, über die der EUMEL-Rechner
          mit der Stationsnummer #on("b")##ib#stationsnummer#ie##off("b")# beim aktuell für diesen Kanal
          eingestellten #ib#Netzmodus#ie# erreichbar ist. Auf diese #ib#Adresse#ie# muß der Treiber
          des entsprechenden Rechners eingestellt sein. Auch die eigene Netz-
          Adresse muß mit der im Treiber eingestellten #ib#Adresse#ie# übereinstimmen.
          Insbesondere müssen alle Stationen, die auf dem Netz arbeiten, dieselbe
          Netz-Adresse für eine #ib#Stationsnummer#ie# errechnen. 
 
      TEXT PROC #ib#mode text#ie#: 
 
          Liefert den Text (Namen) des eingestellten #ib#Netzmodus#ie#. Wird in #on("b")##ib#net
          manager#ie##off("b")# benutzt, um den Netzmodus im #on("b")##ib#report#ie##off("b")# anzugeben. 
 
      TEXT PROC mode text (INT CONST mode): 
 
          Liefert den Text (Namen) zu dem #ib#Netzmodus#ie# #on("b")#mode#off("b")#. 
 
      INT PROC #ib#data length#ie# (INT CONST mode): 
 
          Liefert die #ib#Nutzdatenlänge#ie# (#ib#Länge#ie# der Nettodaten des Eumel-
          Telegramms) im Netz. Wird von #on("b")##ib#basic net#ie##off("b")# beim Neustart aufgerufen. Muß
          in einem Netz auf allen Stationen eines #ib#Strang#ie#s denselben Wert liefern. 
 
          Erlaubte Werte:  64, 128, 256 und 512. 
#page# 
      INT CONST #ib#data length via node#ie#: 
 
          Liefert die #ib#Nutzdatenlänge#ie# für Sendungen, die über #ib#Knoten#ie# gehen. 
          Muß auf allen Stationen des Netzes gleich sein. 
 
          Erlaubte Werte:  64, 128, 256 und 512. 
 
      PROC #ib#decode packet length#ie# (INT VAR value): 
 
          Die #ib#Länge#ie# eines Netztelegramms ist im #ib#Telegramm#ie# codiert enthalten. Mit
          dieser Prozedur wird aus dem Telegrammkopf die Telegrammlänge ermit­
          telt: 
 
          Falls beim Aufruf dieser Prozedur in #on("b")#value#off("b")# der Wert des Feldes #on("b")#head#off("b")# aus
          der Struktur #on("b")#vorspann#off("b")#, die in #on("b")#ds#off("b")# per #on("b")##ib#transmit header#ie##off("b")# übergeben wurde,
          enthalten ist, so wird in #on("b")#value#off("b")# die Länge des EUMEL-Netztelegramms
          zurückgeliefert. 
 
      PROC #ib#flush buffers#ie#: 
 
          Liest den Eingabepuffer des #ib#Netzkanal#ie#s leer. Die eingelesenen Zeichen
          werden vernichtet. Wird nach Erkennen von #ib#Übertragungsfehler#ie#n aufge­
          rufen. 
 
      TEXT PROC #ib#next packet start#ie#: 
 
          Liefert genau ein #ib#Zeichen#ie# (in der Regel das erste Zeichen des EUMEL-
          Netztelegramms). Wird von der Netzsoftware immer dann aufgerufen,
          wenn ein neues #ib#Paket#ie# erwartet wird. 
 
          Bedeutung des gelieferten Zeichens für die #ib#Netzsoftware#ie#: 
 
          #ib#STX#ie#:      korrekter #ib#Telegrammanfang#ie# (ist das erste Zeichen des
                    EUMEL-Netztelegramms). Der Rest des EUMEL-Netztele­
                    gramms steht im Eingabepuffer, ist also über #ib#blockin#ie# lesbar.
                    Vorher wurden nur Zeichen eingelesen, die zum verwendeten
                    #ib#Netzprotokoll#ie# gehören (z.B. #ib#Ethernet#ie#-#ib#Adresse#ie#n, #ib#Füllzeichen#ie#
                    usw.). 
          niltext:  kein neues Telegramm da 
 
          jedes andere Zeichen: 
                    Fehler. Entweder wurden Störzeichen eingelesen oder es
                    gingen Zeichen verloren. #ib#Fehlerbehandlung#ie# erfolgt durch die
                    Netzsoftware. 
#page# 
      PROC #ib#transmit header#ie# (DATASPACE CONST ds): 
 
          Wird vor Ausgabe eines jeden #ib#Telegramm#ie#s aufgerufen. In dem #ib#Datenraum#ie#
          #on("b")#ds#off("b")# wird von der EUMEL-Netz-Software der #on("b")##ib#Vorspann#ie##off("b")# übergeben. Über
          den jeweiligs eingestellten #ib#Netzmodus#ie# kann für jede implementierte Netz­
          art über eine #ib#Sprungleiste#ie# (#ib#SELECT#ie#) die Prozedur angesprungen werden,
          die den #ib#Header#ie# für den eingestellten Netzmodus erstellt und ausgibt.
          Struktur des von der EUMEL-Netz-Software benutzten Headers: 
 
              BOUND STRUCT 
              (INT  head, 
                    zwischenziel, 
                    zielrechner, 
                    quellrechner, 
                    strom, 
                    sequenz, 
                    seitennummer ) VAR vorspann. 
 
          Aus dem Inhalt des Feldes #on("b")#head#off("b")# kann mittels #on("b")##ib#decode packet length#ie##off("b")# die
          Gesamtlänge des EUMEL-Netztelegramms errechnet werden. 
 
      PROC #ib#transmit trailer#ie#: 
 
          Wird nach Ausgabe eines jeden Telegramms aufgerufen. Evtl. notwendige
          Nachspänne können ausgegeben werden. Die notwenigen Informationen
          wurden  in #on("b")##ib#transmit header#ie##off("b")# übergeben und müssen aufbewahrt werden,
          falls sie im Trailer mitgeliefert werden müssen. Kann auch dazu benutzt
          werden, den unter diesem Packet liegenden Schichten (#ib#SHard#ie# oder Hard­
          ware) das Ende des Telegramms mitzuteilen. Notwendige #ib#Füllzeichen#ie#
          können in dieser Prozedur in das #ib#Paket#ie# eingebaut werden. 
 
      PROC #ib#reset box#ie# (INT CONST net mode): 
 
          Kann zur Initialisierung der #ib#Netzhardware#ie# benutzt werden. Wird von #on("b")##ib#basic
          net#ie##off("b")# beim jedem Neustart aufgerufen. 
 
     INT PROC #ib#max mode#ie#: 
 
          Liefert den Wert des größten erlaubten (implementierten) #ib#Netzmodus#ie#. 
 
     INT PROC #ib#net mode#ie#: 
 
          Liefert den eingestellten Netzmodus. 
#page# 
#pagenr ("%", 45)##setcount (1)##block##pageblock##count per page# 
#headeven# 
#center#EUMEL Netzbeschreibung 
#center#____________________________________________________________ 
 
#end# 
#headodd# 
#center#Anhang 
#center#____________________________________________________________ 
 
#end# 
#bottomeven# 
#center#____________________________________________________________ 
Netz - % #right#GMD 
#end# 
#bottomodd# 
#center#____________________________________________________________ 
GMD #right#Netz - % 
#end# 
#clear pos##lpos(1.0)##rpos(9.5)##goalpage("A")# 

Anhang: Netz-Meldungen#goalpage("A.1")# 
 
Mit dem Kommando #on("b")##ib#list#ie# (/"net list")#off("b")# (siehe Teil 1) erhalten Sie eine temporäre #ib#Datei#ie#
auf den Bildschirm. Diese Datei könnte ungefähr so aussehen: 
 
____________________________________________________________________________ 
   
   N e u e r   S t a r t 12:44      Stationsnummer : 38 
  01.06.87 12:55 net port 8:20:Nicht zustellbar. . Empfänger: "net dok". Quelle 34 Taskindex: 255 
  02.06.87 06:30 net port 8:1:wdh data. sqnr 7. Absender: "net dok". Ziel 34 Taskindex: 255 
  02.06.87 07:03 net port:20:Sequenzfehler: soll 13 ist 14. Empfänger: "POST". Quelle 33 Taskindex: 
  02.06.87 07:03 net port:blockin abbruch 
  02.06.87 07:03 net port:20:Sequenzreset von 13 auf 10. Empfänger: "POST". Quelle 33 Taskindex: 29 
  02.06.87 07:36 net port:Call gelöscht."net dok". Strom 1 
  02.06.87 07:43 net port 8:verbotene Route: 34 
  02.06.87 07:50 net port:Header inkorret eingelesen: %0 %2 
  02.06.87 07:50 net port:buffers flushed 
  02.06.87 07:52 net port:Weiterleitung nicht möglich für 34 
  02.06.87 07:53 net port 8:skipped0 6 G O 1 0 . 0 %13 %10 2 8 0 6   0 6 G O 1 0 . 0 %13 %10 2 8 0 
  02.06.87 08:14 net port 8:skipped%13 %10 S p e c .   R e c e i v e   E r r o r   C 2 
  02.06.87 08:21 net port:20:Reopen. Empfänger: "WÜFE". Quelle 40 Taskindex: 22 
  02.06.87 09:25 net port:1:etwas rueckgespult. Absender: "-". Ziel 33 Taskindex: 51 
  02.06.87 09:25 net port:1:wdh data. sqnr 20. Absender: "-". Ziel 33 Taskindex: 51 
  02.06.87 09:54 net port:20:Blocknummer falsch, neu: 192, alt : -1. Empfänger: "WÜFE". Quelle 44 
  02.06.87 10:12 net port:Daten ohne Eroeffnung von 40  Sequenznr 7 
  02.06.87 10:23 net port:Header inkorret eingelesen: O X 0 3 8 B O X 0 4 4 E U %2 
  02.06.87 10:23 net port:buffers flushed 
  02.06.87 10:49 net port:1:wdh open. Absender: "-". Ziel 33 Taskindex: 255 
  02.06.87 10:49 net port:2:wdh open. Absender: "net dok". Ziel 33 Taskindex: 255 
  02.06.87 10:53 net port:1:Sequenzfehler: soll 2 ist 3. Empfänger: "net dok". Quelle 33 Taskindex: 
  02.06.87 10:54 net port:1:Sequenzreset von 8 auf 5. Empfänger: "net dok". Quelle 33 Taskindex: 11 
  02.06.87 10:56 net port:2:etwas rueckgespult. Absender: "-". Ziel 33 Taskindex: 51 
  bekannte Stationen: 
  1(8,1) 2(8,2) 3(8,3) 4(8,4) 5(8,5) 6(8,6) 7(8,7) 8(8,8) 9(8,9) 10(8,10) 
  11(8,11) 12(8,12) 13(8,13) 14(8,14) 15(8,15) 16(8,16) 17(8,17) 18(8,18) 
  19(8,19) 20(8,20) 21(8,21) 22(8,22) 23(8,23) 24(8,24) 25(8,25) 26(8,26) 
  27(8,27) 28(8,28) 29(8,29) 30(8,30) 31(8,31) 32(8,32) 33(9,33) 34(8,34) 
  35(9,35) 36(9,36) 37(9,37) 39(9,39) 40(9,40) 41(9,41) 42(9,42) 43(9,43) 
  44(9,44) 45(9,45) 46(9,46) 47(9,47) 48(9,48) 
  -------- 
  Eingestellte Netzmodi: 
  net port 8 haengt an Kanal 8, Modus: (1)  EUMEL-Netz            64 Byte 
  net port haengt an Kanal 9, MODUS: (11) ETHERNET via V.24     512 Byte 
 
  Nutzdatenlänge 512 Byte 
  Nutzdatenlänge bei indirekter Verbindung: 64 Byte 
  ******** 
  Netz-Software vom  23.05.87 
  Rechner 38  um 11:11 
  net port 8 
 
  Strom 1 (sqnr7/8) sendet an 34 . Absender ist "net dok". 
  net port 
 
  Strom 1 (sqnr45/45) empfaengt von 40 . Empfaenger ist "PUBLIC". 
 
____________________________________________________________________________ 
#page# 
Die Datei enthält den aktuellen #on("b")##ib#report#ie##off("b")#, in dem #ib#Fehlermeldung#ie#en der einzelnen Tasks
gesammelt werden. Außerdem wird der Zustand aller Verbindungen (Ströme) von allen
#on("b")##ib#net port#ie##off("b")#'s angezeigt. Im #on("b")#report#off("b")#-Teil kann man drei Informationsblöcke unterscheiden: 
 
a) den Block mit den Fehlermeldungen. Es werden jeweils Datum, Uhrzeit, der Name
   des betroffenen #on("b")#net port#off("b")# und, wenn notwendig, die #ib#Stromnummer#ie# angegeben.
   Darauf folgt der Meldungstext, der auch Informationen über Absender und Emp­
   fänger enthalten kann. 
 
   <Datum> <Zeit> <Name der #ib#Kanaltask#ie#> : [<#ib#Stromnummer#ie#> : ] <Meldung> 
 
 
b) den Block mit der Liste der bekannten #ib#Station#ie#en. Ein Eintrag in dieser Liste ent­
   hält jeweils die Stationsnummer der bekannten Station und in Klammern dahin­
   ter die Nummer des Kanals auf diesem Rechner, über den die Station erreichbar
   ist und die Nummer der nächsten #ib#Zwischenstation#ie#. 
 
   <Zielstation> (<Kanalnr>,<Zwischenstation>) 
 
   Bei direkt erreichbaren Stationen ist Zwischenstation gleich #ib#Zielstation#ie#. 
 
   Hinweis: Auch #ib#gesperrt#ie#e Stationen erscheinen in dieser Liste. 
 
 
c) den Block, der Auskunft über die Netzinstallation gibt. Es werden für jeden Netz­
   kanal die eingestellten Netzmodi angegeben. Des weiteren werden die beiden
   Größen #on("b")##ib#data length#ie##off("b")# (#ib#Nutzdatenlänge#ie#) und #on("b")##ib#data length via node#ie##off("b")# (Nutzdatenlänge bei
   indirekter Verbindung) angegeben. Zusätzlich erscheinen noch die #ib#Netzversion#ie# und
   die genaue Uhrzeit, zu der dieser #on("b")#report#off("b")# erstellt wurde. 
 
#page# 
Für jeden #on("b")##ib#net port#ie##off("b")# wird pro aktivem #ib#Strom#ie# folgende Meldung generiert: 
 
Strom <Stromnr> (sqnr<akt Seqnr>/<max Seqnr>) <Zustand> <Partner> 
 
 
<Stromnr>        #ib#Stromnummer#ie# 
 
<akt Seqnr>      #ib#Sequenznummer#ie# des gerade bearbeiteten #ib#Telegramm#ie#s 
 
<max Seqnr>      Bei #ib#Sendeströme#ie#n die Nummer der letzten zu übertragenden
                 #ib#Sequenz#ie#, bei Empfangsströmen in der Regel die Nummer der
                 letzten Sequenz der gerade übertragenen #ib#Datenraumseite#ie#. 
 
<#ib#Zustand#ie#>        Hier wird die Aktion (senden, empfangen usw.) und die Partner­
                 station angegeben. 
 
<#ib#Partner#ie#>        Der Name der Task mit der kommuniziert wird. 
 
 
Die Meldungen, die in der #ib#Datei#ie# #on("b")##ib#report#ie##off("b")# protokolliert werden, kann man in verschiedene
Gruppen einordnen. Die eine Gruppe beschreibt Störungen durch #ib#Zeichenverluste#ie#
oder ­verfälschungen, eine andere Gruppe protokolliert besondere Situationen, bei­
spielsweise den Abbruch von #ib#Übertragung#ie#en, und die letzte Gruppe befasst sich mit
#ib#Fehlermeldung#ie#en, die ein Eingreifen von aussen notwendig machen. Je nachdem, ob
die Station, auf der die Meldung protokolliert wird, Empfänger oder Absender ist, wird
bei den Meldungen #ib#Stationsnummer#ie# und Taskname des Kommunikationspartners mit
angegeben. 
 
Zur ersten Gruppe gehören: 
 
#ib(4)##ib#skipped#ie##ie(4)# 
               'skipped' oder skipped mit einem Zusatztext erscheint, wenn Zei­
               chen eingelesen wurden, die zu keinem gültigen #ib#Telegramm#ie# ge­
               hören. Dies kann passieren, wenn auf der Leitung zwischen
               Rechner und Box #ib#Zeichen#ie# verlorengegangen sind. Auch nach dem
               Einschalten oder nach einem Reset auf Box oder Rechner kann
               diese Meldung kommen. Mindestens ein Teil der eingelesenen
               Daten wird mit ausgegeben, wobei Steuerzeichen durch % und den
               Code des Steuerzeichens dargestellt werden. Die einzelnen Zeichen
               werden durch ein Blank voneinander getrennt. 
#page# 
#ib(4)##ib#Sequenzfehler#ie##ie(4)# 
               Die #ib#Sequenznummer#ie# ist zu groß, es fehlen also Telegramme. Die
               Gegenstation wird aufgefordert, ab einem früheren Telegramm zu
               wiederholen. 
 
#ib(4)#wdh data#ie(4)# 
               Das letzte Telegramm wird erneut geschickt. Passiert, wenn die
               #ib#Quittung#ie# für dieses Telegramm nach einer bestimmten Zeit nicht
               angekommen ist. 
 
#ib(4)##ib#Sequenzreset#ie##ie(4)# 
               Die #ib#Sequenznummer#ie# des empfangenen Telegramms ist kleiner als
               die Sequenznummer des vorher empfangenen Telegramms. Die
               Verbindung wird bei der zuletzt empfangenen Sequenznummer
               fortgesetzt. 
 
#ib(4)#Blocknummer falsch#ie(4)# 
               Die #ib#Seitennummer#ie# in dem #ib#Telegramm#ie# ist falsch. 
 
#ib(4)#etwas rueckgespult#ie(4)# 
               Auf Anforderung der Gegenseite werden die letzten drei #ib#Datenraum­
               seite#ie#n erneut übertragen. 
 
#ib(4)#Daten ohne Eroeffnung#ie(4)# 
               Es werden Telegramme mit einer #ib#Stromnummer#ie# empfangen, zu der
               vorher kein OPEN-Telegramm empfangen wurde. In diesem Fall
               wird die Gegenstation aufgefordert, die #ib#Übertragung#ie# von vorn zu
               beginnen. Diese Meldung kann auch kommen, wenn das Netz neu
               gestartet wurde. 
 
#ib(4)#wdh open#ie(4)# 
               Die Übertragung wird mit dem #ib#OPEN#ie#-Telegramm von vorn begon­
               nen. Passiert auf Aufforderung durch die Gegenstation oder wenn
               das erste OPEN-Telegramm nicht quittiert wurde. 
 
#ib(4)##ib#buffers flushed#ie##ie(4)# 
               Alle bereits eingelesenen, aber noch nicht bearbeiteten Zeichen
               wurden gelöscht (der #ib#Eingabepuffer#ie# wurde komplett gelöscht). Verur­
               sacht durch schwere Störungen (#ib#Zeichenverluste#ie# oder -verfäl­
               schungen). 
#page# 
#ib(4)#blockin abbruch#ie(4)# 
               Es wurden nicht alle Zeichen eines Telegramms innerhalb eines
               bestimmten Zeitraums angeliefert. 
 
#ib(4)#Header inkorrekt eingelesen#ie(4)# 
               Es wurde ein Fehler in dem Teil des Netztelegramms gefunden, der
               nicht zum EUMEL-Netz gehört. 
 
#ib(4)#Strom falsch in Quittung#ie(4)#: 
               In der #ib#Quittung#ie# wurde eine nicht zulässige #ib#Stromnummer#ie# festge­
               stellt. Zulässig sind Stromnummern zwischen 1 und 20. 
 
#ib(4)#Neustart#ie(4)# 
               Die Gegenstation hat die #ib#Verbindung#ie# von vorne begonnen. 
 
#ib(4)#Falsche Seitennummer#ie(4)# 
               Die #ib#Seitennummer#ie# in dem empfangenen Telegramm ist falsch.
               Einige Telegramme werden wiederholt. 
 
#ib(4)#Absteigende Seitennummern#ie(4)# 
               Die Seitennummer in dem empfangenen Telegramm ist kleiner als
               die Seitennummer im vorigen #ib#Telegramm#ie#. Es müssen einige Tele­
               gramme wiederholt werden. 
 
 
Die folgenden Meldungen beschreiben Situationen, die nicht durch #ib#Zeichenverluste#ie#
entstehen, mit denen die #ib#Netzsoftware#ie# selbst fertig wird: 
 
 
#ib(4)#Sendung von Gegenstelle gelöscht#ie(4)# 
               Die Verbindung wurde von der Gegenstelle abgebrochen. 
 
#ib(4)#Empfangseintrag freigegeben#ie(4)# 
               Die Verbindung wurde von der empfangenden #ib#Station#ie# gelöscht, weil
               seit dem Eintreffen des letzten Telegramms zuviel Zeit vergangen ist
               (#ib#Timeout#ie#). 
 
#ib(4)#Irrläufer#ie(4)# 
               Eine #ib#Intertaskkommunikation#ie# innerhalb der eigenen Station wurde
               fälschlicherweise über den #on("b")##ib#Collector#ie##off("b")# abgewickelt. Dieser Vorgang
               wird abgebrochen. 
#page# 
#ib(4)#Call-Löschung vorgemerkt#ie(4)# 
               Sobald der Call abgewickelt ist, wird diese Verbindung gelöscht.
               Beispielsweise führt ein vom Benutzer abgebrochenes #on("b")##ib#name#ie##off("b")# zu
               dieser Meldung. 
 
#ib(4)#Call gelöscht#ie(4)# 
               Die #ib#Verbindung#ie# wurde auf Anforderung durch den Auftraggeber
               gelöscht. 
 
#ib(4)#Quellrechner#ie(4)# 
               Als #ib#Quellrechnernummer#ie# wurde ein unzulässiger Wert festgestellt.
               Zulässig sind Zahlen zwischen 1 und 127. 
 
#ib(4)#Nicht zustellbar#ie(4)# 
               Innerhalb eines bestimmten Zeitraums war die #ib#Zieltask#ie# nicht emp­
               fangsbereit. Die Verbindung wird abgebrochen. 
 
Bei diesen Meldungen sollten die #ib#Routenanweisungen#ie# überprüft werden: 
 
#ib(4)#Verbotene Route bei Quittung#ie(4)# 
               Die #ib#Quittung#ie# kommt auf einer nicht erlaubten #ib#Route#ie# an. Dies kann
               bei #ib#Vermaschung#ie# passieren, oder aber, wenn eine Station versucht,
               sich für eine andere Station auszugeben. 
 
#ib(4)#Verbotene Route#ie(4)# 
               Die danach bezeichnete Station versucht, auf einer anderen Route
               mit diesem Rechner zu kommunizieren, als auf der Route, die für
               diesen Rechner in der Datei #on("b")##ib#netz#ie##off("b")# festgelegt wurde. 
 
               Abhilfe: 
               #ib#Routentabellen#ie# der beiden (oder, falls die Meldung auf einer
               #ib#Knotenstation#ie# erscheint, auf allen beteiligten) Stationen abgleichen. 
 
#ib(4)#Weiterleitung nicht möglich#ie(4)# 
               Die #ib#Routeninformationen#ie# auf dem #ib#Knotenrechner#ie#, wo diese Meldung
               erscheint, und der sendenden #ib#Station#ie# stimmen nicht überein. Die
               angegebene Station ist von dieser Station aus nicht erreichbar. 
 
               Abhilfe: 
               #ib#Routentabellen#ie# der Stationen überprüfen. 
 
#ib(4)#Fremdzugriff#ie(4)# 
               Eine #ib#gesperrt#ie#e Station hat versucht, auf diesen Rechner mit #ib#Sende­
               codes#ie# > 6 zuzugreifen. 
 
 
Folgende Meldungen betreffen '#ib#harte Fehler#ie#'. Diese Fehler werden von der Netzsoft­
ware nicht abgefangen. In jedem Fall muß das Netz nach einer solchen #ib#Fehler­
meldung#ie# neu gestartet werden. 
 
#ib(4)#++++++#ie(4)# 
               Meldungen dieser Form sind 'harte' Fehler. Der aufgetretene Fehler 
               wird mit angegeben. Das Netz muß neu gestartet werden, da die
               Task, in welcher der Fehler aufgetreten ist, gelöscht wird. 
 
#ib(4)#Verbindungsengpaß#ie(4)# 
               Es sind mehr Verbindungen festgestellt worden, als zulässig sind.
               Nach dieser Meldung wurde der entsprechende Netport gelöscht. 
 
 
Literaturverzeichnis 
 
 
#goalpage("A.2")# 
 
#clear pos# 
#lpos(1.0)##lpos(2.5)# 
#table# 
[1]   EUMEL-Systemhandbuch, Teil 5, Intertaskkommunikation 
      GMD St. Augustin, 1986 
[2]   EUMEL-Systemhandbuch, Teil 2, Hardware und ihre Steuerung 
[3]   EUMEL-Systemhandbuch, Teil 8, Spooler 
[4]   EUMEL-Netz Installationsanweisung 
      GMD St. Augustin, 1987 
[5]   EUMEL-Systemhandbuch, Teil 4, Blockorientierte Ein/Ausgabe 
[6]   EUMEL-Quellcode, Packet #on("b")#tasks#off("b")# 
      GMD St. Augustin, 1986 
[7]   EUMEL-Portierungshandbuch 8086, Version 8 
      GMD St. Augustin, 1987 
 
#table end#