GENERAL DESCRIPTION |
1. DESCRIPTION OF USE OF DIQUIET IN FILEMAN
HISTORY OF DIQUIET: The purpose for creating DIQUIET was mostly that as we
were creating the data-base server calls, we sometimes needed to call into
Classic FileMan, and we absolutely didn't want FileMan to talk. DIQUIET was a
variable that would let us know within those classic calls that we were being
called from a DBS call, so we shouldn't talk. Therefore, at the start of
almost all the DBS calls, we set DIQUIET=1. DIQUIET was also used as a flag
in EN^DDIIOL, which is embedded in Xecutable code in the DD, to assure that
text is placed in ^TMP instead of being Written when DBS calls are involved.
SETTING DIQUIET WITHIN FILEMAN CODE: DIQUIET is set to 1 at the start of the
following published calls:
Finder FIND^DIC
Finder (Single Record) $$FIND1^DIC
Lister LIST^DIC
DD Field Retriever FIELD^DID
DD Field List Retriever FIELDLST^DID
DD File Retriever FILE^DID
DD File List Retriever FILELIST^DID
Attribute Retriever $$GET1^DID
Data Checker CHK^DIE
Filer FILE^DIE
Helper HELP^DIE
Updater UPDATE^DIE
Validator VAL^DIE
Word-Processing Filer WP^DIE
Single Data Retriever $$GET1^DIQ
Data Retriever GETS^DIQ
In addition, there are a few places that Classic FileMan sets DIQUIET for the
same reason.
Import Tool (DDMP, DDMPU) because the Import tool is designed to be silent
like the DBS calls.
DIED and DIEZ1 (classic DIE call to edit data) sets DIQUIET if the user is
stuffing data in a SET OF CODES field, because it makes a call to ^DIR and
does not want the Reader to talk.
DIEZ, DIKZ and DIPZ (template and x-ref compilation) appear to have silent
entry points (all labeled EN2) that set DIQUIET. I believe that these were
created by Rick, I don't think they're documented. Perhaps KIDS uses them, I
need to discuss this with him.
DIP (the PRINT routine) sets DIQUIET if it is not already set, and if all
the information that DIP normally prompts the user for has been sent (I.E.,
file and fields to print, sort criteria, device, etc.), or if the print job is
queued. That was to avoid some places where FileMan was writing error
messages.
HONORING DIQUIET TO SUPPRESS WRITES: Mostly we made changes to classic FileMan
as we needed to, in places where we were calling it from the new DBS calls and
wanted it to be silent. The places are:
DDIOL (The loader), where DIQUIET tells the routine to load the text that is
passed into an array rather than writing it. That's why we were able to tell
people that any writes that they have in their DDs should call ^DDIOL rather
than just write.
%DT (date validation routine) to keep the date from echoing back.
DT^DICRW (routine that sets up required FileMan variables). Was writing a
line-feed.
DIE3 (enter/edit) Does not write "Searching for a..." when doing a lookup on
a file pointed-to by a variable pointer, and does not ask OK when a pointed-to
entry is found, even if the DD has been set up that way.
DIP The changes to the print are described above, and were not done for the
DBS calls, as we don't call the print from within any of them.
DIR1 The Reader doesn't write a message when processing sets of codes if
DIQUIET is set. This was required by DIE when stuffing a SET OF CODES field,
as I described above.
2. REASON RPC BROKER NEEDS TO SET DIQUIET:
Setting of DIQUIET variable, which is used within the VA FileMan package to
suppress WRITEs from FileMan routines and DDs, to 1. Variable being set by
RPC Broker when it is certain that no direct user-interaction is appropriate
(client/server environment).
The only FileMan code that the Broker does directly that requires DIQUIET to
be set is DT^DICRW (a linefeed is suppressed). However, since the Broker
performs the code written in RPCs, having DIQUIET set protects the code in the
RPCs from inadvertently Writing because of a call to a FileMan routine or the
Xecution of a DD node.
|