Annotation of researchv10no/cmd/spitbol/test1.spt, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.