(* Procedure *******************************************************) (* KeyDB.INC, v. 0500pm, wed, 10.Sep.86, Glen Ellis *) (* (* parameters sent: (* (* (OutLine, IndentPos, IndentNum , LenMax, MarkWrite ); (* SIP SIN SLM SMW (* SLI, SLC, SLW *) procedure pKEYDB( var kLINE : THEstr ; var kIPOS : nbr; kINUM, kLenMax :nbr; var KMwrite : lgc ; kLI, kLC, kLW : nbr); (* also, uses SysComment (* (* requires STRING.INC library of string functions (* all are var in order to allow sending back altered values (* kLINE := OutLine (* kIPOS := indentpos = current indent position (* kINUM := indentnum = length of indent group (* KMwrite := KMwrite = controls write to disk *) var (* local memvars *) wkLINE : THEstr; KMark : lgc; x,y,z : nbr; (*--------------------------------------------------------*) begin (* P *) (* trim left spaces,prep for pad left *) pTRIML(kLINE); (* blank line *) IF SysVertiate then IF (kline = ' ') or (kline = '') then kLINE := '*'; (* create working line *) wkLINE := kLINE; (* init *) KMark := false; KMwrite := true; (* convert working line to all caps *) pAllCaps(wkLINE); (*-------------------------------*) (* check for pos() of pKEYWORDs *) (*---------*) (* Comment *) IF (pos('*',wkLINE) = 1) or (length(wkLINE) = 0) then begin IF SysComment then begin pINDENT(kLINE,kIPOS,kLenMax); end ELSE begin KMwrite := false; end; KMark := true; end; (*----*) (* IF *) IF pos('IF',wkLINE) = 1 then begin pINDENT(kLINE,kIPOS,kLenMax); kIPOS := kIPOS + kINUM; KLI := KLI + 1; KMark := true; end; (* ELSE *) IF pos('ELSE',wkLINE) = 1 then begin kIPOS := kIPOS - kINUM; pINDENT(kLINE,kIPOS,kLenMax); kIPOS := kIPOS + kINUM; KMark := true; end; (* ENDIF *) IF pos('ENDI',wkLINE) = 1 then begin KLI := KLI -1; kIPOS := kIPOS - kINUM; pINDENT(kLINE,kIPOS,kLenMax); KMark := true; end; (*---------*) (* DO CASE *) IF pos('DO CASE',wkLINE) = 1 then begin pINDENT(kLINE,kIPOS,kLenMax); KLC := KLC + 1; kIPOS := kIPOS + kINUM + kINUM; KMark := true; end; (* CASE OTHERWISE *) IF pos('CASE',wkLINE) or pos('OTHE',wkLINE) = 1 then begin kIPOS := kIPOS - kINUM; pINDENT(kLINE,kIPOS,kLenMax); kIPOS := kIPOS + kINUM; KMark := true; end; (* ENDCASE *) IF pos('ENDC',wkLINE) = 1 then begin KLC := KLC -1; kIPOS := kIPOS -kINUM -kINUM; pINDENT(kLINE,kIPOS,kLenMax); KMark := true; end; (*----------*) (* DO WHILE *) IF pos('DO WHIL',wkLINE) = 1 then begin pINDENT(kLINE,kIPOS,kLenMax); KLW := KLW + 1; kIPOS := kIPOS + kINUM; KMark := true; end; (* ENDDO *) IF pos('ENDD',wkLINE) = 1 then begin KLW := KLW -1; kIPOS := kIPOS - kINUM; pINDENT(kLINE,kIPOS,kLenMax); KMark := true; end; (*----------------*) (* none of above *) IF not(KMark) then begin (* left pad current kIPOS count *) pINDENT(kLINE,kIPOS,kLenMax); end; end; (* proc *) (********************************************************************) (*:B:0*) (*:B:0*) (*:B:0*) (*:B:0*) (*:B:0*)