This task is an easier (to code) variant of the Rosetta Code task: <big> &nbsp; [[Abbreviations, simple]]</big>.


For this task, the following &nbsp; ''command table'' &nbsp; will be used:
    Add ALTer  BAckup Bottom  CAppend Change SCHANGE  CInsert CLAst COMPress COpy
    COUnt COVerlay CURsor DELete CDelete Down DUPlicate Xedit EXPand EXTract Find
    NFind NFINDUp NFUp CFind FINdup FUp FOrward GET Help HEXType Input POWerinput
    Join SPlit SPLTJOIN  LOAD  Locate CLocate  LOWercase UPPercase  LPrefix MACRO
    MErge MODify MOve MSG Next Overlay PARSE PREServe PURge PUT PUTD  Query  QUIT
    READ  RECover REFRESH RENum REPeat  Replace CReplace  RESet  RESTore  RGTLEFT
    RIght LEft  SAVE  SET SHift SI  SORT  SOS  STAck STATus  TOP TRAnsfer Type Up

<!--
The unsorted list (above) was constructed to help ensure that program entries don't get tripped up by performing a left-to-right string comparison.
!-->

<!--
For the curious amongst you (and pack-rats of old publications, this is an old XEDIT command table; the sub-commands were extracted from:
                                                         Virtual Machine/
                                                         System Product

                                                         System Product
                                                         SP Editor
                                                         Command
                                                         Language
                                                         Reference
                                                         Summary

                                                         Release 4

                                                         SX24-5122-3



                                                         Fourth Edition (December 1984)

                                                         Information herein is extracted from
                                                         Virtual Machine/System Product System Product Editor Command and Macro Reference, SC24-5221.


This old version does  not  have some of the newer commands like  QQuit  and  PQUIT,  for instance,
and those commands that deal with  DBCS  (double-byte character set).
!-->

Notes concerning the above &nbsp; ''command table'':
::* &nbsp; it can be thought of as one long literal string &nbsp; (with blanks at end-of-lines)
::* &nbsp; it may have superfluous blanks
::* &nbsp; it may be in any case (lower/upper/mixed)
::* &nbsp; the order of the words in the &nbsp; ''command table'' &nbsp; must be preserved as shown
::* &nbsp; the user input(s) may be in any case (upper/lower/mixed)
::* &nbsp; commands will be restricted to the Latin alphabet &nbsp; (A ──► Z, &nbsp; a ──► z)
::* &nbsp; A valid abbreviation is a word that has:
:::* &nbsp; at least the minimum length of the number of capital letters of the word in the ''command table''
:::* &nbsp; compares equal (regardless of case) to the leading characters of the word in the ''command table''
:::* &nbsp; a length <u>not</u> longer than the word in the ''command table''
::::* &nbsp; '''ALT''', &nbsp; '''aLt''', &nbsp; '''ALTE''', &nbsp; and &nbsp; '''ALTER''' &nbsp; are all abbreviations of &nbsp; '''ALTer'''
::::* &nbsp; '''AL''', &nbsp; '''ALF''', &nbsp; '''ALTERS''', &nbsp; '''TER''', &nbsp; and &nbsp; '''A''' &nbsp;  <u>aren't</u> valid abbreviations of &nbsp; '''ALTer'''
::::* &nbsp; The number of capital letters in &nbsp; '''ALTer''' &nbsp; indicates that any abbreviation for &nbsp; '''ALTer''' &nbsp; must be at least three letters
::::* &nbsp; Any word longer than five characters <u>can't</u> be an abbreviation for &nbsp; '''ALTer'''
::::* &nbsp; '''o''',  &nbsp; '''ov''',  &nbsp; '''oVe''',  &nbsp; '''over''',  &nbsp; '''overL''',  &nbsp; '''overla''' &nbsp; are all acceptable abbreviations for &nbsp; '''Overlay'''
::* &nbsp; if there isn't any lowercase letters in the word in the ''command table'', &nbsp; then there isn't an abbreviation permitted

<!--
::* &nbsp; a Latin alphabet is used for this Rosetta Code task because it behaves well when letters are uppercased
!-->

;Task:
::* &nbsp; The command table needn't be verified/validated.
::* &nbsp; Write a function to validate if the user "words" &nbsp; (given as input) &nbsp; are valid &nbsp; (in the ''command table'').
::* &nbsp; If the word &nbsp; is &nbsp; valid, &nbsp; then return the full uppercase version of that "word".
::* &nbsp; If the word        isn't     valid, &nbsp; then return the lowercase string: &nbsp; <big> '''*error*''' </big> &nbsp; &nbsp; &nbsp; (7 characters).
::* &nbsp; A blank input &nbsp; (or a null input) &nbsp; should return a null string.
::* &nbsp; Show all output here.


;An example test case to be used for this task:
For a user string of:
  riG   rePEAT copies  put mo   rest    types   fup.    6       poweRin
the computer program should return the string:
  RIGHT REPEAT *error* PUT MOVE RESTORE *error* *error* *error* POWERINPUT

{{Template:Strings}}
<br><br>
