home *** CD-ROM | disk | FTP | other *** search
- 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