Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: FINDFN

FINDFN.m

Go to the documentation of this file.
  1. %FINDFN(FN,JOB,%DEV) ;BFH;RETURN FILE NAME FOR HFS DEVICE [ 04/02/2003 8:51 AM ]
  1. ;;KERNEL;8.0;**1001,1002,1003,1004,1005,1007**;APR 1, 2003
  1. ;Copyright Micronetics Design Corp. @1997
  1. ;
  1. ; /IHS/HQW/JLB 3/6/98 This routine to be used with MSM 4.3 or
  1. ; greater. It will not work with MSM versions below 4.3.
  1. ;
  1. ; Usage:
  1. ; I $$^%FINDFN(.F,J,51) ; returns file name for job J, dev 51 in F
  1. ; ELSE ; error, or file not found, or unsupported OS
  1. ; or
  1. ; U HFSDEV I $$^%FINDFN(.FN) ; returns file name for $I in FN
  1. ;
  1. S $ZT="ERR^%FINDFN"
  1. NEW %DDB,OS,PS
  1. S VER=$P($ZV,"ersion ",2)
  1. S OS=$V(0,-4,2)#16 ; 3=UNIX, 8=PC/PLUS, 10=NT
  1. S PS=$V(10,-4,2) ; word size
  1. I '$D(%DEV) S %DEV=$I ; must be an HFS device
  1. I '$D(JOB) S JOB=$J ; default to my $J
  1. I '$V($V(4*%DEV+$V(7,-5),-3,0)+12,-3,0) Q 0 ; device not in use
  1. S %DDB=$V(4*%DEV+$V(7,-5),-3,0) ; starting HFS ddb
  1. F S %DDB=$V(%DDB+12,-3,0) Q:'%DDB D HFS Q:%J
  1. I %J<1 Q 0 ; not found or unsupported OS
  1. Q 1
  1. HFS ;
  1. S %J=$V(%DDB+16,-3,2)+$V(272,-4,4) ; job that owns this ddb
  1. I %J'=JOB S %J=0 Q ; not our job
  1. ; our job found
  1. ; get current file name
  1. I VER<4.3,VER>3 S FN=$P($V(%DDB+52,-3,127,1),$C(0)) Q
  1. ; Version 4.3
  1. I OS=10 S FN=$P($V(%DDB+52,-3,261,9),$C(0)) Q ; NT
  1. I OS=3,PS=8 S FN=$P($V(%DDB+32,-3,128,9),$C(0)) Q ; Alpha UNIX
  1. I OS=3!(OS=8) S FN=$P($V(%DDB+52,-3,128,9),$C(0)) Q ; the rest
  1. S %J=-1 ; not supported for this OS
  1. Q
  1. ERR ;
  1. Q $ZE