1 | PXRMEXCS ; SLC/PKR - Routines to compute checksums. ;12/21/2004
|
---|
2 | ;;2.0;CLINICAL REMINDERS;;Feb 04, 2005
|
---|
3 | ;====================================================
|
---|
4 | FILE(FILENUM,IEN) ;Return checksum for entry IEN in file FILENUM.
|
---|
5 | N CS,LC,REF,ROOT,TARGET
|
---|
6 | D FILE^DID(FILENUM,"","GLOBAL NAME","TARGET")
|
---|
7 | S ROOT=$$CREF^DILF(TARGET("GLOBAL NAME"))
|
---|
8 | K ^TMP($J,"PXRMEXCS")
|
---|
9 | M ^TMP($J,"PXRMEXCS")=@ROOT@(IEN)
|
---|
10 | S REF="^TMP($J,""PXRMEXCS"")"
|
---|
11 | S REF=$NA(@REF)
|
---|
12 | S (CS,LC)=0
|
---|
13 | F S REF=$Q(@REF) Q:REF'["PXRMEXCS" S LC=LC+1,CS=CS+$$LINECS(LC,@REF)
|
---|
14 | K ^TMP($J,"PXRMEXCS")
|
---|
15 | Q CS
|
---|
16 | ;
|
---|
17 | ;====================================================
|
---|
18 | HFCS(PATH,FILENAME) ;Return checksum for host file.
|
---|
19 | N CS,GBL,GBLZISH,SUCCESS
|
---|
20 | K ^TMP($J,"PXRMHFCS")
|
---|
21 | S GBL="^TMP($J,""PXRMHFCS"")"
|
---|
22 | S GBLZISH="^TMP($J,""PXRMHFCS"",1)"
|
---|
23 | S GBLZISH=$NA(@GBLZISH)
|
---|
24 | S SUCCESS=$$FTG^%ZISH(PATH,FILENAME,GBLZISH,3)
|
---|
25 | S CS=$S(SUCCESS:$$HFCSGBL(GBL),1:-1)
|
---|
26 | K ^TMP($J,"PXRMHFCS")
|
---|
27 | Q CS
|
---|
28 | ;
|
---|
29 | ;====================================================
|
---|
30 | HFCSGBL(GBL) ;Return checksum for host file loaded into global GBL.
|
---|
31 | N CS,IND,LINE
|
---|
32 | S (CS,IND)=0
|
---|
33 | F S IND=$O(@GBL@(IND)) Q:+IND=0 S LINE=@GBL@(IND),CS=CS+$$LINECS(IND,LINE)
|
---|
34 | Q CS
|
---|
35 | ;
|
---|
36 | ;====================================================
|
---|
37 | LINECS(LINENUM,STRING) ;Return checksum of line number LINEUM whose contents
|
---|
38 | ;is STRING.
|
---|
39 | N CS,IND,LEN
|
---|
40 | S CS=0
|
---|
41 | S LEN=$L(STRING)
|
---|
42 | F IND=1:1:LEN S CS=CS+($A(STRING,IND)*(LINENUM+IND))
|
---|
43 | Q CS
|
---|
44 | ;
|
---|
45 | ;====================================================
|
---|
46 | MMCS(XMZ) ;Return checksum for MailMan message ien XMZ.
|
---|
47 | N CS,IND,LINE,NLINES
|
---|
48 | S NLINES=+$P($G(^XMB(3.9,XMZ,2,0)),U,3)
|
---|
49 | S CS=0
|
---|
50 | F IND=1:1:NLINES S LINE=$G(^XMB(3.9,XMZ,2,IND,0)),CS=CS+$$LINECS(IND,LINE)
|
---|
51 | Q CS
|
---|
52 | ;
|
---|
53 | ;====================================================
|
---|
54 | ROUTINE(RA) ;Return checksum for a routine loaded in array RA. RA has the
|
---|
55 | ;form created by ^%ZOSF("LOAD") i.e, RA(1,0) ... RA(N,0).
|
---|
56 | N CS,IND,LINE
|
---|
57 | S (CS,IND)=0
|
---|
58 | F S IND=$O(RA(IND)) Q:+IND=0 S CS=CS+$$LINECS(IND,RA(IND,0))
|
---|
59 | Q CS
|
---|
60 | ;
|
---|
61 | ;====================================================
|
---|
62 | RTN(ROUTINE) ;Return checksum for a routine ROUTINE.
|
---|
63 | N CS,DIF,RA,X,XCNP
|
---|
64 | S XCNP=0
|
---|
65 | S DIF="RA("
|
---|
66 | S X=ROUTINE
|
---|
67 | ;Make sure the routine exists.
|
---|
68 | X ^%ZOSF("TEST")
|
---|
69 | I $T D
|
---|
70 | . X ^%ZOSF("LOAD")
|
---|
71 | . S CS=$$ROUTINE(.RA)
|
---|
72 | E S CS=-1
|
---|
73 | Q CS
|
---|
74 | ;
|
---|