(* Beispiel wie CAA_FILE.library – Stammverzeichnis- oder Pfadfunktionsblöcke zu verwenden sind *)
PROGRAM ROOT_PRG
VAR
xRootInit: BOOL := FALSE;
uiRootState: UINT := 0;
sStandarddir: CAA.FILENAME:='C:/PLC_DIR';
sDirName: CAA.FILENAME;
filsrt: FILE.SetRoot;
filgrt: FILE.GetRoot;
END_VAR
IF NOT xRootInit THEN
filsrt(xExecute:=FALSE);
filgrt(xExecute:=FALSE);
xRootInit:=TRUE;
uiRootState:=0;
ELSE
CASE uiRootState OF
0: (* Stammverzeichnis lesen *)
filgrt( xExecute:=TRUE);
IF filgrt.xDone THEN
sDirName:=filgrt.sFileName;
uiRootState:=1;
END_IF
IF filgrt.xError THEN
(* Fehlerbehandlung *)
;
END_IF
1:(* Stammverzeichnis vergleichen *)
IF sDirName <> sStandarddir THEN
uiRootState:=2; (* neues Stammverzeichnis setzen *)
ELSE
uiRootState:=3; (* standardmäßiges Stammverzeichnis bereits gesetzt *)
END_IF
2:(* neues Stammverzeichnis setzen *)
filsrt.sFileName:=sStandarddir;
filsrt( xExecute:=TRUE);
IF filsrt.xDone THEN
uiRootState:=3;
END_IF
IF filsrt.xError THEN
(* Fehlerbehandlung *)
;
END_IF
3: (* Ende vom Beispiel *)
;
END_CASE
END_IF