|
|
1.1 root 1: -TITLE SPITBOL TEST PROGRAM #1 -- DIAGNOSTICS PHASE ONE
2: -IN80
3: *
4: OUTPUT = 'TEST #1 '
5: *
6: *
7: * THIS IS A STANDARD TEST PROGRAM FOR SPITBOL WHICH TESTS
8: * OUT FUNCTIONS, OPERATORS AND DATATYPE MANIPULATIONS
9: *
10: TRACE(.TEST)
11: &TRACE = 1000
12: STARS = ' ERROR DETECTED ***'
13: &ERRLIMIT = 1000
14: SETEXIT(.ERRORS) ;* SET INTERRUPT LOCATION
15: OUTPUT = '************************************************'
16: OUTPUT = '**** S P I T B O L D I A G N O S T I C S ****'
17: OUTPUT = '**** P H A S E O N E ****'
18: OUTPUT = '************************************************'
19: OUTPUT = '**** ANY TRACE OUTPUT INDICATES AN ERROR ****'
20: OUTPUT = '************************************************'
21: *
22: * TEST REPLACE FUNCTION
23: *
24: TEST = DIFFER(REPLACE('AXXBYYY','XY','01'),'A00B111') STARS
25: A = REPLACE(&ALPHABET,'XY','AB')
26: TEST = DIFFER(REPLACE('AXY',&ALPHABET,A),'AAB') STARS
27: *
28: * TEST LPAD,RPAD FUNCTIONS
29: *
30: TEST = DIFFER(LPAD('ABC',5,'X'),'XXABC') STARS
31: TEST = DIFFER(RPAD('ABC',5,'X'),'ABCXX') STARS
32: TEST = DIFFER(LPAD(12,5),' 12') STARS
33: TEST = DIFFER(RPAD(10,4),'10 ') STARS
34: TEST = DIFFER(LPAD('ABC',2),'ABC') STARS
35: TEST = DIFFER(RPAD('AB',1),'AB') STARS
36: TEST = DIFFER(LPAD('AB',2),'AB') STARS
37: TEST = DIFFER(LPAD()) STARS
38: TEST = DIFFER(LPAD(,5),' ') STARS
39: *
40: * TEST CONVERT FUNCTION
41: *
42: TEST = DIFFER(CONVERT('8.9','NUMERIC') , 8.9) STARS
43: TEST = DIFFER(CONVERT('100','NUMERIC') , 100) STARS
44: TEST = DIFFER(CONVERT('12','INTEGER') , 12) STARS
45: TEST = DIFFER(CONVERT(2.5,'INTEGER'),2) STARS
46: TEST = DIFFER(CONVERT(2,'REAL'),2.0) STARS
47: TEST = DIFFER(CONVERT('.2','REAL'),0.2) STARS
48: *
49: * TEST REVERSE FUNCTION
50: *
51: TEST = DIFFER(REVERSE('123'),'321') STARS
52: TEST = DIFFER(REVERSE()) STARS
53: TEST = DIFFER(REVERSE(12),'21') STARS
54: *
55: * TEST DATATYPE FUNCTION
56: *
57: TEST = DIFFER(DATATYPE('JKL'),'STRING') STARS
58: TEST = DIFFER(DATATYPE(12),'INTEGER') STARS
59: TEST = DIFFER(DATATYPE(1.33),'REAL') STARS
60: TEST = DIFFER(DATATYPE(NULL),'STRING') STARS
61: *
62: * TEST ARITHMETIC OPERATORS
63: *
64: TEST = DIFFER(3 + 2,5) STARS
65: TEST = DIFFER(3 - 2,1) STARS
66: TEST = DIFFER(3 * 2,6) STARS
67: TEST = DIFFER(5 / 2,2) STARS
68: TEST = DIFFER(13 / 7,1) STARS
69: TEST = DIFFER(13 / -7,-1) STARS
70: TEST = DIFFER(-13 / 7,-1) STARS
71: TEST = DIFFER(-13 / -7,1) STARS
72: TEST = DIFFER(13 / 13,1) STARS
73: TEST = DIFFER(13 / -13,-1) STARS
74: TEST = DIFFER(-13 / 13,-1) STARS
75: TEST = DIFFER(-13 / -13,1) STARS
76: TEST = DIFFER(13 / 14,0) STARS
77: TEST = DIFFER(13 / -14,0) STARS
78: TEST = DIFFER(2 ** 3,8) STARS
79: TEST = DIFFER(3 + 1,4) STARS
80: TEST = DIFFER(3 - 1,2) STARS
81: TEST = DIFFER('3' + 2,5) STARS
82: TEST = DIFFER(3 + '-2',1) STARS
83: TEST = DIFFER('1' + '0',1) STARS
84: TEST = DIFFER(5 + NULL,5) STARS
85: TEST = DIFFER(-5,0 - 5) STARS
86: TEST = DIFFER(+'4',4) STARS
87: TEST = DIFFER(2.0 + 3.0,5.0) STARS
88: TEST = DIFFER(3.0 - 1.0,2.0) STARS
89: TEST = DIFFER(3.0 * 2.0,6.0) STARS
90: TEST = DIFFER(3.0 / 2.0,1.5) STARS
91: TEST = DIFFER(3.0 ** 3,27.0) STARS
92: TEST = DIFFER(-1.0,0.0 - 1.0) STARS
93: *
94: * TEST MIXED MODE
95: *
96: TEST = DIFFER(1 + 2.0,3.0) STARS
97: TEST = DIFFER(3.0 / 2,1.5) STARS
98: *
99: * TEST FUNCTIONS
100: *
101: * FIRST, A SIMPLE TEST OF A FACTORIAL FUNCTION
102: *
103: DEFINE('FACT(N)') :(FACTEND)
104: FACT FACT = EQ(N,1) 1 :S(RETURN)
105: FACT = N * FACT(N - 1) :(RETURN)
106: FACTEND TEST = NE(FACT(5),120) STARS
107: TEST = DIFFER(OPSYN(.FACTO,'FACT')) STARS
108: TEST = DIFFER(FACTO(4),24) STARS
109: *
110: * SEE IF ALTERNATE ENTRY POINT WORKS OK
111: *
112: DEFINE('FACT2(N)',.FACT2ENT) :(FACT2ENDF)
113: FACT2ENT FACT2 = EQ(N,1) 1 :S(RETURN)
114: FACT2 = N * FACT2(N - 1) :(RETURN)
115: FACT2ENDF OUTPUT = NE(FACT2(6),720) STARS
116: *
117: * TEST FUNCTION REDEFINITION AND CASE OF ARGUMENT = FUNC NAME
118: *
119: TEST = DIFFER(DEFINE('FACT(FACT)','FACT3')) STARS
120: . :(FACT2END)
121: FACT3 FACT = NE(FACT,1) FACT * FACT(FACT - 1)
122: . :(RETURN)
123: FACT2END
124: TEST = NE(FACT(4),24) STARS
125: *
126: * TEST OUT LOCALS
127: *
128: DEFINE('LFUNC(A,B,C)D,E,F') :(LFUNCEND)
129: LFUNC TEST = ~(IDENT(A,'A') IDENT(B,'B') IDENT(C,'C')) STARS
130: * TEST = ~(IDENT(D) IDENT(E) IDENT(F)) STARS
131: A = 'AA' ; B = 'BB' ; C = 'CC' ; D = 'DD' ; E = 'EE' ; F = 'FF'
132: . :(RETURN)
133: LFUNCEND AA = 'A' ; BB = 'B' ; CC = 'C'
134: D = 'D' ; E = 'E' ; F = 'F'
135: A = 'X' ; B = 'Y' ; C = 'Z'
136: TEST = DIFFER(LFUNC(AA,BB,CC)) STARS
137: TEST = ~(IDENT(A,'X') IDENT(B,'Y') IDENT(C,'Z')) STARS
138: TEST = ~(IDENT(AA,'A') IDENT(BB,'B') IDENT(CC,'C')) STARS
139: TEST = ~(IDENT(D,'D') IDENT(E,'E') IDENT(F,'F')) STARS
140: *
141: * TEST NRETURN
142: *
143: DEFINE('NTEST()') :(ENDNTEST)
144: NTEST NTEST = .A :(NRETURN)
145: ENDNTEST A = 27
146: TEST = DIFFER(NTEST(),27) STARS
147: . :F(ST59) ;ST59
148: NTEST() = 26
149: . :F(ST60) ;ST60
150: TEST = DIFFER(A,26) STARS
151: *
152: * CONTINUE TEST OF FUNCTIONS
153: *
154: *
155: * TEST FAILURE RETURN
156: *
157: DEFINE('FAILURE()') :(FAILEND)
158: FAILURE :(FRETURN)
159: FAILEND TEST = FAILURE() STARS
160: *
161: * TEST OPSYN FOR OPERATORS
162: *
163: OPSYN('@',.DUPL,2)
164: OPSYN('|',.SIZE,1)
165: TEST = DIFFER('A' @ 4,'AAAA') STARS
166: TEST = DIFFER(|'STRING',6) STARS
167: *
168: * TEST OUT ARRAY FACILITY
169: *
170: A = ARRAY(3)
171: TEST = DIFFER(A[1]) STARS
172: A[2] = 4.5
173: TEST = DIFFER(A[2],4.5) STARS
174: TEST = ?A[4] STARS
175: TEST = ?A[0] STARS
176: TEST = DIFFER(PROTOTYPE(A),3) STARS
177: B = ARRAY(3,10)
178: TEST = DIFFER(B[2],10) STARS
179: B = ARRAY('3')
180: B[2] = 'A'
181: TEST = DIFFER(B[2],'A') STARS
182: C = ARRAY('2,2')
183: C[1,2] = '*'
184: TEST = DIFFER(C[1,2],'*') STARS
185: TEST = DIFFER(PROTOTYPE(C),'2,2') STARS
186: D = ARRAY('-1:1,2')
187: D[-1,1] = 0
188: TEST = DIFFER(D[-1,1],0) STARS
189: TEST = ?D[-2,1] STARS
190: TEST = ?D[2,1] STARS
191: *
192: * TEST PROGRAM DEFINED DATATYPE FUNCTIONS
193: *
194: DATA('NODE(VAL,LSON,RSON)')
195: A = NODE('X','Y','Z')
196: TEST = DIFFER(DATATYPE(A),'NODE') STARS
197: TEST = DIFFER(VAL(A),'X') STARS
198: B = NODE()
199: TEST = DIFFER(RSON(B)) STARS
200: LSON(B) = A
201: TEST = DIFFER(RSON(LSON(B)),'Z') STARS
202: * TEST = DIFFER(VALUE('B'),B) STARS
203: *
204: * TEST MULTIPLE USE OF FIELD FUNCTION NAME
205: *
206: DATA('CLUNK(VALUE,LSON)')
207: TEST = DIFFER(RSON(LSON(B)),'Z') STARS
208: * TEST = DIFFER(VALUE('B'),B) STARS
209: C = CLUNK('A','B')
210: TEST = DIFFER(LSON(C),'B') STARS
211: *
212: * TEST NUMERICAL PREDICATES
213: *
214: TEST = LT(5,4) STARS
215: TEST = LT(4,4) STARS
216: TEST = ~LT(4,5) STARS
217: TEST = LE(5,2) STARS
218: TEST = ~LE(4,4) STARS
219: TEST = ~LE(4,10) STARS
220: TEST = EQ(4,5) STARS
221: TEST = EQ(5,4) STARS
222: TEST = ~EQ(5,5) STARS
223: TEST = NE(4,4) STARS
224: TEST = ~NE(4,6) STARS
225: TEST = ~NE(6,4) STARS
226: TEST = GT(4,6) STARS
227: TEST = GT(4,4) STARS
228: TEST = ~GT(5,2) STARS
229: TEST = GE(5,7) STARS
230: TEST = ~GE(4,4) STARS
231: TEST = ~GE(7,5) STARS
232: TEST = NE(4,5 - 1) STARS
233: TEST = GT(4,3 + 1) STARS
234: TEST = LE(20,5 + 6) STARS
235: TEST = EQ(1.0,2.0) STARS
236: TEST = GT(-2.0,-1.0) STARS
237: TEST = GT(-3.0,4.0) STARS
238: TEST = NE('12',12) STARS
239: TEST = NE('12',12.0) STARS
240: TEST = ~CONVERT(BAL,'PATTERN') STARS
241: *
242: * TEST INTEGER
243: *
244: TEST = INTEGER('ABC') STARS
245: TEST = ~INTEGER(12) STARS
246: TEST = ~INTEGER('12') STARS
247: *
248: * TEST SIZE
249: *
250: TEST = NE(SIZE('ABC'),3) STARS
251: TEST = NE(SIZE(12),2) STARS
252: TEST = NE(SIZE(NULL),0) STARS
253: *
254: * TEST LGT
255: *
256: TEST = LGT('ABC','XYZ') STARS
257: TEST = LGT('ABC','ABC') STARS
258: TEST = ~LGT('XYZ','ABC') STARS
259: TEST = LGT(NULL,'ABC') STARS
260: TEST = ~LGT('ABC',NULL) STARS
261: *
262: * TEST INDIRECT ADDRESSING
263: *
264: TEST = DIFFER($'BAL',BAL) STARS
265: TEST = DIFFER($.BAL,BAL) STARS
266: $'QQ' = 'X'
267: TEST = DIFFER(QQ,'X') STARS
268: TEST = DIFFER($'GARBAGE') STARS
269: A = ARRAY(3)
270: A[2] = 'X'
271: TEST = DIFFER($.A[2],'X') STARS
272: *
273: * TEST CONCATENATION
274: *
275: TEST = DIFFER('A' 'B','AB') STARS
276: TEST = DIFFER('A' 'B' 'C','ABC') STARS
277: TEST = DIFFER(1 2,'12') STARS
278: TEST = DIFFER(2 2 2,'222') STARS
279: TEST = DIFFER(1 3.4,'13.4') STARS
280: TEST = DIFFER(BAL NULL,BAL) STARS
281: TEST = DIFFER(NULL BAL,BAL) STARS
282: *
283: * TEST DREALS
284: *
285: TEST = DIFFER(1.0D2 + 2.0D2,3.0D2) STARS
286: TEST = DIFFER(2.5D0 * 2.0D0,5.00D0) STARS
287: TEST = DIFFER(3.0D0 / 3.0D0,1.0D0) STARS
288: TEST = DIFFER(4.0D0 - 3.0D0,1.0D0) STARS
289: * TEST = DIFFER(3.D0 + 1.,4.D0) STARS
290: * TEST = DIFFER(1. + 3.D0,4.D0) STARS
291: TEST = DIFFER(1.0D0 + 1,2.0D0) STARS
292: TEST = DIFFER(3 + 1.0D0,4.0D0) STARS
293: TEST = DIFFER(3.0D0 ** 3,27.0D0) STARS
294: *
295: * TEST REMDR
296: *
297: TEST = DIFFER(REMDR(10,3),1) STARS
298: TEST = DIFFER(REMDR(11,10),1) STARS
299: TEST = DIFFER(REMDR(13,7),6) STARS
300: TEST = DIFFER(REMDR(13,-7),6) STARS
301: TEST = DIFFER(REMDR(-13,7),-6) STARS
302: TEST = DIFFER(REMDR(-13,-7),-6) STARS
303: TEST = DIFFER(REMDR(13,13),0) STARS
304: TEST = DIFFER(REMDR(13,-13),0) STARS
305: TEST = DIFFER(REMDR(-13,13),0) STARS
306: TEST = DIFFER(REMDR(-13,-13),0) STARS
307: *
308: * TEST DUPL
309: *
310: TEST = DIFFER(DUPL('ABC',2),'ABCABC') STARS
311: TEST = DIFFER(DUPL(NULL,10),NULL) STARS
312: TEST = DIFFER(DUPL('ABCDEFG',0),NULL) STARS
313: TEST = DIFFER(DUPL(1,10),'1111111111') STARS
314: *
315: * TEST TABLE FACILITY
316: *
317: T = TABLE(10)
318: TEST = DIFFER(T['CAT']) STARS
319: T['CAT'] = 'DOG'
320: TEST = DIFFER(T['CAT'],'DOG') STARS
321: T[7] = 45
322: TEST = DIFFER(T[7],45) STARS
323: TEST = DIFFER(T['CAT'],'DOG') STARS
324: TA = CONVERT(T,'ARRAY')
325: TEST = DIFFER(PROTOTYPE(TA),'2,2') STARS
326: ATA = CONVERT(TA,'TABLE')
327: TEST = DIFFER(ATA[7],45) STARS
328: TEST = DIFFER(ATA['CAT'],'DOG') STARS
329: *
330: * TEST ITEM FUNCTION
331: *
332: AAA = ARRAY(10)
333: ITEM(AAA,1) = 5
334: TEST = DIFFER(ITEM(AAA,1),5) STARS
335: TEST = DIFFER(AAA[1],5) STARS
336: AAA[2] = 22
337: TEST = DIFFER(ITEM(AAA,2),22) STARS
338: AMA = ARRAY('2,2,2,2')
339: ITEM(AMA,1,2,1,2) = 1212
340: TEST = DIFFER(ITEM(AMA,1,2,1,2),1212) STARS
341: TEST = DIFFER(AMA[1,2,1,2],1212) STARS
342: AMA[2,1,2,1] = 2121
343: TEST = DIFFER(ITEM(AMA,2,1,2,1),2121) STARS
344: *
345: * TEST EVAL
346: *
347: EXPR = *('ABC' 'DEF')
348: TEST = DIFFER(EVAL(EXPR),'ABCDEF') STARS
349: Q = 'QQQ'
350: SEXP = *Q
351: TEST = DIFFER(EVAL(SEXP),'QQQ') STARS
352: FEXP = *IDENT(1,2)
353: TEST = EVAL(FEXP) STARS
354: *
355: * TRY A FEW ALTERNATIONS
356: *
357: TEST = DIFFER((GT(3,1) 3,1),3) STARS
358: TEST = DIFFER((LT(3,1) 3,1),1) STARS
359: TEST = DIFFER(EVAL(*(NE(1,2) 'A','B')),'A') STARS
360: TEST = DIFFER(EVAL(*(EQ(1,2) 'A','B')),'B') STARS
361: *
362: * TEST SUBSTR
363: *
364: TEST = DIFFER(SUBSTR('ABC',2,1),'B') STARS
365: TEST = DIFFER(SUBSTR('ABCDEF',1,5),'ABCDE') STARS
366: TEST = SUBSTR('ABC',50,1) STARS
367: TEST = SUBSTR('ABC',81,50) STARS
368: TEST = SUBSTR(NULL,1,1) STARS
369: *
370: * TEST ARG
371: *
372: JLAB DEFINE('JLAB(A,B,C)D,E,F')
373: TEST = DIFFER(ARG(.JLAB,1),.A) STARS
374: TEST = DIFFER(ARG(.JLAB,3),.C) STARS
375: $ARG(.JLAB,1) = 'QWERT'
376: TEST = DIFFER(A,'QWERT') STARS
377: TEST = ARG(.JLAB,0) STARS
378: TEST = ARG(.JLAB,4) STARS
379: *
380: * TEST LOC
381: *
382: TEST = DIFFER(LOCAL(.JLAB,1),.D) STARS
383: TEST = DIFFER(LOCAL(.JLAB,3),.F) STARS
384: TEST = LOCAL(.JLAB,0) STARS
385: TEST = LOCAL('JLAB',4) STARS
386: *
387: * TEST APPLY
388: *
389: TEST = APPLY(.EQ,1,2) STARS
390: TEST = ~APPLY(.EQ,1,1) STARS
391: TEST = ~APPLY(.EQ,0) STARS
392: TEST = ~APPLY(.EQ,1,1,1) STARS
393: TEST = ~IDENT(APPLY(.TRIM,'ABC '),'ABC') STARS
394: *
395: * FINAL PROCESSING
396: *
397: OUTPUT = '************************************************'
398: DIAGNOSTICS = 1000 - &TRACE
399: EQ(DIAGNOSTICS,0) :S(TERMINATE)
400: OUTPUT = '**** NUMBER OF ERRORS DETECTED '
401: . LPAD(DIAGNOSTICS,5) ' ****'
402: OUTPUT = '**** E N D O F D I A G N O S T I C S ****'
403: OUTPUT = '************************************************'
404: . :(END)
405: TERMINATE OUTPUT = '**** N O E R R O R S D E T E C T E D ****'
406: OUTPUT = '**** E N D O F D I A G N O S T I C S ****'
407: OUTPUT = '************************************************'
408: :(END)
409: *
410: * ERROR HANDLING ROUTINE
411: *
412: ERRORS OUTPUT = '**** ERROR AT '
413: . LPAD(&LASTNO,4) ' &ERRTYPE = ' LPAD(&ERRTYPE,7,' ')
414: . ' ****'
415: OUTPUT = ' &ERRTEXT = ' &ERRTEXT
416: DUMP(1)
417: &TRACE = &TRACE - 1
418: SETEXIT(.ERRORS) :(CONTINUE)
419: END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.