Trailing-Edge
-
PDP-10 Archives
-
decuslib20-04
-
decus/20-0109/decom.lst
There is 1 other file named decom.lst in the archive. Click here to see a list.
DECsystem-20 SIMULA %4A(310) 1-FEB- 1981 14:49 PAGE 1
DSK:DECOM.SIM 11-FEB- 1976 19:00
1 OPTIONS(/L/E); !/C/-A/-I/-D);
2 EXTERNAL TEXT PROCEDURE rest, scanto, frontstrip, upcase,
3 front, conc, checkextension;
4 EXTERNAL REF (Infile) PROCEDURE findinfile;
5 EXTERNAL REF (Outfile) PROCEDURE findoutfile;
6 EXTERNAL BOOLEAN PROCEDURE frontcompare;
7 EXTERNAL CHARACTER PROCEDURE findtrigger;
8 EXTERNAL INTEGER PROCEDURE scanint, search;
9 EXTERNAL LONG REAL PROCEDURE scanreal;
10 EXTERNAL PROCEDURE split;
11 EXTERNAL CLASS safmin;
12
13 COMMENT DECOM --- Interpret user command with files and switches.;
14
15 safmin CLASS decom(limit); INTEGER limit;
B1 16 BEGIN
17 TEXT ARRAY swarray[1:limit];
18 TEXT dottext, colontext, switchchar, equal;
19 INTEGER nswin, nswout, i;
20
21 BOOLEAN PROCEDURE deccom(command,ohead,ihead);
22 NAME ohead,ihead;
23 TEXT command,ohead,ihead;
B2 24 BEGIN TEXT outspec,inspec;
25 INTEGER switchcount,i,noutswitches;
26
27 TEXT PROCEDURE getswitch(t); NAME t; TEXT t;
B3 28 BEGIN TEXT s;
29 split(rest(t),s,switchchar,t);
30 IF s == NOTEXT THEN
B4 31 BEGIN Outtext("%DECSWV - Switch Without Value.");
32 Outimage; deccom:= FALSE;
E4 33 END;
34 getswitch:- s
E3 35 END of getswitch;
36
37 INTEGER PROCEDURE collectswitch(t,header);
38 NAME header; TEXT t,header;
B5 39 BEGIN
40 header:- scanto(t,'/');
41 WHILE t.More DO
B6 42 BEGIN
43 IF switchcount >= limit THEN
B7 44 BEGIN Outtext("%DECTMS - Too Many Switches.");
45 deccom:= FALSE; Outimage; GO TO exit
E7 46 END;
47 switchcount:= switchcount + 1;
48 swarray[switchcount]:- getswitch(t);
E6 49 END;
50 exit:
51 collectswitch:= switchcount
E5 52 END of collectswitch;
DECsystem-20 SIMULA %4A(310) 1-FEB- 1981 14:49 PAGE 1-1
DSK:DECOM.SIM 11-FEB- 1976 19:00
53
54 deccom:= TRUE;
55 OPTIONS(/A); swarray[1]:- swarray[1];
56 swarray[limit]:- swarray[limit];
57 COMMENT OPTIONS(/-A);
58
59 split(command,outspec,equal,inspec);
60 noutswitches:=
61 switchcount:= collectswitch(outspec,ohead);
62 switchcount:= collectswitch(inspec ,ihead);
63 nswin:= switchcount - noutswitches;
64 nswout:= noutswitches;
65
E2 66 END of deccom;
67
68 OPTIONS(/p);
DECsystem-20 SIMULA %4A(310) 1-FEB- 1981 14:49 PAGE 2
DSK:DECOM.SIM 11-FEB- 1976 19:00
69 PROCEDURE createfiles(ohead,ihead,oextension,iextension,
70 ofile,ifile,help);
71 NAME ohead,ihead,ofile,ifile,help;
72 TEXT ohead, ihead, oextension, iextension;
73 REF (Outfile) ofile; REF (Infile) ifile;
74 BOOLEAN help;
B8 75 BEGIN
76 REF (Outfile) ofile2; REF (Infile) ifile2;
77
78 ihead:- checkextension(ihead,iextension);
79 ohead:- checkextension(ohead,oextension);
80 FOR ifile2:- findinfile(ihead) WHILE ifile2 == NONE DO
B9 81 BEGIN Outtext("%DECCFI - Cannot Find Infile:");
82 Outtext(ihead); Outimage;
83 request("Enter new infile spec: ",nodefault,
84 textinput(ihead,TRUE),NOTEXT,help);
E9 85 END check infile;
86
87 IF ohead = "TTY:" THEN ofile2:- Sysout ELSE
88 FOR ofile2:- findoutfile(ohead) WHILE ofile2 == NONE DO
B10 89 BEGIN Outtext("?DECIOS Illegal Outfile Spec:");
90 Outtext(ohead); Outimage;
91 request("Enter new outfile spec: ",nodefault,
92 textinput(ohead,TRUE),NOTEXT,help);
E10 93 END check outfile;
94
95 ifile:- ifile2; ofile:- ofile2;
96
E8 97 END of procedure create_files;
98 OPTIONS(/p);
DECsystem-20 SIMULA %4A(310) 1-FEB- 1981 14:49 PAGE 3
DSK:DECOM.SIM 11-FEB- 1976 19:00
99
100
101 PROCEDURE intswitch(id,default,result,okay,errmess,help);
102 NAME default, id, result, okay, errmess, help;
103 TEXT default, id, errmess; INTEGER result; BOOLEAN okay, help;
B11 104 BEGIN
105 TEXT sw;
106 FOR i:= nswin+nswout STEP -1 UNTIL 1 DO
107 IF frontcompare(swarray[i],id) THEN
B12 108 BEGIN
109 sw:- swarray[i]; sw.Setpos(1); scanto(sw,':');
110 swarray[i]:- NOTEXT;
111 GO TO out
E12 112 END;
113 IF default == NOTEXT THEN GOTO askforvalue ELSE
114 sw:- Copy(default);
115 out:
116 result:= scanint(sw);
117 IF NOT okay THEN
B13 118 BEGIN
119 Outtext("?DECISV - Illegal Switch Value /"); Outtext(id);
120 Outchar(':'); Outint(result,8); Outimage;
121 outline(errmess);
122 askforvalue: request(id,default,intinput(result,okay),errmess,help);
E13 123 END;
E11 124 END of intswitch;
125
126
127 BOOLEAN PROCEDURE boolswitch(id,okay,errmess,help);
128 NAME id, okay, errmess, help;
129 TEXT id, errmess; BOOLEAN okay, help;
B14 130 BEGIN
131 TEXT sw; BOOLEAN result;
132 FOR i:= nswin+nswout STEP -1 UNTIL 1 DO
133 IF frontcompare(swarray[i],id) THEN
B15 134 BEGIN
135 result:= TRUE;
136 swarray[i]:- NOTEXT;
137 WHILE result AND NOT okay DO
B16 138 BEGIN
139 Outtext("?DECISV - Illegal Switch Value: /"); Outtext(id);
140 Outimage;
141 outline(errmess);
142 request(id,"NO",boolinput(result),errmess,help);
E16 143 END;
144 out:
E15 145 END;
146 out:
147 boolswitch:= result;
E14 148 END of boolswitch;
149
150
DECsystem-20 SIMULA %4A(310) 1-FEB- 1981 14:49 PAGE 3-1
DSK:DECOM.SIM 11-FEB- 1976 19:00
151 BOOLEAN PROCEDURE illegalswitch(errmess,help);
152 NAME errmess, help; TEXT errmess; BOOLEAN help;
B17 153 BEGIN
154 FOR i:= nswin+nswout STEP -1 UNTIL 1 DO
B18 155 BEGIN
156 IF swarray[i] =/= NOTEXT THEN
B19 157 BEGIN
158 upcase(swarray[i]); swarray[i].Setpos(1);
159 IF swarray[i].Getchar = '?' OR swarray[i] = "H"
160 OR swarray[i] = "HE" OR
161 swarray[i] = "HEL" OR swarray[i] = "HELP" THEN
B20 E20 162 BEGIN IF help THEN ; END ELSE
B21 163 BEGIN
164 Outtext(errmess); Outtext(swarray[i]);
165 Outimage;
E21 166 END;
167 illegalswitch:= TRUE;
E19 168 END;
E18 169 END;
E17 170 END;
171
172 dottext:- Copy(".:/=");
173 equal:- dottext.Sub(4,1);
174 switchchar:- dottext.Sub(3,1);
175 colontext:- dottext.Sub(2,1);
176 dottext:- dottext.Sub(1,1);
177
E1 178 END of decom;
SWITCHES CHANGED FROM DEFAULT:
E EXTERNAL CLASS/PROCEDURE
NEW ATR FILE GENERATED
RECOMPILE DEPENDENT PROGRAMS
NO ERRORS DETECTED