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

XU8P608.m

Go to the documentation of this file.
  1. XU8P608 ;IRMFO-ALB/CJM - Kernel Lock Manager ;11/28/2012
  1. ;;8.0;KERNEL;**608**;JUL 10, 1995;Build 84
  1. ;;
  1. ;
  1. ; ******************************************************************
  1. ; * *
  1. ; * The Kernel Lock Manager is based on the VistA Lock Manager *
  1. ; * developed by Tommy Martin. *
  1. ; * *
  1. ; ******************************************************************
  1. ;
  1. POST ;
  1. ;D PATCH^ZTMGRSET(608)
  1. D INPUT2
  1. Q
  1. INPUT1 ;
  1. ;Not needed - replaced by patch xu*8.0*607
  1. N LINE,OFFSET,LOCKIEN,SUBIEN,RTN
  1. S RTN="XU8P608A"
  1. S OFFSET=1
  1. F S LINE=$T(LOCKS+OFFSET^@RTN) Q:'$L(LINE) Q:$P(LINE,";;",2)="EXIT" S OFFSET=OFFSET+1 D
  1. .I $P(LINE,";",3)="LOCK" S LOCKIEN=$$LOCK($P(LINE,";",4,99)) Q:LOCKIEN I 'LOCKIEN D BMES^XPDUTL("Failed to create an entry in the XULM LOCK DICTIONARY file for "_$P(LINE,";",4,99)) Q
  1. .Q:'LOCKIEN
  1. .I $P(LINE,";",3)="PACKAGE" D Q
  1. ..N PACKAGE,DATA
  1. ..S PACKAGE=$P(LINE,";",4)
  1. ..S PACKAGE=$O(^DIC(9.4,"B",PACKAGE,0))
  1. ..I PACKAGE S DATA(1.01)=PACKAGE D UPD^XULMU(8993,LOCKIEN,.DATA)
  1. .I $P(LINE,";",3)="PARTIAL MATCH OK?" D Q
  1. ..N DATA
  1. ..S DATA(1.03)=$P(LINE,";",4)
  1. ..D UPD^XULMU(8993,LOCKIEN,.DATA)
  1. .I $P(LINE,";",3)="USAGE" D Q
  1. ..S ^XLM(8993,LOCKIEN,4,0)=$P(LINE,";",4,99)
  1. ..N CNT S CNT=0
  1. ..F S LINE=$T(LOCKS+OFFSET^@RTN) Q:$E(LINE,2,4)'=";;;" D
  1. ...S OFFSET=OFFSET+1
  1. ...S LINE=$P(LINE,";;;",2,99)
  1. ...S CNT=CNT+1
  1. ...S ^XLM(8993,LOCKIEN,4,CNT,0)=LINE
  1. .I $P(LINE,";",3)="SUBSCRIPT" D Q
  1. ..N DA,DATA
  1. ..S LINE=$P(LINE,";",4,99)
  1. ..S DATA(.01)=$P(LINE,"^")
  1. ..S DATA(.02)=$P(LINE,"^",2)
  1. ..S DATA(.04)=$P(LINE,"^",4)
  1. ..S DA(1)=LOCKIEN
  1. ..S SUBIEN=$$ADD^XULMU(8993.02,.DA,.DATA)
  1. .I $P(LINE,";",3)="CHECK LOGIC" D
  1. ..S:LOCKIEN&SUBIEN ^XLM(8993,LOCKIEN,2,SUBIEN,1)=$P(LINE,";",4,99)
  1. .I $P(LINE,";",3)="FILE REFERENCE" D Q
  1. ..N DA,DATA
  1. ..S DATA(.01)=$P(LINE,";",4)
  1. ..S DA(1)=LOCKIEN
  1. ..S SUBIEN=$$ADD^XULMU(8993.03,.DA,.DATA)
  1. .I $P(LINE,";",3)="L" D
  1. ..N CODE,X
  1. ..S (CODE,X)=$P(LINE,";",4,99)
  1. ..D:$L(X) ^DIM
  1. ..I '$D(X) D BMES^XPDUTL("Failed syntax check:"),BMES^XPDUTL(CODE) Q
  1. ..S:LOCKIEN&SUBIEN ^XLM(8993,LOCKIEN,3,SUBIEN,1)=$G(X)
  1. .I $P(LINE,";",3)="REFERENCE DESCRIPTION" D Q
  1. ..S:SUBIEN&LOCKIEN ^XLM(8993,LOCKIEN,3,SUBIEN,2,0)=$P(LINE,";",4,99)
  1. ..N CNT S CNT=0
  1. ..F S LINE=$T(LOCKS+OFFSET^@RTN) Q:$E(LINE,2,4)'=";;;" D
  1. ...S OFFSET=OFFSET+1
  1. ...S LINE=$P(LINE,";;;",2,99)
  1. ...S CNT=CNT+1
  1. ...S:LOCKIEN&SUBIEN ^XLM(8993,LOCKIEN,3,SUBIEN,2,CNT,0)=LINE
  1. Q
  1. LOCK(LOCK) ;Deletes the old entry and adds a new one.
  1. N DATA,DA,QUIT,ERROR
  1. S QUIT=0
  1. S DATA(.01)=$P(LOCK,"^",2,99)
  1. S DATA(1.02)=$S($E(LOCK)="^":1,1:0)
  1. S DA=$O(^XLM(8993,"E",DATA(1.02),DATA(.01),0))
  1. I DA D DELETE^XULMU(8993,DA)
  1. Q $$ADD^XULMU(8993,,.DATA,.ERROR)
  1. ;
  1. K DATA
  1. F S LINE=$T(LOCKS+OFFSET^@RTN),OFFSET=OFFSET+1 D Q:QUIT
  1. .N DATA
  1. .I $P(LINE,";",3)="SUBSCRIPT" D Q
  1. ..N PARENT S PARENT=DA N DA
  1. ..S LINE=$P(LINE,";",4,99)
  1. ..S DATA(.01)=$P(LINE,"^")
  1. ..S DATA(.02)=$P(LINE,"^",2)
  1. ..S DATA(.04)=$P(LINE,"^",4)
  1. ..S DA(1)=PARENT
  1. ..S DA=$$ADD^XULMU(8993.02,.DA,.DATA)
  1. ..S LINE=$T(LOCKS+OFFSET^@RTN)
  1. .S OFFSET=OFFSET-1,QUIT=1
  1. Q
  1. ;
  1. INPUT2 ;Add system lock list to parameters
  1. N IEN,LOCK,RTN,OFFSET,TEXT,EXIT,SITE
  1. S EXIT=0
  1. S IEN=$O(^XLM(8993.1,0))
  1. I 'IEN D
  1. .N DATA
  1. .S SITE=+$$SITE^VASITE
  1. .I SITE<1 S SITE=$O(^XTV(8989.3,0)) I SITE S SITE=$P($G(^XTV(8989.3,SITE,"XUS")),"^",17)
  1. .I 'SITE S SITE="NOT YET ENTERED"
  1. .S DATA(.01)=SITE
  1. .S IEN=$$ADD^XULMU(8993.1,,.DATA)
  1. S RTN="XU8P608B"
  1. S OFFSET=1
  1. F S TEXT=$T(LOCKS+OFFSET^@RTN) Q:'$L(TEXT) Q:EXIT D
  1. .S LOCK=$P(TEXT,";;",2,99)
  1. .I LOCK="" S EXIT=1 Q
  1. .I LOCK="EXIT" S EXIT=1 Q
  1. .S OFFSET=OFFSET+1
  1. .Q:$D(^XLM(8993.1,"AC",LOCK))
  1. .N DATA,DA
  1. .S DA(1)=IEN
  1. .I $E(LOCK,1)="^" D
  1. ..S DATA(.01)=$P($P(LOCK,"^",2,99),"(")
  1. ..S DATA(.02)=$P(LOCK,"^",2,99)
  1. ..S DATA(.03)=1
  1. .E D
  1. ..S DATA(.01)=$P(LOCK,"(")
  1. ..S DATA(.02)=LOCK
  1. ..S DATA(.03)=0
  1. .D ADD^XULMU(8993.15,.DA,.DATA)
  1. ;
  1. Q
  1. ;