File:  [Coherent Logic Development] / freem / contrib / %uxxxx.m
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Sun Jan 19 02:04:04 2025 UTC (6 months, 1 week ago) by snw
Branches: MAIN, CoherentLogicDevelopment
CVS tags: v0-63-1-rc1, v0-63-0-rc1, v0-63-0, v0-62-3, v0-62-2, v0-62-1, v0-62-0, start, HEAD
FreeM

    1: %uxxxx ; FreeM %u utility library - version 0.5.0.1
    2:  ; Jon Diamond - 1999-03-31
    3:  q
    4:  ; 
    5:  ; INITIALISATION
    6: init() n a
    7:  i $d(^%uparams) s a="^%uparams"
    8:  e  s a="^uparams"
    9:  s %ulang=$g(@a@("lang")) i %ulang="" s %ulang=0
   10:  s %uprompt=$g(@a@("prompt")) i %uprompt="" s %uprompt="^ulang"
   11:  s %uwork=$g(@a@("work")) i %uwork="" s %uwork="^uwork("""_$j_""")"
   12:  ; Really should be as below, but needs $system to be implemented
   13:  ;s %uwork=$g(@a@("work"),"^uwork("""_$system_""","""_$j_""")")
   14:  q "0,init^%uxxxx"
   15:  ; 
   16:  ; 
   17:  ; READ WITH PROMPT
   18: read(prompt,result,length,PX,PY,X,Y,timeout) 
   19:  n a,error
   20:  i '$d(%ulang) s error=$$init
   21:  s prompt=$g(prompt)
   22: %read1 i prompt'="" s error=$$write($$lprompt(prompt),$g(PX),$g(PY)) i error q error
   23:  i $g(result)'="" s error=$$write(" <"_result_"> ") i error q error
   24:  ; 
   25:  ; move to X,Y ********
   26:  i $g(X)'="" s $x=$g(X)
   27:  i $g(Y)'="" s $y=$g(Y)
   28:  i $g(timeout)="" d
   29:  . r a
   30:  e  d
   31:  . r a:$g(timeout)
   32:  ; 
   33:  ; **** hitting escape or escape sequence processing???
   34:  i a'="" s result=a
   35:  i a="@" s result=""
   36:  i a="^" q "-1,read^%uxxxx" ; *** Standard abort
   37:  i $g(length),$l(result)>length s error=$$error("Too many characters") g %read1
   38:  ; 
   39:  q "0,read^%uxxxx"
   40:  ; 
   41:  ; 
   42:  ; READ WITH NEWLINE FIRST
   43: readn(prompt,result,length,PX,PY,X,Y,timeout) 
   44:  n error
   45:  i '$d(%ulang) s error=$$init i error q error
   46:  s error=$$writep($g(prompt)) i error q error
   47:  q $$read("",.result,$g(length),"","",$g(X),$g(Y),$g(timeout))
   48:  ; 
   49:  ; 
   50:  ; READN FOR YES/NO
   51: readyn(prompt,result) 
   52:  n error,res,def
   53:  s def=$g(result),def=$$lprompt($s(def=1:"Y",def=0:"N",1:""))
   54:  i '$d(%ulang) s error=$$init i error q error
   55: %readyn1 s res=def
   56:  s error=$$readn(prompt,.res) i error<0 q error
   57:  s res=$$upper(res)
   58:  i res=$$lprompt("Y") s result=1
   59:  e  i res=$$lprompt("N") s result=0
   60:  e  s error=$$write(" - "_$$lprompt("Enter Y or N")) g %readyn1
   61:  q "0,readyn^%uxxxx"
   62:  ; 
   63:  ; Application Validation Error display after Read (of any kind)
   64: rerror(err)  i err?1"?".e q $$write(" "_err)
   65:  q $$write(" - "_$$lprompt(err))
   66:  ; 
   67:  ; WRITE TEXT
   68: write(text,X,Y) 
   69:  n error
   70:  i '$d(%ulang) s error=$$init i error q error
   71:  ; 
   72:  ; move to X,Y ********
   73:  i $g(X)'="" s $x=$g(X)
   74:  i $g(Y)'="" s $y=$g(Y)
   75:  w text
   76:  q "0,write^%uxxxx"
   77:  ; 
   78:  ; 
   79:  ; WRITE WITH NEWLINE
   80: writen(text) 
   81:  w !,text
   82:  q "0,writen^%uxxxx"
   83:  ; 
   84:  ; 
   85:  ; WRITE WITH NEWLINE/PROMPT
   86: writep(text) 
   87:  n error
   88:  i '$d(%ulang) s error=$$init() i error q error
   89:  w !,$$lprompt(text)
   90:  q "0,writep^%uxxxx"
   91:  ; 
   92:  ; 
   93:  ; WRITE WITH FORMAT
   94: writef(format,text) 
   95:  n error,a
   96:  i '$d(%ulang) s error=$$init i error q error
   97:  s format=$g(format)
   98:  f  q:format=""  s a=$p(format,","),format=$p(format,",",2,$l(format,",")) i a?."#"."!"!(a?1"?"1.n) x "w "_a
   99:  w $g(text)
  100:  q "0,writef^%uxxxx"
  101:  ; 
  102:  ; 
  103:  ; Create+write Error message
  104: error(error) 
  105:  i +error=-1 q $$writep("User abort")
  106:  s error=$$writep("Error - "_$$lprompt(error))
  107:  q error
  108:  ; 
  109:  ; LANGUAGE CONVERSION
  110: lprompt(prompt) i $g(prompt)="" q ""
  111:  ; Remove trailing spaces before look-up and re-apply after
  112:  ; Also everything after first -
  113:  ; Everything before ~ is left unchanged and ~ replaced by -
  114:  n s,t,u
  115:  s u="" i prompt["~" s u=$p(prompt,"~")_" - ",prompt=$p(prompt,"~",2,$l(prompt,"~"))
  116:  s t=$f(prompt,"-")-2
  117:  i 't s t=$l(prompt)
  118:  f t=t:-1 q:$e(prompt,t)'=" "
  119:  s s=$e(prompt,t,$l(prompt)),prompt=$e(prompt,1,t-1)
  120:  i prompt'="" s t=$g(@%uprompt@(%ulang,prompt)) i t'="" s prompt=t
  121:  q u_prompt_s
  122:  ; 
  123:  ; ********** UPPER/LOWER CONVERSION NEED TO HANDLE DIFFERENT LANGUAGES/CHARACTERS
  124: upper(text) 
  125:  s text=$tr(text,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
  126:  q text
  127:  ; 
  128: lower(text) 
  129:  s text=$tr(text,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")
  130:  q text
  131: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>