DELFILE(Dir,Nm) ;Dir kan het ganse pad bevatten, Nm moet dan leeg of undefined zijn. New File,X Set Nm=$G(Nm) Set File=$$FULLPAD(Dir,Nm) S X=$ZF(-1,"del /Q """_File_"""") Quit X FULLPAD(Dir,Nm) Quit Dir_$S($E(Dir,$L(Dir))="\"!($E(Nm)="\")!(Nm=""):"",1:"\")_Nm READ(Dir,Nm,Exec,Optie,DevTyp,LijnTerminator) ; Optie bevat A : Er wordt naar de filenaam gevraagd ; D : Nm is WildCard, filenaam selectie via DISPDIR ; T : Vertaling van Tab naar standaard delimiter D ; B : Retry bij blanko lijn ; K : Karakter per karakter ipv lijn per lijn, de karakters worden verzameld tot één record door de lijnterminator ; E : Exclusieve toegang ; M : No terminal I/O (MUET) ; DevTyp : M = Macintosh, P = PC, A = FlatAscii ; Exec : TypeExec`Execcode (bij Do wordt (Rec) als paramter meegegeven) New stream,Rec,Vertaal Set LijnTerminator=$G(LijnTerminator,$C(13)) Set Vertaal=0 Set Optie=$G(Optie) Quit:"-."[Nm "" Write:Optie'["M" !,Nm,! Set stream=##class(%FileCharacterStream).%New() Set stream.Filename=$$FULLPAD(Dir,Nm) For Quit:stream.AtEnd Do . Set Rec=$S(Optie["K":$$READLINE(stream,LijnTerminator),1:stream.ReadLine()) . If Optie["B",Rec="" Quit ; retry bij blanko . Set:Optie["T" Rec=$TR(Rec,$C(9),D) . Set:Vertaal Rec=$TR(Rec,FNAAR,FVAN) ; Omgekeerd want het is import . Do EXECS(Exec,"","(Rec)") Quit Nm ; Return Filenaam zonder pad READLINE(stream,terminator) New Inp,K Set Inp="" For Quit:stream.AtEnd Do Quit:K=terminator . Set K=stream.Read(1) . Quit:K=$C(10) ; Skip LF . Set Inp=Inp_K Quit Inp EXECS(sTyp,sRet,sParList) New sExecTxt Set sExecTxt="" Goto EXEC2 EXEC(sTyp,sExecTxt,sRet,sParList,RtnErrHandler) EXEC2 Set:sExecTxt="" sExecTxt=$P(sTyp,"`",2,999),sTyp=$P(sTyp,"`") Set $ZTRAP=$S($D(RtnErrHandler):RtnErrHandler, 1:"ExecTrap^"_$ZN) If sTyp="" Set:$L(sRet) @sRet="" Quit If sTyp="T" Set:$L(sRet) @sRet=sExecTxt Quit If sTyp="@" X "S "_sRet_"="_sExecTxt Quit If sTyp="X" X sExecTxt Quit If sTyp="M" New sLoop For sLoop=1:1:$O(@sExecTxt@(""),-1) X @sExecTxt@(sLoop) If sTyp="D" Do @(sExecTxt_sParList) If sTyp="F" X "S "_sRet_"=$$"_sExecTxt_sParList If sTyp="R" Do @sExecTxt If sTyp="CD" Do @("$zobjclassmethod("""_$P(sExecTxt,"`",1)_""","""_$P(sExecTxt,"`",2)_""","_$S(sParList="":")",1:$E(sParList,2,999))) ;d WL^vhDBG("S "_sRet_"=$zobjclassmethod("""_$P(sExecTxt,"`",1)_""","""_$P(sExecTxt,"`",2)_","_$S(sParList="":")",1:$E(sParList,2,999))) If sTyp="CF" X "S "_sRet_"=$zobjclassmethod("""_$P(sExecTxt,"`",1)_""","""_$P(sExecTxt,"`",2)_""","_$S(sParList="":")",1:$E(sParList,2,999)) Quit