$CPU 8086 ' make compatible with XT systems $LIB ALL OFF ' turn off all PowerBASIC libraries $ERROR ALL OFF ' turn off all PowerBASIC error checking $OPTIMIZE SIZE ' optimize for smaller code $COMPILE UNIT ' compile to a UNIT (.PBU) '$COMPILE EXE ' compile to a UNIT (.PBU) DEFINT A-Z ' Required for all numeric functions, forces PB to not ' include floating point in UNIT (makes it smaller) '/*------------------------------------------------------------------*/ DECLARE FUNCTION CENTER(BYVAL X AS STRING, BYVAL L AS INTEGER, BYVAL PAD AS STRING) AS STRING DECLARE SUB GETFIELD(BYVAL MN AS STRING, MF$()) DECLARE FUNCTION GETMEM(BYVAL FI AS STRING ) AS STRING DECLARE SUB PUTSCREEN(BYVAL X AS STRING) DECLARE SUB SAY(BYVAL Row AS INTEGER, BYVAL Col AS INTEGER, BYVAL Text AS STRING, BYVAL Attr AS INTEGER) DECLARE FUNCTION STRIP(BYVAL X AS STRING, BYVAL OPT AS STRING, BYVAL CHAR AS STRING) AS STRING DECLARE FUNCTION WORDINDEX(BYVAL X AS STRING, BYVAL NBR AS INTEGER) AS INTEGER DECLARE FUNCTION WORD(BYVAL X AS STRING,XN AS INTEGER) AS STRING DECLARE FUNCTION WORDS(BYVAL X AS STRING) AS INTEGER '/*------------------------------------------------------------------*/ $CODE SEG "MLIB6" '/*------------------------------------------------------------------*/ DECLARE SUB LGEDIT(EL AS STRING , BYVAL TPE AS STRING, BYVAL ROW AS INTEGER, BYVAL COL AS INTEGER, BYVAL ELTH AS INTEGER,BYVAL ATTR AS INTEGER, RKEY$,BYVAL WS AS INTEGER) SUB MFEDIT(SFSCRN$,A$(),RKEY$,EATTR,SF) PUBLIC REDIM D$(50) REDIM ROW(50) REDIM COL(50) REDIM LTH(50) REDIM FPIC$(50) REDIM FMSG$(50) REDIM FERR$(50) REDIM FEDT$(50) REDIM FCD$(50) REDIM FIC$(50) REDIM FEX$(50) REDIM OPT$(50) REDIM FATTR(50) RHOLD$ = RKEY$ GETFIELD SFSCRN$,D$() EFNBR = VAL(D$(0)) FOR CNT = 1 TO EFNBR ROW(CNT) = VAL(WORD(D$(CNT),2)) COL(CNT) = VAL(WORD(D$(CNT),3)) LTH(CNT) = VAL(WORD(D$(CNT),5)) FATTR(CNT) = VAL(WORD(D$(CNT),4)) S = WORDINDEX(D$(CNT),6) PM$ = MID$(D$(CNT),S,7) OPT$(CNT) = "" IF MID$(PM$,1,1) = "Y" THEN OPT$(CNT) = OPT$(CNT) + " DEXIT " IF MID$(PM$,5,1) = "B" THEN OPT$(CNT) = OPT$(CNT) + " STRIP " IF MID$(PM$,6,1) = "L" THEN OPT$(CNT) = OPT$(CNT) + " LOWER " IF MID$(PM$,6,1) = "U" THEN OPT$(CNT) = OPT$(CNT) + " UPPER " '/* --- Get PIC --- T = INSTR(1,D$(CNT),"|") FPIC$(CNT) = MID$(D$(CNT),T+1,72) IF WORDS(FPIC$(CNT)) = 0 THEN FPIC$(CNT) = "" ELSE FPIC$(CNT) = STRIP(FPIC$(CNT),"B"," ") '/* --- Get MSG --- S = INSTR(T+1,D$(CNT),"|") FMSG$(CNT) = MID$(D$(CNT),S+1,72) IF WORDS(FMSG$(CNT)) = 0 THEN FMSG$(CNT) = "" ELSE FMSG$(CNT) = STRIP(FMSG$(CNT),"B"," ") '/* --- Get ERR --- T = INSTR(S+1,D$(CNT),"|") FERR$(CNT) = MID$(D$(CNT),T+1,72) IF WORDS(FERR$(CNT)) = 0 THEN FERR$(CNT) = "" ELSE FERR$(CNT) = STRIP(FERR$(CNT),"B"," ") '/* --- Get EDIT --- S = INSTR(T+1,D$(CNT),"|") FEDT$(CNT) = MID$(D$(CNT),S+1,14) IF WORDS(FEDT$(CNT)) = 0 THEN FEDT$(CNT) = "" ELSE FEDT$(CNT) = STRIP(FEDT$(CNT),"B"," ") '/* --- Get CODE --- T = INSTR(S+1,D$(CNT),"|") FCD$(CNT) = MID$(D$(CNT),T+1,14) IF WORDS(FCD$(CNT)) = 0 THEN FCD$(CNT) = "" ELSE FCD$(CNT) = STRIP(FCD$(CNT),"B"," ") '/* --- Get INCLUDE --- S = INSTR(T+1,D$(CNT),"|") FIC$(CNT) = MID$(D$(CNT),S+1,14) IF WORDS(FIC$(CNT)) = 0 THEN FIC$(CNT) = "" ELSE FIC$(CNT) = STRIP(FIC$(CNT),"B"," ") '/* --- Get EXCLUDE --- T = INSTR(S+1,D$(CNT),"|") FEX$(CNT) = MID$(D$(CNT),T+1,14) IF WORDS(FEX$(CNT)) = 0 THEN FEX$(CNT) = "" ELSE FEX$(CNT) = STRIP(FEX$(CNT),"B"," ") NEXT CNT '/* --- Display Screen --- PUTSCREEN GETMEM(SFSCRN$+".MEM") '/* --- Display Fields --- FOR CNT = 1 TO EFNBR SAY ROW(CNT)+1,COL(CNT)+1,A$(CNT),FATTR(CNT) NEXT CNT IF SF = 0 THEN SF = 1 DO RKEY$ = RHOLD$ + CHR$(0,72,0,80,13) IF FMSG$(SF) <> "" THEN SAY 25,1,CENTER(FMSG$(SF),80," "),EATTR ELSE SAY 25,1,CENTER(" ",80," "),0 END IF LGEDIT A$(SF),OPT$(SF),ROW(SF)+1,COL(SF)+1,LTH(SF),EATTR,RKEY$,0 SAY ROW(SF)+1,COL(SF)+1,A$(SF),FATTR(SF) S = INSTR(1,RHOLD$,RKEY$) IF S > 0 THEN EXIT LOOP IF FIC$(SF) <> "" AND INSTR(1,FIC$(SF),A$(SF)) < 1 THEN ITERATE '/* --- Down Arrow --- IF RKEY$ = CHR$(0,80) OR RKEY$ = CHR$(13) THEN IF SF+1 > EFNBR THEN SF = 1 ITERATE ELSE SF = SF + 1 ITERATE END IF END IF '/* --- Up Arrow --- IF SF-1 < 1 THEN SF = EFNBR ITERATE ELSE SF = SF - 1 ITERATE END IF LOOP UNTIL S > 0 END SUB '/*------------------------------------------------------------------*/ ' $INCLUDE "C:\CODE\MLIB\MLIB.INC" ' RKEY$ = CHR$(27) ' MFEDIT "C:\CODE\LDS\DMENU50",A$(),RKEY$,31,0 '/*------------------------------------------------------------------*/