$! ********************************************************************** $! * MFORCE.COM * $! * Bring a DSM environment down ungracefully. * $! * * $! * This procedure requires WORLD privilege and the rights * $! * identifier DSM$MANAGER_environment. * $! * * $! * 24-JUL-1996 RDJ Command Procedure Creation. * $! ********************************************************************** $! $ Old_Privs = F$SetPrv("WORLD") $ If .NOT. F$Priv("WORLD") Then Exit %x2884 $! $ DSM_Environment = F$Edit(P1,"Trim,UpCase") $ Get_Environment: $ If DSM_Environment .NES. "" Then Goto Got_Environment $ Read/Error=Exit/Prompt="_Environment: " SYS$COMMAND DSM_Environment $ DSM_Environment = F$Edit(DSM_Environment,"Trim,UpCase") $ Goto Get_Environment $ Got_Environment: $ GoSub Check_Identifier $ GoSub Get_Env_Number $! $ ESC[0,8] = 27 $ Bell[0,8] = 7 $ Node = F$GetSyi("NodeName") $ Write SYS$OUTPUT Bell,Bell,Bell,Esc,"[1mWarning: This procedure will bring down the ''DSM_Environment'" $ Write SYS$OUTPUT "environment on node ''Node' ungracefully and may potentially cause" $ Write SYS$OUTPUT "database damage.",Esc,"[0m" $ Write SYS$OUTPUT "" $ Write SYS$OUTPUT "" $ Answer_Loop: $ Read/Prompt="Are you sure you want to continue (Y/N)? "/Error=Exit SYS$COMMAND Answer $ Answer = F$Extract(0,1,F$Edit(Answer,"Trim,UpCase")) $ If Answer .EQS. "N" Then Goto Forget_It $ If Answer .EQS. "Y" Then Goto Do_It $ Write SYS$OUTPUT Bell," Please answer YES or NO." $ Goto Answer_Loop $ Forget_It: $ Write SYS$OUTPUT "" $ Write SYS$OUTPUT "MFORCE Cancelled!" $ Goto Exit $ Do_It: $ Write_Demon = "DSM_DEMON_" + F$String(F$Integer(DSM_Number)) $ Nada = F$Context("Process",MForce_Context,"PRCNAM","''Write_Demon'","EQL") $ PID = F$PID(MForce_Context) $ If PID .EQS. "" $ Then $ Write SYS$OUTPUT "The DSM Write Demon for ''DSM_Environment' (environment #''DSM_Number') is not active on ''Node'" $ Goto Forget_It $ EndIf $ Stop/ID='PID' $ Goto Exit $! $ Exit: $ Set Process/Priv=('Old_Privs') $ Exit $! $! ********************************************************************** $! * Check_Identifier: Check for the DSM Manager identifier. * $! ********************************************************************** $ Check_Identifier: $ J = 0 $ J_Loop: $ ID = F$Element(J,",",F$GetJPI("","Process_Rights")) $ If ID .EQS. "," Then Goto No_Rights $ If ID .EQS. "DSM$MANAGER_''DSM_Environment'" Then Goto ID_Okay $ J = J + 1 $ Goto J_Loop $ No_Rights: $ Write SYS$OUTPUT "The rights identifier DSM$MANAGER_''DSM_Environment' is required for this procedure." $ Exit %x24 $ ID_Okay: $ Return $! $! ********************************************************************** $! * Get_Env_Number: Get the number of the DSM environment. * $! ********************************************************************** $ Get_Env_Number: $ DSM_Number = F$TrnLnm("DSM$ID_''DSM_Environment'","LNM$SYSTEM") $ If DSM_Number .EQS. "" $ Then $ Write SYS$OUTPUT "The ''DSM_Environment' DSM environment is not active on this node." $ Exit $ EndIf $ Return