La commande RISC OS Unset pour effacer les variables d'environnement est très utile. Malheusement, elle reste inopérante pour effacer les variables d'environnement de type code que vous avez préalablement rajoutées. Le but de la commande DelVcod est de palier à cet inconvénient en permettant de supprimer de telles variables, libérant ainsi la mémoire occupée (Sys$CSD décrite dans ce numéro est une telle variable).
Attention: n'utilisez cette commande que pour des variables par vous rajoutées et évitez son emploi pour supprimer des variables standard du système (elles aussi de type code) telle Sys$Time.
Le fichier DelVcod étant dans un répertoire spécifié dans la variable Run$Path ou dans le répertoire courant. Le seul paramètre utile ici est le nom de la variable système à supprimer: pas de possibilité ici de mentionner un canevas wild regroupant plusieurs variables (ex. Sys$*)
*DelVcod Sys$CSD
OS_GetEnv * &10
XOS_GetEnv * OS_GetEnv :OR: Xbit
SWI XOS_GetEnv ;R0= Adresse ligne
MOVVS PC, R14
; Saute les blancs avant le nom de la
; commande
SUB R0, R0, #1
01 LDRB R1, [R0, #1]!
TEQ R1, #32 ;<espace>
TEQNE R1, #9 ;<tabulation>
BEQ %B01
TEQ R1, #0 ;Sort si commande
MOVEQ PC, R14 ; inexistante
; Recherche le "blanc" séparateur
02 LDRB R1, [R0, #1]!
TEQ R1, #0
MOVEQ PC, R14
TEQ R1, #32
TEQNE R1, #9
BNE %B02
; Recherche du 1er caractère de l'argument
03 LDRB R1, [R0, #1]!
TEQ R1, #0
MOVEQ PC, R14
TEQ R1, #32
TEQNE R1, #9
BEQ %B03
OS_SetVarVal * &24
XOS_SetVarVal * OS_SetVarVal :OR: Xbit
...
MOV R2, #-1
MOV R3, #0
MOV R4, #&10
SWI XOS_SetVarVal
MOV PC, R14
END