GDSX Manual
Service Routines
Extended General Device Support (GDSX) Manual–134303
8-27
^FNAMEEXPAND
I/O can be in process on a single open of a disk file. Multiple tasks use a semaphore 
to control access to the publicly opened file in this example:
INT
 DISKFILE,
 .DISKSEM[0:3],
 .DISKNAME[0:11];
 .
PROC USER^INITIALIZE(PRIMARY);
 INT PRIMARY;
BEGIN
DISKSEM[0] := DISKSEM[1] := DISKSEM[2] := 0; 
CALL INIT^SEM(DISKSEM);
IF PRIMARY THEN
 BEGIN
 DISKNAME ':=' ["$XYZ SOME FILE "];
 CALL ^FILE_OPEN(DISKNAME, DISKFILE, ...);
 IF < THEN
 BEGIN
 .
 produce suitable error message
 .
 CALL ^TERMINATE;!Stop GDSX process
 END;
 END;
END;
PROC DEVICE^HANDLER(FILE, ME, TYPE);
BEGIN
 .
IF PSEM(DISKSEM, 200D) THEN
 BEGIN
 CALL ^READ(DISKFILE, BUFFER, ....);
 IF = THEN
 CALL ^AWAITIO(DISKFILE,....);
 IF <> THEN
 .
 .
 CALL VSEM(DISKSEM);
 END
ELSE
 BEGIN !UNABLE TO GET THE LOCK
 .!WITHIN 2 SECONDS
 .
 END;
^FNAMEEXPAND
This procedure expands a partial file name from the compacted external form to the 
12-word internal form usable by other file-system procedures. ^FNAMEEXPAND may 
be called whether USCODE is converted or unconverted.










