home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 24 / CD_ASCQ_24_0995.iso / dos / tools / aurora21 / brkbd.aml < prev    next >
Text File  |  1995-08-10  |  24KB  |  637 lines

  1.  
  2. // -------------------------------------------------------------------
  3. // The Aurora Editor v2.1
  4. // Copyright 1993-1995 nuText Systems. All Rights Reserved Worldwide.
  5. //
  6. // Brief Keyboard definitions (included by MAIN.AML)
  7. //
  8. // If you have made any changes, save this file and select 'Recompile
  9. // the Editor' from the Set menu. Exit and re-enter the editor for
  10. // your changes to take effect.
  11. // -------------------------------------------------------------------
  12.  
  13. // -------------------------------------------------------------------
  14. //  Edit and File Manager windows
  15. // -------------------------------------------------------------------
  16.  
  17.   object  edit_fmgr
  18.  
  19.   // Controls
  20.   function  '≡'                                // close window
  21.     close
  22.   end
  23.  
  24.   // Menu activation
  25.   key  <esc>           gotobar                 // to last menu bar item (br)
  26.   key  <f10>           gotobar                 // to last menu bar item (br)
  27.   key  <alt h>         gotomenu "help"         // goto help pull-down menu (br)
  28.  
  29.   // Scroll
  30.   key  <pgdn>          pagedown                // scroll down (br)
  31.   key  <pgup>          pageup                  // scroll up (br)
  32.   key  <ctrl home>     row (getviewtop)        // to page top (br)
  33.   key  <ctrl end>      row (getviewbot)        // to page bottom (br)
  34.   key  <ctrl pgup>     row 1                   // to file top (br)
  35.   key  <ctrl pgdn>     row (getlines)          // to file bottom (br)
  36.   key  <ctrl c>        adjustrow               // center cursor (br)
  37.   key  <ctrl t>        adjustrow 1             // scroll to page top (br)
  38.   key  <ctrl b>        adjustrow (getviewrows) // scroll to page bottom (br)
  39.  
  40.   // scroll up one line (br)
  41.   key  <ctrl e>
  42.     rollrow -1
  43.     if getrow < getviewbot then
  44.       down
  45.     end
  46.   end
  47.  
  48.   // scroll down one line (br)
  49.   key  <ctrl d>
  50.     rollrow 1
  51.     if getrow > getviewtop then
  52.       up
  53.     end
  54.   end
  55.  
  56.   // File
  57.   key  <ctrl n>        opennew                 // new edit window
  58.   key  <alt e>         askopen                 // open prompt (br)
  59.   key  <alt b>         filelist                // file list (br)
  60.   key  <ctrl ->        close                   // close window (br)
  61.   key  <alt x>         closeall                // close all windows (br)
  62.   key  <shift f1>      quickref 'qw'           // quick function reference
  63.   key  <shift f2>      quickref 'fw'           // function reference
  64.  
  65.   // Window
  66.   key  <f1>            winlist                 // window list
  67.   key  <ctrl z>        maximize                // maximize window (br)
  68.   key  <alt f2>        maximize                // maximize window (br)
  69.   key  <ctrl a>        nextwindow              // next window
  70.   key  <f12>           prevwindow              // prev window
  71.   key  <shift f3>      tile 'v'                // tile vertical
  72.   key  <shift f4>      tile 'h'                // tile horizontal
  73.   key  <shift f5>      cascade                 // cascade
  74.   key  <ctrl o><q>     close                   // close window
  75.  
  76.   // Search
  77.   key  <ctrl s>        askscan                 // file scan prompt
  78.   key  <ctrl 6>        cyclebook               // cycle through bookmarks
  79.  
  80.   // go to bookmark
  81.   key  <alt j>         askbook "Go to bookmark [0-9]"
  82.  
  83.   // Print
  84.   key  <ctrl p>        print                   // print
  85.   key  <alt p>         print 'b'               // print block (br)
  86.  
  87.   // Set
  88.   key  <ctrl f1>       togglemode              // toggle video mode
  89.  
  90.   // Macro
  91.   key  <alt f7>        askopenkey              // open key macro (br)
  92.   key  <alt f8>        asksavekey              // save key macro (br)
  93.   key  <ctrl v>        askeval                 // macro command prompt
  94.   key  <alt f9>        askrun                  // DOS command prompt
  95.   key  <alt z>         shell                   // exit to DOS (br)
  96.   key  <shift f12>     pickmacro               // macro picklist
  97.   key  <ctrl f12>      runmac "maclist"        // macro menu
  98.  
  99.   // display version
  100.   key  <alt v>         say "Version is: " + getversion
  101.  
  102.   // undefined or unnamed keys
  103.   key <otherkey> (keycode)
  104.     say  (getkeyname (keycode)) + " not defined "
  105.   end
  106.  
  107.  
  108. // -------------------------------------------------------------------
  109. //  Prompts and Edit windows
  110. // -------------------------------------------------------------------
  111.  
  112.   object  prompt
  113.  
  114.   // Controls
  115.   function  '≡'        close                   // close window
  116.   end
  117.  
  118.   function  '*'        enter                   // simulate <enter>
  119.   end                                          //  (2-line box only)
  120.  
  121.   // Cursor
  122.   key  <left>          left                    // move cursor left (br)
  123.   key  <right>         right                   // move cursor right (br)
  124.   key  <home>          col 1                   // to column one (br)
  125.   key  <end>           col  getlinelen + 1     // to end of line (br)
  126.  
  127.   // Cursor + CUA-marking
  128.   key  <shift left>    left
  129.                        smark
  130.   key  <shift right>   right
  131.                        smark
  132.   key  <shift home>    col 1
  133.                        smark
  134.   key  <shift end>     col getlinelen + 1
  135.                        smark
  136.  
  137.   // Scroll
  138.   key  <alt left>      rollcol -(getviewcols - 1)   // page left
  139.   key  <alt right>     rollcol   getviewcols - 1    // page right
  140.  
  141.   // Editing
  142.   key  <alt i>         setting 'I' TOGGLE      // toggle insert mode (br)
  143.  
  144.   // delete character/block (br)
  145.   key  <del>
  146.     if getmarkbuf == getcurrbuf then
  147.       deleteblock2
  148.     else
  149.       if wintype? "edit" then
  150.         send "delchar2"
  151.       else
  152.         delchar
  153.       end
  154.     end
  155.   end
  156.  
  157.   key  <backspace>     backsp                  // delete left character (br)
  158.   key  <alt k>         delchar (getlinelen)    // erase to end of line (br)
  159.   key  <ctrl k>        delchar getcol - 1 1    // erase to beginning of line (br)
  160.   key  <alt q>         literal                 // enter literal character (br)
  161.   key  <alt =>         asciilist               // display ascii chart
  162.  
  163.   // Block
  164.   key  <alt a>         destroymark             // mark character (br)
  165.                        markchar
  166.  
  167.   key  <alt c>         destroymark             // mark column (br)
  168.                        markcolumn
  169.  
  170.   key  <alt m>         destroymark             // mark stream (br)
  171.                        markstream
  172.  
  173.   // paste from clipboard to prompt (br)
  174.   key  <ins>
  175.                        oldmark = usemark _ClipName
  176.                        instext (getmarktext)
  177.                        usemark oldmark
  178.                        col  getlinelen + 1
  179.  
  180.   // copy from prompt to clipboard (br)
  181.   key  <grey+>         copy
  182.  
  183.   // Prompt history
  184.   key  <up>            prevhist                // retrieve prev prompt
  185.   key  <down>          nexthist                // retrieve next prompt
  186.   key  <pgup>          askhistory              // history popup menu
  187.   key  <pgdn>          askhistory              // history popup menu
  188.  
  189.   // Exit
  190.   key  <esc>           close                   // quit prompt
  191.   key  <ctrl ->        close
  192.  
  193.   // non-function keys
  194.   key  <char> (character)                      // typeable keys
  195.     write character
  196.   end
  197.  
  198.   // filename completion
  199.   key  <ctrl tab>      askcomplete             // filename completion
  200.   key  <tab>           askcomplete             // filename completion
  201.   end
  202.  
  203.  
  204. // -------------------------------------------------------------------
  205. //  Edit windows
  206. // -------------------------------------------------------------------
  207.  
  208.   object  edit
  209.  
  210.   // Controls
  211.   function  '≡'
  212.     close                                      // close window
  213.   end
  214.  
  215.   // Menu
  216.   key  <esc>           gotobar                 // to last menu bar item (br)
  217.  
  218.   // Cursor
  219.   key  <up>            up                      // move cursor up (br)
  220.   key  <down>          down                    // move cursor down (br)
  221.  
  222.   // Cursor + CUA-marking
  223.   key  <shift up>      up
  224.                        smark
  225.   key  <shift down>    down
  226.                        smark
  227.  
  228.   // brief <home> key emulation (br)
  229.   key <home>
  230.     col 1                                      // goto column 1
  231.     smark                                      // cua marking
  232.     keycode = getkey                           // get next key
  233.     if keycode == <home> then                  // <home> pressed 2nd time?
  234.       row (getviewtop)                         // goto to page top
  235.       smark                                    // cua marking
  236.       keycode = getkey                         // get next key
  237.       if keycode == <home> then                // <home> pressed 3rd time?
  238.         row 1                                  // goto to top of file
  239.         smark                                  // cua marking
  240.       else
  241.         queuekey keycode                       // execute key normally
  242.       end
  243.     else
  244.       queuekey keycode                         // execute key normally
  245.     end
  246.   end
  247.   key <shift home>  call <home>                // cua-marking
  248.  
  249.   // brief <end> key emulation (br)
  250.   key <end>
  251.     col  getlinelen + 1                        // goto end-of-line
  252.     smark                                      // cua marking
  253.     keycode = getkey                           // get next key
  254.     if keycode == <end> then                   // <end> pressed 2nd time?
  255.       row (getviewbot)                         // goto to page bottom
  256.       smark                                    // cua marking
  257.       keycode = getkey                         // get next key
  258.       if keycode == <end> then                 // <end> pressed 3rd time?
  259.         row (getlines)                         // goto to bottom of file
  260.         smark                                  // cua marking
  261.       else
  262.         queuekey keycode                       // execute key normally
  263.       end
  264.     else
  265.       queuekey keycode                         // execute key normally
  266.     end
  267.   end
  268.   key <shift end>  call <end>                  // cua-marking
  269.  
  270.   key  <alt home>      col (getviewleft)       // leftedge (br)
  271.   key  <alt end>       col (getviewright)      // rightedge (br)
  272.  
  273.   key  <enter>         enter                   // enter key (br)
  274.   key  <greyenter>     enter                   // keypad enter key
  275.   key  <backspace>     backsp                  // delete left char (br)
  276.   key  <alt backspace> delword _CSet           // delete right word (br)
  277.   key  <tab>           tabright                // tab right (br)
  278.   key  <shift tab>     tableft                 // tab left (br)
  279.  
  280.   key  <ctrl left>     prevword                // find left word (br)
  281.                        smark
  282.   key  <ctrl right>    nextword                // find right word (br)
  283.                        smark
  284.  
  285.   // Scroll
  286.   key  <pgdn>          pagedown                // scrolldown (br)
  287.   key  <pgup>          pageup                  // scrollup (br)
  288.  
  289.   // Scroll + CUA-marking
  290.   key  <shift pgdn>    pagedown
  291.                        smark
  292.   key  <shift pgup>    pageup
  293.                        smark
  294.  
  295.   key  <ctrl home>     row (getviewtop)        // to page top (br)
  296.                        smark
  297.   key  <ctrl end>      row (getviewbot)        // to page bottom (br)
  298.                        smark
  299.  
  300.   key  <ctrl pgup>     row 1                   // to file top (br)
  301.                        smark
  302.   key  <ctrl pgdn>     row (getlines)          // to file bottom (br)
  303.                        smark
  304.  
  305.   // File
  306.   key  <alt r>         askinsert               // open and insert prompt (br)
  307.   key  <ctrl ]>        openword                // open file at cursor
  308.   key  <alt o>         askname                 // rename prompt (br)
  309.   key  <alt n>         nextfile                // next file (br)
  310.   key  <alt ->         prevfile                // prev file (br)
  311.   key  <ctrl ->        close                   // close file/window (br)
  312.   key  <ctrl x>        closeall 's'            // saveall & closeall (br)
  313.   key  <alt f>         say "File is: " + getbufname  // display filename (br)
  314.  
  315.   // Window
  316.  
  317.   // create window (br)
  318.   key  <f3>
  319.     say "Select side for new window (use cursor keys)"
  320.     case getkey
  321.       when <left>, <right>
  322.         splitwin 'v'
  323.       when <up>, <down>
  324.         splitwin 'h'
  325.     end
  326.     display
  327.   end
  328.  
  329.   // delete window (br)
  330.   key  <f4>
  331.     if getwincount > 1 then
  332.       deletewin
  333.     end
  334.   end
  335.  
  336.   key  <ctrl o><w>     copywin                 // copy window
  337.   key  <ctrl f8>       toolbar                 // display tool bar
  338.  
  339.   // Block
  340.   key  <alt l>         destroymark             // mark line (br)
  341.                        markline
  342.  
  343.   key  <ctrl o><d>     deleteblock2            // delete block
  344.   key  <shift f7>      shiftblock -1           // unindent block
  345.   key  <shift f8>      shiftblock  1           // indent block
  346.   key  <ctrl o><f>     fillblock2              // fill block with string
  347.   key  <ctrl o><r>     formatblock2            // reformat block
  348.   key  <alt y>         formatblock2 "rj"       // reformat & right just block
  349.   key  <alt w>         saveblock2              // save block (br)
  350.   key  <ctrl o><s>     sortblock2              // sort block
  351.   key  <ctrl o><u>     caseblock               // change block to uppercase
  352.   key  <shift f9>      quote                   // quote a block
  353.   key  <ctrl k><c>     justblock2 'c'          // center a block
  354.  
  355.   // Search
  356.  
  357.   // brief-style find/replace (always uses command-line prompts)
  358.   function  findbr (tran reverse)
  359.     find_str = ask (if? reverse '' '') +
  360.                    (if? tran " Pattern:" " Search for:") "_find1" '' '' 'c'
  361.     if find_str then
  362.       addhistory "_find1" find_str
  363.       if tran then
  364.         tran_str = ask "Replacement:" "_find2" '' '' 'c'
  365.         if not tran_str then
  366.           return
  367.         end
  368.         addhistory "_find2" tran_str
  369.         search_str = joinstr '' find_str tran_str _SearchOpt + reverse
  370.         addhistory "_repl" search_str
  371.       else
  372.         search_str = joinstr '' find_str _SearchOpt + reverse
  373.       end
  374.       search2 search_str
  375.       addhistory "_find" search_str
  376.     end
  377.   end
  378.  
  379.   key  <f5>            findbr                  // search forward (br)
  380.   key  <alt s>         findbr                  // search forward (br)
  381.   key  <alt f5>        findbr '' 'r'           // search backward (br)
  382.   key  <shift f5>      findlast                // search again (br)
  383.  
  384.   key  <f6>            findbr 't'              // translate forward (br)
  385.   key  <alt t>         findbr 't'              // translate forward (br)
  386.   key  <alt f6>        findbr 't' 'r'          // translate backward (br)
  387.   key  <shift f6>                              // translate again (br)
  388.     search2 (gethiststr "_repl")
  389.   end
  390.  
  391.   // toggle a default search option
  392.   function  toggleopt (option)
  393.     search_opt = _SearchOpt
  394.     setobj _SearchOpt  (if pos option search_opt then
  395.                           sub option '' search_opt
  396.                         else
  397.                           search_opt + option
  398.                         end)  "prf"
  399.   end
  400.  
  401.   function  togglecase
  402.     toggleopt 'i'
  403.     say "Case sensitivity " + (if? (pos 'i' _SearchOpt) "Off" "On")
  404.   end
  405.  
  406.   function  toggleregx
  407.     toggleopt 'x'
  408.     say "Regular expressions " + (if? (pos 'x' _SearchOpt) "On" "Off")
  409.   end
  410.  
  411.   key  <ctrl f5>       togglecase              // case sens toggle (br)
  412.   key  <ctrl f6>       toggleregx              // reg expression toggle (br)
  413.  
  414.   key  <ctrl i>        isearch                 // incremental search
  415.   key  <ctrl h>        askfindo                // find occurrences
  416.  
  417.   // goto routine (br)
  418.   function  gotoroutine
  419.     string = case  getext (getbufname)
  420.                when ".C", ".CPP"
  421.                  "^[a-zA-Z_].*\\(.*[~;]$"
  422.                when ".AML"
  423.                  "^ *{function}|{key}.*$"
  424.                when ".PAS"
  425.                  "{procedure}|{function} +[a-zA-Z_]"
  426.                when ".PRG", ".SPR", ".MPR", ".QPR", ".FMT", ".FRG", ".LBG", ".CH"
  427.                  "^{procedure}|{function} +[a-zA-Z_]"
  428.                otherwise
  429.                  ""
  430.              end
  431.     if string then
  432.       findo string + "/ix"
  433.     else
  434.       say "File extension not supported"
  435.     end
  436.   end
  437.  
  438.   key  <ctrl g>       gotoroutine              // goto language routine (br)
  439.  
  440.   // set bookmarks (br)
  441.   key  <alt 1>         placebook '1'
  442.   key  <alt 2>         placebook '2'
  443.   key  <alt 3>         placebook '3'
  444.   key  <alt 4>         placebook '4'
  445.   key  <alt 5>         placebook '5'
  446.   key  <alt 6>         placebook '6'
  447.   key  <alt 7>         placebook '7'
  448.   key  <alt 8>         placebook '8'
  449.   key  <alt 9>         placebook '9'
  450.   key  <alt 0>         placebook '0'
  451.  
  452.   key  <ctrl 2>        quickbook               // set quick bookmark
  453.   key  <alt g>         askrow                  // go to line prompt (br)
  454.   key  <ctrl [>        gotomatch2              // find matching char
  455.  
  456.   // Fold
  457.   key  <alt \>                                 // open or close fold
  458.     if fold? then
  459.        openfold
  460.     else
  461.        closefold
  462.     end
  463.   end
  464.   key  <alt [>         foldall 'os'            // open all folds
  465.   key  <alt ]>         foldall 'cs'            // close all folds
  466.  
  467.   // Edit
  468.   key  <alt u>         undo                    // undo last change (br)
  469.   key  <grey*>         undo                    // undo last change (br)
  470.   key  <ctrl u>        redo                    // undo last change (br)
  471.  
  472.   key  <ctrl enter>    insline                 // insert line (br)
  473.                        down
  474.                        col 1
  475.  
  476.   key  <alt d>         delline                 // delete line (br)
  477.  
  478.   key  <ctrl o><t>     timestamp               // date/time stamp
  479.   key  <ctrl o><x>     tabfile                 // expand tabs
  480.   key  <ctrl \>        hiliteword              // highlight words
  481.  
  482.   // Clipboard
  483.   key  <grey->         cut                     // cut (br)
  484.   key  <ctrl grey->    cut 'a'                 // cut append
  485.   key  <grey+>         copy                    // copy (br)
  486.   key  <ctrl grey+>    copy 'a'                // copy append
  487.   key  <ins>           paste                   // paste (br)
  488.   key  <ctrl grey*>    paste 'o'               // paste over
  489.   key  <ctrl grey/>    clear                   // clear clipboard
  490.  
  491.   // Set
  492.   key  <alt f3>        setting 'A' TOGGLE      // autoindent toggle (br)
  493.   key  <ctrl w>        setting 'B' TOGGLE      // toggle file backup (br)
  494.   key  <alt f4>        setting 'T' TOGGLE      // text translate toggle
  495.  
  496.   // Macro
  497.   key  <alt f10>       compilemacro2 (getbufname)  // compile current file (br)
  498.   key  <shift f11>     runmacro2 (getbufname)      // run current file
  499.  
  500.   // non-function (typeable) keys
  501.   key  <char> (character)                      // typeable keys
  502.     write character
  503.   end
  504.  
  505.   // Other
  506.   key  <ctrl r>        askrepkey               // repeat entered keys (br)
  507.  
  508.   // invoke a spell checker from within an edit window
  509.   // (replace 'jspell ' with your favorite spell checker)
  510.   key  <f11>
  511.     save                                       // save the current file
  512.     run  "jspell " + getbufname  "ck"          // call spellchecker
  513.     reopen                                     // reopen current file
  514.   end
  515.  
  516.  
  517. // -------------------------------------------------------------------
  518. //  File Manager windows
  519. // -------------------------------------------------------------------
  520.  
  521.   object  fmgr
  522.  
  523.   // Menu activation
  524.   key  <tab>           gotobar2                // to drive menu bar
  525.  
  526.   // Cursor
  527.   key  <left>          rollcol -1              // scroll left one column
  528.   key  <right>         rollcol  1              // scroll right one column
  529.   key  <home>          col 1                   // scroll to column one
  530.  
  531.   key  <up>            up                      // move cursor up
  532.   key  <down>          down                    // move cursor down
  533.  
  534.   key  <shift up>      fmark                   // mark files
  535.                        up
  536.   key  <shift down>    fmark                   // mark files
  537.                        down
  538.  
  539.  
  540.  
  541.   // file manager commands (single character command codes)
  542.   key  <char> (c)
  543.  
  544.     // toggle file mark
  545.     if c == ' ' then
  546.       fmark
  547.  
  548.     // <shift-character> commands
  549.     elseif shiftkey? then
  550.       case  locase c
  551.         when 'o'     fopen 'o'                   // open file/directory
  552.         when 'e'     fopen 'e'                   // open file/directory
  553.         when 'z'     fopen "ze"                  // open maximized
  554.         when 'b'     fopen 'b'                   // open binary file
  555.         when 'y'     fopen "be"                  // open binary in one window
  556.         when 'k'     openkey2 (getffile)         // open key macro file
  557.         when 'm'     fmove                       // move file
  558.         when 'c'     fcopy                       // copy file
  559.         when 'd'     fdelete                     // delete file
  560.         when 'n'     frename                     // rename file
  561.         when 'r'     frun 'c'                    // run program/batch file
  562.         when 'p'     fprint                      // print file
  563.         when 'a'     fattr                       // change file attributes
  564.         when 't'     ftouch                      // touch file
  565.  
  566.         // spell checker
  567.         when 's'     run "jspell " + getffile  "ck"
  568.  
  569.         // unarchive .ZIP or .LZH files
  570.         when 'u'
  571.           f = getffile
  572.           run (if? (pos ".lzh" f 'i') "lha e " "pkunzip ") + f  "ck"
  573.           reopen
  574.  
  575.         // view .ZIP or .LZH archives
  576.         when 'v'
  577.           f = getffile
  578.           runcap (if? (pos ".lzh" f 'i') "lha v " "pkunzip -v ") + f
  579.       end
  580.  
  581.     // hotkey to files
  582.     else
  583.       onhotkey c
  584.     end
  585.  
  586.   // File
  587.   key  <ctrl backspace>   fup                  // parent directory
  588.  
  589.   // Mark
  590.   key  <alt m>         fmark "ma"              // mark all files
  591.   key  <alt u>         fmark "ua"              // unmark all
  592.  
  593.   // Command
  594.   key  <enter>         fopen '1'               // open file (one only)
  595.   key  <ctrl enter>    fopen 'q'               // open file (close fmgr)
  596.   key  <del>           fdelete                 // delete file
  597.  
  598.   // Sort
  599.   key  <alt n>         fsort 'n'               // sort by name
  600.   key  <alt s>         fsort 's'               // sort by size
  601.   key  <alt d>         fsort 'd'               // sort by date/time
  602.   key  <alt o>         fsort 'o'               // no sort (DOS order)
  603.  
  604.   // Print
  605.   key  <ctrl p>        print                   // print fmgr contents
  606.   end
  607.  
  608.  
  609. // -------------------------------------------------------------------
  610. //  Movable/Sizable windows
  611. // -------------------------------------------------------------------
  612.  
  613.   object  win
  614.  
  615.   key  <f2>            sizekey                 // move/size with kbd (br)
  616.   key  <ctrl f2>       pankey                  // pan video with kbd
  617.  
  618.   key  <alt ins>       sizewin -2 -1 -2 -1 2   // move window northwest
  619.   key  <alt del>       sizewin  2  1  2  1 2   // move window southeast
  620.   end
  621.  
  622.  
  623. // -------------------------------------------------------------------
  624. //  All windows
  625. // -------------------------------------------------------------------
  626.  
  627.   object  mon
  628.  
  629.   // key macros (br)
  630.   key  <f7>            record                  // toggle record setting
  631.   key  <f8>            play                    // play scrap key macro
  632.  
  633.   // define multi-key prefixes
  634.   key  <ctrl o>        prefix <ctrl o>         // define <ctrl o> prefix
  635.   key  <ctrl q>        prefix <ctrl q>         // define <ctrl q> prefix
  636.  
  637.