First + Last words in a string

/*
First + Last words in a string

*/
PROCEDURE Main()
   CLS
   ?
   ? "First + Last words in a string"
   ?

   cUpString := "Miguel Cervantes de Saavedra"

   ? "Up String :", cUpString
   ?

   cNewString := LEFT( cUpString, AT( " ", cUpString ) )+; // First word
            SUBSTR( cUpString, RAT( " ", cUpString ) + 1 ) // Last word 

   ?
   ? "Method one ( manual ) :", cNewString // Miguel Saavedra

   aWords := HB_ATOKENS( cUpString )
   cNewString := aWords[ 1 ] + " " + ; // First word
                 ATAIL( aWords )       // Last word
   ?
   ? "Method two ( ATOKENS() ) :", cNewString // Miguel Saavedra

   *
   * TOKEN() function require libhbct
   *
   cNewString := TOKEN( cUpString,,1 ) + " " + ; // First word
                 TOKEN( cUpString )              // Last word 

   ?
   ? "Method three ( TOKEN() ) :", cNewString // Miguel Saavedra

   @ MAXROW(), 0
   WAIT "EOF FLWs.prg"

RETURN // FLWs.Main()

FLWs