1000 ! TSTINF - Display Return Codes for INFLD.SBR From Microsabio 1005 1010 ! **** Written 12/87 by Brion Norton **** 1015 ! **** Seattle Refrigeration & Manufacturing **** 1020 ! **** Seattle, Washington **** 1025 1030 ! This program is intended as an instructional tool for teaching 1035 ! programmers the basics of using INFLD.SBR to enter data in a 1040 ! BASIC program. INFLD has many features beyond those that can 1045 ! be tested in this program. 1050 1055 ! Program uses INFLD.SBR to enter parameters for INFLD.SBR 1060 ! No other external subroutines are called 1065 1070 MAP1 INPUT'PARMS 1075 MAP2 EXCODE,F ! Exit Code 1080 MAP2 INXCTL,F ! Input Control (see AlphaAccounting INPUT) 1085 MAP2 REPEAT,F,,0 ! Default Control 1090 MAP2 TIMER,F,,0 ! Time-out Value (seconds) 1095 MAP2 ENTRY,S,50 ! Input Buffer 1100 MAP1 I'CTLX 1105 MAP2 IROW,S,2 ! Screen Row 1110 MAP2 COM1,S,1 ! Delimiter 1115 MAP2 ICOL,S,2 ! Screen Column 1120 MAP2 COM2,S,1 ! Delimiter 1125 MAP2 IMAX,S,2 ! Maximum Field Length 1130 MAP2 COM3,S,1 ! Delimiter 1135 MAP2 IMIN,S,2 ! Minimum Field Length 1140 MAP2 COM4,S,1 ! Delimiter 1145 MAP2 ITYP,S,24 ! Data Field Type Code(s) 1150 MAP1 ICTL,S,36,@I'CTLX ! Entry Control Variable 1155 1160 MAP1 MISCELLANY 1165 MAP2 DTIM,F ! Data Entry Time-out (seconds) 1170 MAP2 L,F ! String Length 1175 MAP2 X,F ! Work Variable 1180 MAP2 BLNK15,S,15,SPACE$(15) 1185 MAP2 DMAX,S,2 ! Data Field Maximum Size 1190 MAP2 DMIN,S,2 ! Data Field Minimum size 1195 MAP2 DTYP,S,10 ! Data Field Type Code(s) 1200 1205 ! =======================[ BEGIN PROGRAM ]======================== 1210 1215 BEGIN: 1220 PRINT TAB(-1,0); TAB(1,21); "INFLD.SBR Return Codes and Data Formats"; 1225 PRINT TAB(1,63); TAB(-1,33); TAB(1,18); TAB(-1,32); 1230 TIMER = 0 1235 TYP: 1240 PRINT TAB(4,24); " DATA TYPE: "; TAB(-1,9); 1245 REPEAT = 1 : ENTRY = DTYP ! load default type 1250 ICTL = "04,41,10,01,A]:" : CALL INPUT ! position cursor, enter data 1255 DTYP = ENTRY ! load type variable 1260 MAX: 1265 PRINT TAB(6,24); "MAX FIELD SIZE: "; TAB(-1,9); 1270 REPEAT = 1 : ENTRY = STR(VAL(DMAX)) ! load default maximum size 1275 ICTL = "06,41,02,00,#3:" : CALL INPUT ! position cursor, enter data 1280 X = VAL(ENTRY) : IF (X > 38) THEN & CALL TOO'BIG : GOTO MAX ! too big for screen display 1285 DMAX = STR(X) USING "#Z" ! load maximum size variable 1290 IF (EXCODE = 3) THEN GOTO TYP ! up arrow to data type 1295 MIN: 1300 PRINT TAB(7,24); "MIN FIELD SIZE: "; TAB(-1,9); 1305 REPEAT = 1 : ENTRY = STR(VAL(DMIN)) ! load dafult minimum size 1310 ICTL = "07,41,02,00,#3:" : CALL INPUT ! position cursor, enter data 1315 X = VAL(ENTRY) 1320 DMIN = STR(X) USING "#Z" ! load minimum size variable 1325 IF (EXCODE = 3) THEN GOTO MAX ! up arrow to maximum size 1330 TIM: 1335 PRINT TAB(9,24); " TIME-OUT TIME: "; TAB(-1,9); 1340 REPEAT = 1 : ENTRY = STR(DTIM) ! load dafault time-out 1345 ICTL = "09,41,03,00,#3:" : CALL INPUT ! position cursor, enter data 1350 DTIM = VAL(ENTRY) ! load time-out variable 1355 IF (EXCODE = 3) THEN GOTO MIN ! up arrow to minimum size 1360 ICTL = "13,41,00,00," ! start loading control field 1365 IMAX = DMAX : IMIN = DMIN : ITYP = DTYP : TIMER = DTIM 1370 PRINT TAB(11,24); " CONTROL CODE: "; ICTL; TAB(-1,9); 1375 PRINT TAB(13,24); "KEYBOARD ENTRY: "; TAB(-1,9); 1380 IF (TIMER => 1) THEN CALL INPTIM ELSE CALL INPUT 1385 L = LEN(ENTRY) 1390 PRINT TAB(15,4); "( Length = "; STR(L); " )"; 1395 PRINT TAB(15,24); " INPUT BUFFER: "; ENTRY; 1400 PRINT TAB(17,24); " INPUT CONTROL: "; STR(INXCTL); 1405 PRINT TAB(19,24); " EXIT CODE: "; STR(EXCODE); 1410 PRINT TAB(23,17); "Press RETURN To Continue "; & "or ESCAPE To Quit"; TAB(-1,10); & TAB(23,55); TAB(-1,33); TAB(23,46); TAB(-1,32); & TAB(23,31); TAB(-1,33); TAB(23,22); TAB(-1,32); 1415 ICTL = "23,65,01,00,CI1:" : CALL INPUT 1420 IF (EXCODE = 1) THEN GOTO FINISH 1425 PRINT TAB(19,41); TAB(-1,9); 1430 PRINT TAB(17,41); TAB(-1,9); 1435 PRINT TAB(15,4); BLNK15; TAB(15,41); TAB(-1,9); 1440 GOTO TYP 1445 1450 ! =======================[ END OF PROGRAM ]======================= 1455 1460 FINISH: 1465 PRINT TAB(21,1); TAB(-1,10); 1470 PRINT TAB(22,31); "<<<< FINISH >>>>"; & TAB(22,44); TAB(-1,33); TAB(22,35); TAB(-1,32) 1475 END 1480 1485 ! ====================[ UTILITY SUBROUTINES ]===================== 1490 1495 ! * Call External INFLD.SBR For Data Input * 1500 1505 INPUT: 1510 XCALL INFLD,IROW,ICOL,IMAX,IMIN,ITYP,ENTRY,INXCTL,1,REPEAT,EXCODE 1515 REPEAT = 0 1520 RETURN 1525 1530 ! * Data Entry With Time-Out * 1535 1540 INPTIM: 1545 XCALL INFLD,IROW,ICOL,IMAX,IMIN,ITYP,ENTRY,INXCTL,1,REPEAT,EXCODE,TIMER 1550 REPEAT = 0 1555 RETURN 1560 1565 ! * Message: Field Size Is Too Big For Screen * 1570 1575 TOO'BIG: 1580 PRINT TAB(24,5); "SORRY, IT WON'T FIT ON THE SCREEN"; CHR$(7); 1585 PRINT TAB(24,51); "Press RETURN To Continue"; CHR$(7); 1590 ICTL = "24,77,01,00,C:" : CALL INPUT 1595 PRINT TAB(24,1); TAB(-1,9); 1600 RETURN 1605 1610 ! End of Program