51000 XOUT$ = "": IF XDATE THEN XLEN=8:XNUM=1:XMUST=8:XRANGE=0 ELSE IF XYORN THEN XLEN=1:XMUST=1:XCONV=1
51010 'IF THIS RUNS TO SLOWLY, THE NEXT 6 LINES MAY BE DELETED.
51020 XFLAG=0:IF XROW<1 OR XROW>25 THEN XFLAG=1 ELSE IF XCOL<1 OR XCOL>79 THEN XFLAG=2 ELSE IF XLEN<1 OR XLEN>79 THEN XFLAG=3 ELSE IF XNUM<>0 AND XNUM<>1 THEN XFLAG=4
51030 IF XDATE<>0 AND XDATE<>1 THEN XFLAG=5 ELSE IF XPRIV<>0 AND XPRIV<>1 THEN XFLAG=6 ELSE IF XCONV<>0 AND XCONV<>1 THEN XFLAG=7 ELSE IF XMUST<0 OR XMUST>79 THEN XFLAG=8
51040 IF XRANGE<>0 AND XRANGE<>1 THEN XFLAG=9 ELSE IF XFMT<>0 AND XFMT<>1 THEN XFLAG=10 ELSE IF XCUR<>0 AND XCUR<>1 THEN XFLAG=11 ELSE IF XSTART<0 OR XSTART>7 THEN XFLAG=12 ELSE IF XSTOP<0 OR XSTOP>7 THEN XFLAG=13
51050 IF XCHAR<1 OR XCHAR>254 THEN XFLAG=14 ELSE IF XFREQ<37 OR XFREQ>32767 THEN XFLAG=15 ELSE IF XDUR<.0015 OR XDUR>65535! THEN XFLAG=16
51060 IF XCOL+XLEN>79 THEN XFLAG=17 ELSE IF XMUST>XLEN THEN XFLAG=18 ELSE IF XYORN<>0 AND XYORN<>1 THEN XFLAG=19 ELSE IF XCONF <>0 AND XCONF<>1 THEN XFLAG=20
51070 IF XFLAG<>0 THEN PRINT "ERROR ENCOUNTERD IN SUBROUTINE: XFLAG =";XFLAG:END
51080 LOCATE XROW,XCOL,XCUR,XSTART,XSTOP: IF XPRIV THEN PRINT STRING$(XLEN,XCHAR); : ELSE PRINT XOUT$ + STRING$(XLEN-LEN(XOUT$),XCHAR);
51090 IF XCONF=0 THEN IF LEN(XOUT$)=XLEN THEN 51210
51110 A$ = INKEY$ : IF A$ = "" THEN 51110 ELSE A=ASC(A$) 'GET 1 CHAR
51120 IF A=8 AND LEN(XOUT$)=0 THEN GOSUB 51340: GOSUB 51390: GOTO 51080
51130 IF (A=8 AND XDATE<>1) OR (A=8 AND XDATE=1 AND (LEN(XOUT$)=1 OR LEN(XOUT$)=4 OR LEN(XOUT$)=7 OR LEN(XOUT$)=8)) OR A<>8 THEN 51140 ELSE XOUT$=LEFT$(XOUT$,LEN(XOUT$)-2):GOTO 51080 'BACKSPACES
51140 IF A=8 THEN IF LEN(XOUT$)=0 THEN GOSUB 51340: GOSUB 51390: GOTO 51080 ELSE GOTO 51410
51150 IF A<>13 AND LEN(XOUT$) = XLEN THEN GOSUB 51340:PRINT "TO MANY CHARACTERS...";:GOTO 51080
51160 IF A=13 THEN IF XMUST<=LEN(XOUT$) THEN 51210 ELSE GOSUB 51340:PRINT "NOT ENOUGH CHARACTERS...";:GOTO 51080
51170 IF XDATE AND (A=46 OR A=45) THEN GOSUB 51340: GOSUB 51390: GOTO 51080
51180 IF XNUM THEN IF A>44 AND A<58 AND A<>47 THEN XOUT$=XOUT$+A$:IF XDATE THEN IF LEN(XOUT$)=2 OR LEN(XOUT$)=5 THEN XOUT$=XOUT$+"/":GOTO 51080:ELSE GOTO 51080:ELSE GOTO 51080:ELSE GOSUB 51340:GOSUB 51390:GOTO 51080
51190 IF XCONV AND A>96 AND A<123 THEN A=ASC(A$)-32 : A$=CHR$(A)
51200 IF A>31 AND A<127 THEN XOUT$=XOUT$ + A$ : GOTO 51080 ELSE GOSUB 51340: GOSUB 51390: GOTO 51080
51210 'CHECK FINAL ANSWER
51220 IF XYORN THEN IF XOUT$="Y" OR XOUT$="N" THEN 51350 ELSE GOSUB 51340:PRINT "MUST RESPOND EITHER Y OR N";:GOTO 51410
51230 IF XDATE<>1 THEN IF XNUM AND LEFT$(XOUT$,1)="-" THEN IF XOUT$=STR$(VAL(XOUT$)) THEN 51250 ELSE GOSUB 51340:PRINT "NOT NUMERIC....";:GOTO 51410
51240 IF XDATE<>1 THEN IF XNUM THEN IF LEN(STR$(VAL(XOUT$)))-1 < LEN(XOUT$) THEN GOSUB 51340:PRINT "NOT NUMERIC...";:GOTO 51410
51250 IF XNUM AND XRANGE THEN IF VAL(XOUT$)>=XMIN AND VAL(XOUT$)<=XMAX THEN 51350 ELSE GOSUB 51340:PRINT "MIN =";XMIN;" MAX =";XMAX;:GOTO 51410
51260 IF XDATE AND XFMT THEN 51270 ELSE 51350
51270 TMP1=VAL(LEFT$(XOUT$,2)): IF TMP1>12 OR TMP1<1 THEN 51330
51280 TMP2=VAL(MID$(XOUT$,4,2)): IF TMP2<1 OR TMP2>31 THEN 51330
51290 IF (TMP1=4 OR TMP1=6 OR TMP1=9 OR TMP1=11) AND TMP2>30 THEN 51330
51300 TMP3=VAL(RIGHT$(XOUT$,2))
51310 IF TMP1=2 AND TMP2>29 AND TMP3 MOD 4 = 0 THEN 51330
51320 IF TMP1=2 AND TMP2>28 AND TMP3 MOD 4 > 0 THEN 51330 ELSE 51350
51330 GOSUB 51340: PRINT "FORMAT IS MM/DD/YY";:GOTO 51410