Welcome | spec | C-PLOT | Support | Users | Contact
 
Contents -> STANDARD MACRO GUIDE -> Utility Macros -> Basic Utility Macros
spec Manual


3.3.3. - Basic Utility Macros



These straightforward macros combine a number of built-in functions and commands to provide a higher level of functionality with minimal input. First, here is their usage:
    help [topic]                        # Display help files
    config                              # Edit hardware configuration
    onsim                               # Turn on simulate mode
    offsim                              # Turn off simulate mode
    debug [value]                       # Select debugging categories
    bug                                 # Mail a bug report
    whats object                        # Identify the object
    
    gpset variable value                # Comment if a variable has changed
    


Here are the definitions for some:
    # Examine help file, use default if no argument.
    def help  '
          if ($#)
              gethelp("$1");
          else {
              local t
              for (t="help";;)
                  if (gethelp(t) || (t = input("\nSubject?  ")) == ")
                      break
          }
    '
    
    # View (and modify), then reread configuration file.
    # Use -s flag if in simulate mode.  Re-order motor numbers
    # with _assign.  Check for monochromator mnemonics.
    def config '
          wait(-1)
          user_waitall
          sync
          unix(sprintf("%s/edconf %s %s/%s",\
                  SPECD, set_sim(-1)? "-s":", SPECD, SPEC))
          reconfig
          user_config
          _assign
          _assign_mono
    '
    def user_config ''
    
    # Turn simulate mode on.  Comment on printer and file if changed.
    def onsim '{
          local t
    
          if (!(t = set_sim(1))) { qcomment "Simulate mode ON" }
          printf("Simulate was %s, is now %s.\n", t? "on":"off",\
                                         set_sim(-1)? "ON":"OFF")
    }'
    # Turn simulate mode off.
    def offsim '{
          local t
    
          if (t = set_sim(0)) { qcomment "Simulate mode OFF" }
          printf("Simulate was %s, is now %s.\n", t? "on":"off",\
                                         set_sim(-1)? "ON":"OFF")
    }'
    
    # Easy way to set the debug level.
    # +arg adds bits to DEBUG.  -arg removes them.
    def debug '{
          local t
    
          if ($# == 0) {
                  gethelp("debug")
                  t = input(sprintf("\nDebug value (%d)? ", DEBUG))
          } else
                  t = "$*"
          if (index(t, "+"))      DEBUG |= 0+t
          else if (index(t, "-")) DEBUG &= ~(0-t)
          else                    DEBUG  = 0+t
    }'
    
    # Send a bug report to the administrator.
    def bug '
          print "The mail utility will be run for you.  Describe your"
          print "problem to the administrator.  When you are done, type ^D."
          {
            local s
            s = unix(sprintf("%s -s \"Bug from %s\" %s", MAIL, USER, ADMIN))
            printf("Bug report %ssent to %s.", s? "not ":", ADMIN)
          }
    '
    
    # Set something and comment if it has changed.
    def gpset '
          if ($1 != $2) {
                  comment "$2 reset from %g to %g" "$2,$1"
                  $2 = $1
          }
    '
    



  Top
  Prev | Next