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

AZXRBUG2.m

Go to the documentation of this file.
  1. AZXRBUG2 ;BUGDRUG2 Purge PROGRAM [ 09/23/94 9:52 AM ]
  1. ;Version 1
  1. ;08/20/92 JOHN H. LYNCH
  1. ;
  1. ;ALLOWS THE DATA ENTRY PERSON TO PURGE A
  1. ;RANGE OF DATA FROM THE BUGDRUG2 DATABASE.
  1. ;THE ROUTINE THAT CALLS AZXRBUG2:
  1. ;AZXRBUG, Main
  1. ;THE ROUTINES THAT AZXRBUG2 CALLS:
  1. ;DD^%DT,%DT (FILEMAN DATE CONVERSION)
  1. ;^DIK (FILEMAN DELETE ROUTINE)
  1. ;Variable List
  1. ;FLE= BUGDRUG2 (Database Global).
  1. ;%DT= Validates date input from user and converts it.
  1. ;%DT("A")= Default prompt for date conversion routine.
  1. ;FROM= Users input for starting date.
  1. ;TO= Users input for ending date.
  1. ;PURGEIT= A check variable used to make sure user wants
  1. ; to purge data.
  1. ;DIK= Global root of file to purge records from.
  1. ;DATE= Used for making sure the FROM date is included
  1. ; in date range.
  1. ;RET= Used when waiting for user, "Press return..."
  1. ;Y= Used for date conversion; date to convert.
  1. ;DA= Internal entry number current up for purging.
  1. ;YN= Users input on whether to print another report.
  1. MAIN ;AZXRBUG2 PROGRAM CONTROL
  1. ;SET LOCAL VARIABLES
  1. S FLE="1991012" ;BUGDRUG2 (DATABASE GLOBAL)
  1. S %DT="AEX" ;VALIDATES DATE INPUT AND
  1. ;CONVERTS IT FOR STORAGE
  1. ; A= ASK FOR DATE INPUT
  1. ; E= ECHO ANSWER
  1. ; X= EXACT DATE REQUIRED
  1. D RANGE ;GET DATE RANGE TO PURGE
  1. D CONT ;CONTINUE WITH PURGE?
  1. D KILL ;KILL LOCAL VARIABLES & QUIT
  1. Q
  1. RANGE ;ASK USER FOR A RANGE OF DATES TO PURGE
  1. ;SET LOCAL VARIABLES
  1. W @IOF ;CLEAR SCREEN
  1. W !!!,"BugDrug2 Purge..."
  1. W !!,"Enter the range of dates to purge:"
  1. W !!,?5,"NOTE: ""From Date"" must be less than or"
  1. W !,?12,"equal to ""To Date""."
  1. FROM W !! ;SKIP TWO LINES
  1. S %DT("A")=" From Date: " ;%DT("A")= DEFAULT PROMPT
  1. D ^%DT ;CALL FILEMAN DATE CONVERSION
  1. ;TO GET THE LOWER BOUND DATE
  1. I X="^" Q ;USER WANTS OUT / QUIT RANGE
  1. I X="?" G FROM ;INQUIRY TO HELP; GOTO FROM
  1. I Y=-1 W !!,*7,"Invalid Date: Press a '?' for help." G FROM
  1. ;INVALID ENTRY; GOTO FROM
  1. S FROM=Y ;FROM= FILEMAN DATE RETURNED
  1. ; IN Y (LOWER BOUND DATE)
  1. TO S %DT("A")=" To Date: " ;%DT("A")= DEFAULT PROMPT
  1. D ^%DT ;CALL FILEMAN DATE CONVERSION
  1. ;TO GET THE UPPER BOUND DATE
  1. I X="^" G FROM ;USER WANTS OUT / QUIT RANGE
  1. I X="?" G TO ;INQUIRY TO HELP; GOTO TO
  1. I Y=-1 W !!,*7,"Invalid Date: Press a '?' for help." G TO
  1. ;INVALID ENTRY; GOTO TO
  1. S TO=Y ;TO= FILEMAN DATE RETURNED
  1. ; IN Y (UPPER BOUND DATE)
  1. I FROM>TO W !!,*7,"Invalid input: ""From DATE"" must be less than or equal to ""To DATE""." R !!,"Press return to continue...",RET G RANGE
  1. ;VALID DATE INPUT:
  1. ; YES= RE-ENTER RANGE DATES
  1. ; NO= DO PURGE
  1. H 2 D CHECK ;HANG 2 SEC. 1ST
  1. ;CHECK TO MAKE SURE USER WANTS
  1. ;TO PURGE THESE DATES
  1. ;LAST CHANCE!!!
  1. I PURGEIT="Y" D PURGE1 ;PURGE DATA USING FROM/TO DATES
  1. I PURGEIT="N" G RANGE ;RE-ENTER FROM/TO DATES
  1. Q
  1. CHECK ;GIVE USER ONE LAST CHANCE TO EXIT AND NOT PURGE
  1. ;SET LOCAL VARIABLES
  1. S PURGEIT="N" ;PURGEIT= FLAG TO SEE IF USER
  1. ;IS SURE THEY WANT TO PURGE
  1. ;BETWEEN FROM/TO DATES
  1. W @IOF ;CLEAR SCREEN
  1. W !!!,"Last chance..."
  1. S Y=FROM
  1. D DD^%DT ;CONVERT TO EXTERNAL DATE
  1. ; VALUE RETURNED IN Y
  1. W !!,"Date to purge from: ",Y
  1. S Y=TO
  1. D DD^%DT ;CONVERT TO EXTERNAL DATE
  1. ; VALUE RETURNED IN Y
  1. W !,"Date to purge to: ",Y
  1. SURE R !!,"Are you sure these dates are correct? N//",YN
  1. I YN?1.3"?" W !!,"Answer with: Y= Yes, N= No" G SURE
  1. I (YN?1"Y")!(YN?1"y")!(YN?1"YES")!(Y?1"yes") S PURGEIT="Y"
  1. Q
  1. PURGE1 ;PURGE ALL RECORDS WITHIN AND INCLUDING
  1. ;THE DATES INPUT BY USER (FROM/TO)
  1. ;SET LOCAL VARIABLES
  1. S DIK="^DIZ(1991020," ;GLOBAL ROOT OF FILE (BUGDRUG2)
  1. ;TO PURGE RECORDS FROM
  1. W @IOF ;CLEAR SCREEN
  1. W !!,"PURGING DATA...."
  1. S DATE=FROM-1 ;DATE= START DATE BACK ONE
  1. ; DAY TO INCLUDE THE
  1. ; 'FROM' DAY
  1. F S DATE=$O(^DIZ(1991020,"D",DATE)) Q:DATE>TO Q:'DATE D PURGE2
  1. ;FIND ALL "D" CROSS-REFERENCES
  1. ;FOR DATE RANGE TO DELETE
  1. ;CALL PURGE2 FOR ACTUAL PURGE
  1. W !!,"PURGE COMPLETE."
  1. Q
  1. PURGE2 ;FIND INTERNAL ENTRY NUMBER (DA) TO PURGE AND
  1. ;CALL FILEMAN DELETE (^DIK)
  1. S DA=0 ;DA= INTERNAL ENTRY (DEFAULT)
  1. F S DA=$O(^DIZ(1991020,"D",DATE,DA)) Q:'DA D ^DIK
  1. ;FIND ALL INTERNAL NUMBERS
  1. ;AND DELETE THEM THROUGH ^DIK
  1. Q
  1. CONT ;ASK USER WHETHER TO CONTINUE WITH PURGE
  1. ;SET LOCAL VARIABLES
  1. R !!!!!!!,"Do you want to continue purging data? N//",YN
  1. ;ASK USER WHETHER TO CONTINUE?
  1. I YN?1.3"?" W !!,"Answer with: Y= Yes, N= No" G CONT
  1. ;USER WANTS HELP
  1. I (YN?1"Y")!(YN?1"y")!(YN?1"YES")!(YN?1"yes") D RANGE G CONT
  1. Q
  1. KILL ;KILL LOCAL VARIABLES AND EXIT ROUTINE AZXRBUG2
  1. K FLE,%DT,FROM,TO,RET,PURGEIT,Y,DIK,DATE,DA,YN
  1. Q