SBP ****************************************************** FILEDEF - Generate File Creation Subroutine ****************************************************** Ian Cunningham, Straker Systems Ltd main() FileDef()  ==========================================================* FileDef() ==========================================================* W_err%%0 A_Init(W_err%%) O(W_err%%)p B_GetParms(W_err%%,W_sbd$,W_sbp$) O(W_err%%)p C_MakeDef(W_err%%,W_sbd$,W_sbp$) Z_EndProg()  ==========================================================* A_Init(W_err%%) ==========================================================* A00Init: _'Set Default handling on t: 0:e {@1,1"Create Program Source from File Definition v.1a (c) Straker Systems Ltd 1995" A99ExitSub:  ==========================================================* B_GetParms(W_err%%,W_sbd$,W_sbp$) ==========================================================* B00Init: {@1,8"Enter Q to quit." B10Ask1: :~@1,10"Enter name of existing file (e.g. MYFILE ) : ";W_sbd$ W_sbd$""p :wB10Ask1 W_sbd$>(W_sbd$) W_sbd$"Q"p W_err%%1:wB99ExitSub B20Test: O(-(F(W_sbd$),4)".SBD")p W_sbd$W_sbd$".SBD" OJ(W_sbd$)p "File "W_sbd$" not found!","",2 wB10Ask1 B30Ask2: :~@1,11"Enter name of target file (e.g. NEWFILE) : ";W_sbp$ W_sbp$""p :wB30Ask2 W_sbp$>(W_sbp$) W_sbp$"Q"p W_err%%1:wB99ExitSub B40Test: O(-(F(W_sbp$),4)".SBP")p W_sbp$W_sbp$".SBP" J(W_sbp$)p "OK to overwrite file "W_sbp$"?","",1,W_i%% W_i%%0p wB30Ask2   B50OK: "OK to continue?","",1,W_i%% W_i%%0p W_err%%1:wB99ExitSub B99ExitSub:  ==========================================================* C_MakeDef(W_err%%,W_sbd$,W_sbp$) ==========================================================* C00Init: W_q$(34) :{@1,12"Processing..." & _wLocalErr W_sbd$ W_sbp$ _ &0p "Error opening files!","",0 W_err%%1:wC99ExitSub {"SUB "root(W_sbp$)"()" {" CREATE "W_q$root(W_sbp$)W_q$ cW_a$ OB("*") W_ml%%0 ,(W_a$,16,1)";"p D_Parse(W_err%%,W_a$,W_ml%%,W_sbd$,W_sbp$) ^ cW_a$  {" MAKE "W_q$root(W_sbp$)W_q$ {" CLOSE FILE "W_q$root(W_sbp$)W_q$ {" END SUB" "Done","",2 C99ExitSub:  ==========================================================* D_Parse(W_err%%,W_a$,W_ml%%,W_sbd$,W_sbp$) ==========================================================* W_q$(34):W_p$"":W_v$"" W_p$" ADD "W_q$F(,(W_a$,1,15))";"F(,(W_a$,17,16))";"F(,(W_a$,34,22))W_q$ W_a$"" cW_a$ OB("*") O(,(W_a$,16,1)";") (+(W_a$,7)" FRM") (+(W_a$,7)" VAL")p W_v$F(,(W_a$,5,250)) (CountStr%(W_v$,ROOT(W_sbd$))0)p W_v$Replace$(W_v$,ROOT(W_sbd$),ROOT(W_sbp$))  (CountStr%(W_v$,W_q$)0)p W_v$Replace$(W_v$,W_q$,"~")  W_p$W_p$","W_q$W_v$W_q$  cW_a$ {W_p$  ==========================================================* Z_EndProg() ==========================================================* Z00Init: :t:7: _11,51 Z99ExitSub:  LocalErr: y Replace$(String$,OldValue$,NewValue$) OldLen%%,Pos%%,TempString$ TempString$String$ (OldValue$NewValue$) OldValue$"" O(?(NewValue$,"*"OldValue$"*")0)p OldLen%%/(OldValue$) ?(String$,OldValue$)0 Pos%%?(String$,OldValue$) String$Stuff$(String$,NewValue$,Pos%%,OldLen%%)  Replace$String$  Stuff$(String1$,String2$,Pos%%,Replace%%) Pos%%(Pos%%0,/(String1$)1,Pos%%) Replace%%(Replace%%0,Replace%%,0) Stuff$(Pos%%0,+(String1$,Pos%%1),"")String2$,(String1$,Pos%%Replace%%)  CountStr%(String$,SubString$) Loop%% CountStr%0 Loop%%1q/(String$) CountStr%CountStr%(,(String$,Loop%%,/(SubString$))SubString$,1,0) Loop%%