Annotation of freem/contrib/%uxxxx.m, revision 1.1.1.1
1.1 snw 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>