Integrity and Security
The structure of component files, the asynchronous nature of the buffering performed by APL, by the Operating System, and by the external device sub-system, introduces the potential danger that a component file might become damaged. To prevent this happening, the component file system includes optional journaling and check-sum features. These are optional because the additional security these features provide comes at the cost of reduced performance. You can choose the level of security that is appropriate for your application.
When journaling is enabled (see ⎕FPROPS
), files are updated using a journal which effectively prevents system or network failures from causing file damage.
Additional security is provided by the check sum facility which enables component files to be repaired using the system function ⎕FCHK
. See File Check and Repair.
Level 1 journaling protects a component file from damage caused by an abnormal termination of the APL process. This could occur if the process is deliberately or accidentally terminated by the user or by the Operating System, or by an error in Dyalog APL.
Level 2 journaling provides protection not just against the possibility that the APL process terminates abnormally, but that the Operating System itself fails. However, a damaged component file must be explicitly repaired using the system function ⎕FCHK
which will repair any damaged components by rolling them back to their previous states.
Level 3 provides the same level of protection as Level 2, but following the abnormal termination of either APL or the Operating System, the rollback of an incomplete update will be automatic and no explicit repair will be needed.
Higher levels of Journaling inevitably reduce the performance of component file updates.
For further information, see ⎕FPROPS
and ⎕FCHK
.
Operating System Commands
APL files are treated as normal data files by the operating system, and may be manipulated by any of the standard operating system commands.
Do not use operating system commands to copy, erase or move component files that are tied and in use by an APL session.