home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / basic / mbasedit.bqs / MBASEDIT.BAS
Encoding:
BASIC Source File  |  1985-02-09  |  2.8 KB  |  74 lines

  1. 10 :REM********************* MBASEDIT.BAS ************************
  2. 20 :REM*        AL BRENDEL 3/15/81
  3. 30 :REM* A DATA ENTRY AND EDITING SUBROUTINE FOR MBASIC 5.X
  4. 40 :REM* FOR TERMINALS WITH OR WITHOUT CURSOR CONTROL
  5. 50 :REM* ESPECIALLY USEFUL FOR GETTING OR EDITING DATA WITH FIXED
  6. 60 :REM* FIELD LENGTHS FOR FORM PRINTING OR RANDOM ACCESS FILES
  7. 70 :REM* ( SEE ALSO CBASEDIT.BAS FOR C-BASIC2 VERSION )
  8. 80 :REM* 
  9. 90 :REM*************** TEST OF THE BASEDIT FUNCTION *******************
  10. 100 :REM
  11. 110 DATA NUMBER 1 = ,12345,10
  12. 120 DATA NUMBER 2 = ,1234567890,20
  13. 130 DATA NUMBER 3 = ,ABCDEFG,30
  14. 140 FOR X=1 TO 3
  15. 150 READ MSG$,NAM$,LENGTH
  16. 160 GOSUB 1000
  17. 170 ANS$(X)=NAM$
  18. 180 NEXT
  19. 190 PRINT ANS$(1),ANS$(2),ANS$(3)
  20. 200 END
  21. 1000 :     REM ********** GET DATA AND EDIT FUNCTION *************
  22. 1010 :     REM *TYPICAL APPLICATION:
  23. 1020 :     REM    MSG$="EDIT..":NAM$="1234":LENGTH=20:GOSUB 1000
  24. 1030 :     REM        'PRINTS MSG AND THEN ALLOWS
  25. 1040 :     REM        'ENTRY OR MODIFICATION OF NAM$ AND
  26. 1050 :     REM        'SHOWS LENGTH OF FIELD
  27. 1060 :     REM        'EDITING COMMANDS INCLUDE:
  28. 1070 :     REM            'MOVE CURSER RIGHT..    >
  29. 1080 :     REM            'MOVE CURSER LEFT...    < OR BS(^H)
  30. 1090 :     REM            'DELETE CHARACTER...    DEL
  31. 1100 :     REM            'INSERT CHARACTER...    ^
  32. 1110 :     REM            'RETURN TO PROGRAM...    CR
  33. 1120 :         NAM$=NAM$+STRING$(LENGTH-LEN(NAM$),42)
  34. 1130 :         PRINT MSG$;": ";NAM$+STRING$(LENGTH,8);
  35. 1140 :         FOR NUM = 1 TO LENGTH
  36. 1150 :         ANS%=ASC(INPUT$(1)):PRINT CHR$(ANS%);
  37. 1160 :         IF ANS%=13 THEN GOTO 1280
  38. 1170 :         IF ANS%=8 AND NUM=1 THEN PRINT
  39.  
  40.              CHR$(32)+MID$(NAM$,NUM,1)+CHR$(8);
  41.  
  42.              :NUM=NUM-1:GOTO 1270
  43. 1180 :         IF ANS%=8 THEN NUM=NUM-2 :GOTO 1270
  44. 1190 :        IF ANS%=62 AND NUM=LENGTH THEN PRINT CHR$(8)
  45.  
  46.             +MID$(NAM$,NUM,1)+CHR$(8)+CHR$(7);
  47.  
  48.             :NUM=NUM-1:GOTO 1270
  49. 1200 :         IF ANS%=62 THEN PRINT CHR$(8)+ MID$(NAM$,NUM,1);:GOTO 1270
  50. 1210 :         IF ANS%=60 AND NUM>1 THEN PRINT CHR$(8)+
  51.  
  52.              MID$(NAM$,NUM,1)+CHR$(8)+CHR$(8);
  53.  
  54.              :NUM=NUM-2:GOTO 1270
  55. 1220 :         IF ANS%=60 AND NUM=1 THEN PRINT CHR$(8)
  56.  
  57.             +MID$(NAM$,NUM,1)+CHR$(8); 
  58.  
  59.             :NUM=NUM-1:GOTO 1270
  60. 1230 :         IF ANS%=94 THEN NAM$=LEFT$(NAM$,NUM-1)
  61.  
  62.              +" "+MID$(NAM$,NUM,LENGTH-NUM)
  63.  
  64.              :PRINT CHR$(8)+RIGHT$(NAM$,LENGTH-NUM+1)
  65.  
  66.              +STRING$(LENGTH-NUM+1,8);
  67.  
  68.              :NUM=NUM-1:GOTO 1270
  69. 1240 :         IF ANS%=127 THEN NAM$=LEFT$(NAM$,NUM-1)
  70.  
  71.              +RIGHT$(NAM$,LENGTH-NUM)+"*"
  72.  
  73.              :PRINT RIGHT$(NAM$,LENGTH-NUM+1)
  74.  
  75.              +STRING$(LENGTH-NUM+1,8);
  76.  
  77.              :NUM=NUM-1:GOTO 1270
  78. 1250 :         NAM$=LEFT$(NAM$,NUM-1) +CHR$(ANS%)+RIGHT$(NAM$,LENGTH-NUM)
  79. 1260 :         IF NUM=LENGTH THEN PRINT CHR$(7)+CHR$(8);:NUM=NUM-1
  80. 1270 :         NEXT NUM
  81. 1280 :         FOR NUM=1 TO LENGTH
  82. 1290 :             IF MID$(NAM$,NUM,1)="*" THEN NAM$= 
  83.  
  84.                 LEFT$(NAM$,NUM-1)+" "
  85.  
  86.                 +RIGHT$(NAM$,LENGTH-NUM)
  87. 1300 :         NEXT NUM
  88. 1310 :         PRINT MSG$;": ";NAM$
  89. 1320 :         RETURN
  90. 1330 : 
  91. FT$(NAM$,NUM-1)+" "
  92.  
  93.                 +RIGHT$(NAM$,LENGTH-NU