|DESCRIPTION OF ENHANCEMENTS
This patch makes the following changes:
If you Enter/Edit the entries in this file and enter ^LOOP at the
S:'$D(var) var=... or
and in the file, there was a field with a name that started with the
letter before the colon (:), an infinite loop would occur. This patch
corrects this problem. (DICOMPX)
6. If the cross references on a file are compiled, and the file contains
trigger-type cross references, FileMan could break the routine within a do
'Select NAME:' prompt you can get a hard error.
block structure, so that the first line of the next routine starts with a
.line. For example, the last few lines of one routine could be:
I X'="" D
END G ^zzzz2
and the first few lines of the next routine could be:
zzzz2 ; COMPILED XREF FOR FILE #xxxxx ; 10/30/96
.K DIV S DIV=X,D0=DA,DIV(0)=D0 S Y(1)=$S($D(^DIZ(xxxxx,D0,3)):
^(3),1:"")S X=$P(Y(1),U,2),X=X S DIU=X K Y X ^DD(xxxxx,2,1,
12,2.1) X ^DD(xxxxx,2,1,12,2.4)
This patch ensure that routines are not broken within do block structures.
7. This patch also fixes several problems with %DT and time input:
a. If only numbers are entered in the date and/or time position, like
9999999999999999999999999999999, an illegal number error could
b. Even with %DT["N", %DT was accepting noncanonic numbers (numbers
with a leading 0). So, 090196 was accepted, but 100196 was not.
c. If only a time is input, and the AM/PM designation on the time
contained punctuation (like 2:00 A.M.), the input was rejected.
d. A single 0 in the minutes or seconds position of the time, could
cause the time to be interpreted incorrectly. For example, 01:0
was interpreted as 10:00 am, and T@01:01:0 was interpreted as
10:00:10 am. With this fix, time with a single 0 in the minutes or
seconds position is rejected.
e. Time with hours of 0 or 00 were not getting interpreted
correctly. For example:
Input Before fix After fix
===== ========== =========
%DT'["S" 0:01:03 => 01:03 rejected
0:01:03 AM => 01:03 rejected
0:01:03 PM => 13:03 rejected
0:01 => 13:00 00:01
0:01 AM => 01:00 00:01
0:01 PM => 13:00 rejected
2. For set of codes ^DIR Reader calls, adds a new input array:
%DT["S" 0:01:03 => 13:00:03 00:01:03
0:01:03 AM => 01:00:03 00:01:03
0:01:03 PM => 13:00:03 rejected
0:01 => 13:00:00 00:01:00
0:01 AM => 01:00:00 00:01:00
0:01 PM => 13:00:00 rejected
f. T@14AM translated to 00:14. After this fix, T@14AM is rejected.
g. If %DT["S" and the time contained seconds, and there was at least
one space between the time and the AM/PM designator, the time was
rejected. For example, T@1:00:00 PM was rejected, T@1:00:00PM was
accepted. (This bug fix applies to DSM, not MSM, sites.)
h. If only a year and a time is entered, %DT was accepting the input
and echoing back a time without hours or minutes:
DIR("L",#) Only applies to set of codes. Replaces the standard
DATE: 1995@9 (1995@::00)
This change makes %DT reject this input.
vertical listing of codes that the Reader displays. It is
8. If the user enters something like P at the THEN PRINT FIELDS prompt, and
there are no fields that begin with P, DICOMP was looking at the "PT"
nodes to find all backpointing files that begin with P. This could lead
to confusing messages like 'such and such pointer is not cross
referenced', or 'by ... do you mean... '.
up to the programmer to ensure that the contents of the
9. If a line in a word processing field sent to ^DIWP contains a vertical
bar, followed by alphanumerics, followed by punctuation, followed by more
alphanumerics, an undefined J(0) error can occur at DD^DICOMPV, if there
is at least one file on the system whose name starts with the characters
between the vertical bar and the punctuation. For example, the following
code produces the error:
S X="A line of text <vertical bar>A:B"
DIR("L") array matches the codes in the second ^-piece of
if there are any files on the system that start with 'A'.
Routine Name Before Patch After Patch Patch List
============ ============ =========== ==========
DIA2 4082017 4038834 24
DIAU 6095280 6112601 24
DICOMP0 9824026 9896481 24
DICOMPX 3752529 3767023 24
DID 9150099 9151079 24
DIDT 6692350 6401681 18,24
DIKZ 9722237 9897922 6,24
DIQGDD 7426471 6585703 24
DIQGDDF N/A 1999058 24
DIQGDDU 1298733 1578963 24
DIR 8215233 8414467 13,24
The format of the DIR("L") array is similar to DIR("A")
1. AXP Sites - The routines %DT and DIR are usually mapped on
systems that allow mapping, so you will need to disable mapping for these
2. Use the 'INSTALL/CHECK MESSAGE' option on the PackMan menu. This
option will load the KIDS package onto your system. The environment
check routine, DIENV, will run automatically.
and DIR("?"). The #'s must be numeric starting from 1. The
DIENV is sent to prevent the inadvertent queuing of the installation
of this patch.
3. The patch has now been loaded into a transport global on your
system. You now need to use KIDS to install the transport global.
4. On the KIDS menu, under the 'Installation' menu, use the
Print Transport Global
numbered lines are written first and the DIR("L") is
Compare Transport Global to Current System
Verify Checksums in Transport Global
Backup a Transport Global
5. Inhibit users from login into the system. Some of the routines in
this patch are used heavily in DHCP applications, most notably %DT and
DIR. The consequences of installing this patch while users are on the
system are that users may get a 'source routine edited' error. Due to the
high usage of these routines in all of DHCP code, it is highly recommended
that users be off the system when installing this patch.
6. AXP Sites - Place Taskman in a WAIT State.
MSM Sites - STOP Taskman.
7. On the KIDS menu, under the 'Installation' menu, use the
Select Installation Option: Install Package(s)
Select INSTALL NAME: DI*21.0*24
Answer 'NO' to 'Want to DISABLE Scheduled Options, Menu
Options, and Protocols?
8. MSM Sites - Answer YES to the question 'Want to MOVE routines to
Then enter the names of your other Compute and Print server(s).
NOTE: You will then see the following message:
TASKMAN is not running. You must run the routine XPDCPU in the
production UCI for each of the VOLUME SETS you have listed once the
9. MSM Sites - After the installation begins, you will be prompted
to enter a DEVICE. After the device has been entered, KIDS will pause.
At this time, you need to go to each of the CPUs that were entered in
step 8, and start a job that will allow them to receive the patched
routines. On each one, you do the following:
1. Given the following:
a) >D ^XUP This will set up the programming environment.
b) >D ^XPDCPU This starts the job that receives the patched routines.
c) Select INSTALL NAME: DI*21.0*24
The installation will then continue.
10. After installing this patch, you need to move routine DIDT
from your production account to the manager account. Then, in the manager
DIDT to %DT
Example: ZL DIDT ZS %DT
11. AXP Sites - After the patch has been installed, rebuild your map
>S DIR("L",1)="Select one of the following:"
12. AXP Sites - Remove Taskman from WAIT State.
MSM Sites - Restart Taskman.
13. Enable users' login.
>S DIR("L",3)=" 1 ONE 5 FIVE"
>S DIR("L",4)=" 2 TWO 6 SIX"
>S DIR("L",5)=" 3 THREE 7 SEVEN"
>S DIR("L")=" 4 FOUR"
Select one of the following:
1 ONE 5 FIVE
2 TWO 6 SIX
3 THREE 7 SEVEN
Enter response: ?
Enter a code from the list.
a. You have a file with a pointer-type .01 field called NAME.
Select one of the following:
1 ONE 5 FIVE
2 TWO 6 SIX
3 THREE 7 SEVEN
b. NAME points to a file that has a free text field called SHORT
Also, for set of codes ^DIR Reader calls, this patch removes unnecessary
blank lines that appeared before and after the vertical list of codes.
Also, when using DIR("?") - one line help - this patch makes sure a period
(.) terminates DIR("?").
Also, this patch makes sure that DIR("?") is not overwritten by the
Reader's default help prompt.
3. Two problems with the FIELD^DID are corrected with this patch:
a. If the FIELD^DID call was used to retrieve field level attributes
of a file with a file number less than or equal to 1, error code 200 would
be returned: "An input variable or parameter is missing or invalid". This
patch makes FIELD^DID work for fields in files numbered 1 or less.
b. FIELD^DID returned erroneous values for FIELD LENGTH for fields
with data types of MUMPS, SET OF CODES, VARIABLE POINTER, and DATE/TIME.
c. NAME has NAME:SHORT DESCRIPTION as an output transform.
This patch makes FIELD^DID return more accurate values for FIELD LENGTH
for these types of fields.
(DID, DIQGDD, DIQGDDF, DIQGDDU)
4. This patch corrects the problem which can be reproduced by doing the
(1) On the FileMan menu, select OTHER OPTIONS -> AUDITING
(2) Select Audit Option #1, FIELDS BEING AUDITED.
(2) Pick a file that has no fields being audited.
(3) Select Audit Option #2, DATA DICTIONARIES BEING AUDTED.
An undefined variable DFF error would occur.
5. If on a field you tried to put an output transform that looked like