10 :REM********************* MBASEDIT.BAS ************************ 20 :REM* AL BRENDEL 3/15/81 30 :REM* A DATA ENTRY AND EDITING SUBROUTINE FOR MBASIC 5.X 40 :REM* FOR TERMINALS WITH OR WITHOUT CURSOR CONTROL 50 :REM* ESPECIALLY USEFUL FOR GETTING OR EDITING DATA WITH FIXED 60 :REM* FIELD LENGTHS FOR FORM PRINTING OR RANDOM ACCESS FILES 70 :REM* ( SEE ALSO CBASEDIT.BAS FOR C-BASIC2 VERSION ) 80 :REM* 90 :REM*************** TEST OF THE BASEDIT FUNCTION ******************* 100 :REM 110 DATA NUMBER 1 = ,12345,10 120 DATA NUMBER 2 = ,1234567890,20 130 DATA NUMBER 3 = ,ABCDEFG,30 140 FOR X=1 TO 3 150 READ MSG$,NAM$,LENGTH 160 GOSUB 1000 170 ANS$(X)=NAM$ 180 NEXT 190 PRINT ANS$(1),ANS$(2),ANS$(3) 200 END 1000 : REM ********** GET DATA AND EDIT FUNCTION ************* 1010 : REM *TYPICAL APPLICATION: 1020 : REM MSG$="EDIT..":NAM$="1234":LENGTH=20:GOSUB 1000 1030 : REM 'PRINTS MSG AND THEN ALLOWS 1040 : REM 'ENTRY OR MODIFICATION OF NAM$ AND 1050 : REM 'SHOWS LENGTH OF FIELD 1060 : REM 'EDITING COMMANDS INCLUDE: 1070 : REM 'MOVE CURSER RIGHT.. > 1080 : REM 'MOVE CURSER LEFT... < OR BS(^H) 1090 : REM 'DELETE CHARACTER... DEL 1100 : REM 'INSERT CHARACTER... ^ 1110 : REM 'RETURN TO PROGRAM... CR 1120 : NAM$=NAM$+STRING$(LENGTH-LEN(NAM$),42) 1130 : PRINT MSG$;": ";NAM$+STRING$(LENGTH,8); 1140 : FOR NUM = 1 TO LENGTH 1150 : ANS%=ASC(INPUT$(1)):PRINT CHR$(ANS%); 1160 : IF ANS%=13 THEN GOTO 1280 1170 : IF ANS%=8 AND NUM=1 THEN PRINT CHR$(32)+MID$(NAM$,NUM,1)+CHR$(8); :NUM=NUM-1:GOTO 1270 1180 : IF ANS%=8 THEN NUM=NUM-2 :GOTO 1270 1190 : IF ANS%=62 AND NUM=LENGTH THEN PRINT CHR$(8) +MID$(NAM$,NUM,1)+CHR$(8)+CHR$(7); :NUM=NUM-1:GOTO 1270 1200 : IF ANS%=62 THEN PRINT CHR$(8)+ MID$(NAM$,NUM,1);:GOTO 1270 1210 : IF ANS%=60 AND NUM>1 THEN PRINT CHR$(8)+ MID$(NAM$,NUM,1)+CHR$(8)+CHR$(8); :NUM=NUM-2:GOTO 1270 1220 : IF ANS%=60 AND NUM=1 THEN PRINT CHR$(8) +MID$(NAM$,NUM,1)+CHR$(8); :NUM=NUM-1:GOTO 1270 1230 : IF ANS%=94 THEN NAM$=LEFT$(NAM$,NUM-1) +" "+MID$(NAM$,NUM,LENGTH-NUM) :PRINT CHR$(8)+RIGHT$(NAM$,LENGTH-NUM+1) +STRING$(LENGTH-NUM+1,8); :NUM=NUM-1:GOTO 1270 1240 : IF ANS%=127 THEN NAM$=LEFT$(NAM$,NUM-1) +RIGHT$(NAM$,LENGTH-NUM)+"*" :PRINT RIGHT$(NAM$,LENGTH-NUM+1) +STRING$(LENGTH-NUM+1,8); :NUM=NUM-1:GOTO 1270 1250 : NAM$=LEFT$(NAM$,NUM-1) +CHR$(ANS%)+RIGHT$(NAM$,LENGTH-NUM) 1260 : IF NUM=LENGTH THEN PRINT CHR$(7)+CHR$(8);:NUM=NUM-1 1270 : NEXT NUM 1280 : FOR NUM=1 TO LENGTH 1290 : IF MID$(NAM$,NUM,1)="*" THEN NAM$= LEFT$(NAM$,NUM-1)+" " +RIGHT$(NAM$,LENGTH-NUM) 1300 : NEXT NUM 1310 : PRINT MSG$;": ";NAM$ 1320 : RETURN 1330 : FT$(NAM$,NUM-1)+" " +RIGHT$(NAM$,LENGTH-NU