(FILECREATED "16-Jul-86 19:07:12" {QV}<NOTECARDS>1.3K>FGHPATCH094.;1 4155 changes to: (VARS FGHPATCH094COMS) (FNS NC.CardOperationsInProgress)) (* Copyright (c) 1986 by Xerox Corporation. All rights reserved.) (PRETTYCOMPRINT FGHPATCH094COMS) (RPAQQ FGHPATCH094COMS ((* * Fix to NC.MapCards macro and to one of its callers) (MACRO NC.MapCards) (FNS NC.CardOperationsInProgress))) (* * Fix to NC.MapCards macro and to one of its callers) (DECLARE: EVAL@COMPILE (DEFMACRO NC.MapCards (NoteFile Function &OPTIONAL CollectResultPredicate) (* * Map over the entries in a NoteFiles hash array applying function to the CardID and Hash table value for each entry.) (* * rht 7/14/86: Changed from function to macro.) (* * fgh 7/16/86 Fixed several bugs and reorganized macro.) (COND (CollectResultPredicate (BQUOTE (LET (CollectionList) (MAPHASH (fetch (NoteFile HashArray) of , NoteFile) (FUNCTION (LAMBDA (Value Key) (LET (PredicateResult) (BLOCK) (COND ((SETQ PredicateResult (APPLY* , CollectResultPredicate Value)) (SETQ CollectionList (CONS (APPLY* , Function Value PredicateResult) CollectionList)) ) (T (APPLY* , Function Value))))))) CollectionList))) (T (BQUOTE (MAPHASH (fetch (NoteFile HashArray) of , NoteFile) (FUNCTION (LAMBDA (Value Key) (BLOCK) (APPLY* , Function Value)))))))) ) (DEFINEQ (NC.CardOperationsInProgress (LAMBDA (NoteFile AskAndTerminateFlg) (* fgh: "16-Jul-86 18:59") (* * Check if any cards have operations in progress. If so, either return their processes or Ask the user if they should be terminated and termionate them, depending on AskAndTerminateFlg. If the user say no terminations, then return the LITATOM ABORT.) (* * fgh 6/13/86 First created) (* * fgh 7/16/86 Due to change of NC.MapCards from fn to macro had to change the RETFROM NC.MapVCards to a RETFROM MAPHASH.) (LET (FoundOpInProgress) (NC.MapCards NoteFile (FUNCTION (LAMBDA (Card Process) (if (PROCESSP Process) then (* This card has an operation in progress. If this is the first one found, ask the Ask the user if operations in progress should be killed.) (if (NULL AskAndTerminateFlg) then (* Just Return a lst of proceses) Process else (* ask the user what to do.) (if (AND (NOT FoundOpInProgress) (NOT (NC.AskYesOrNo (CONCAT "There are cards with operations in progress." (CHARACTER 13) "Do you want to terminate these operations?" (CHARACTER 13)) "-->" (QUOTE Yes) T (WFROMMENU (fetch (NoteFile Menu) of NoteFile))))) then (* User doesn't want to kill active operations. Get out of close.) (SETQ CollectionList (QUOTE ABORT)) (RETFROM (FUNCTION MAPHASH) (QUOTE ABORT)) else (* Okay, kill the operation in progress. And allow a list of terminated processes to be returned.) (SETQ FoundOpInProgress T) (NC.TerminateCardOperationInProgress Card) Process))))) (FUNCTION (LAMBDA (Card) (NC.FetchUserDataProp Card (QUOTE ProcessInProgress)))))))) ) (PRETTYCOMPRINT FGHPATCH094COMS) (RPAQQ FGHPATCH094COMS ((* * Fix to NC.MapCards macro and to one of its callers) (MACROS NC.MapCards) (FNS NC.CardOperationsInProgress))) (PUTPROPS FGHPATCH094 COPYRIGHT ("Xerox Corporation" 1986)) (DECLARE: DONTCOPY (FILEMAP (NIL (1679 3887 (NC.CardOperationsInProgress 1689 . 3885))))) STOP