SQL Programming Manual for TAL

Examples of Dynamic NonStop SQL Programs
HP NonStop SQL Programming Manual for TAL527887-001
C-7
Dynamic SQL Program
Page 5 [1] $VOL1.S04.TALDYNEZ 1991-10-15 13:41:54
161. 000000 0 0 PROC GET^CMD(CMD);
162. 000000 1 0
163. 000000 1 0 STRING .CMD;
164. 000000 1 0
165. 000000 1 0 BEGIN
166. 000000 1 1 STRING COLUMN [0:9]; -- column to be used in
167. 000000 1 1 -- WHERE clause
168. 000000 1 1 STRING SEL^INDEX; -- selects which column to
169. 000000 1 1 -- put in WHERE clause
170. 000000 1 1 STRING PREDICATE [0:9]; -- comparison predicate to
171. 000000 1 1 -- use in WHERE clause
172. 000000 1 1 INT COL^SIZE; -- size of column name
173. 000000 1 1 INT PRED^SIZE; -- size of predicate string
174. 000000 1 1
175. 000000 1 1 -- Pre-load command with blanks:
176. 000000 1 1 CMD ':=' " " & CMD FOR MAXCMD - 1;
177. 000015 1 1
178. 000015 1 1 CMD ':=' "SELECT AVG(SALARY) FROM =EMPLOYEE WHERE " ->
@CMD^END;
179. 000026 1 1
180. 000026 1 1 -- Create a simple menu:
181. 000026 1 1 SBUF ':=' "PLEASE ENTER: "->@BUF^END;
182. 000037 1 1 CALL WRITE(HOME^TERM^NUM,IBUF,@BUF^END '-' @SBUF);
183. 000051 1 1 CALL WRITE(HOME^TERM^NUM,IBUF,0);
184. 000061 1 1
185. 000061 1 1 SBUF ':=' "1 -- To find average salary based on
employee #"->@BUF^END;
186. 000072 1 1 CALL WRITE(HOME^TERM^NUM,IBUF,@BUF^END '-' @SBUF);
187. 000104 1 1 SBUF ':=' "2 -- To find average salary based on job
code"->@BUF^END;
188. 000115 1 1 CALL WRITE(HOME^TERM^NUM,IBUF,@BUF^END '-' @SBUF);
189. 000127 1 1 SBUF ':=' "3 -- To find average salary based on
department #: "->@BUF^END;
190. 000140 1 1 CALL WRITE(HOME^TERM^NUM,IBUF,@BUF^END '-' @SBUF);
191. 000152 1 1 CALL WRITE(HOME^TERM^NUM,IBUF,0);
192. 000162 1 1
193. 000162 1 1 SBUF ':=' "Please enter selection: "->@BUF^END;
194. 000173 1 1 CALL WRITEREAD (HOME^TERM^NUM,IBUF,@BUF^END '-' @SBUF,
10, NUM^READ);
195. 000206 1 1
196. 000206 1 1 SEL^INDEX ':=' SBUF FOR NUM^READ;
197. 000213 1 1
198. 000213 1 1 CALL WRITE(HOME^TERM^NUM,IBUF,0);
199. 000223 1 1
200. 000223 1 1 CASE SEL^INDEX OF
201. 000225 1 1 BEGIN
202. 000225 1 2 "1" -> COLUMN ':=' "EMPNUM ";
203. 000236 1 2 COL^SIZE := 7;
204. 000240 1 2 "2" -> COLUMN ':=' "JOBCODE ";
205. 000252 1 2 COL^SIZE := 8;
206. 000254 1 2 "3" -> COLUMN ':=' "DEPTNUM ";
207. 000266 1 2 COL^SIZE := 8;
208. 000270 1 2 END;
209. 000313 1 1
210. 000313 1 1 CALL WRITE(HOME^TERM^NUM,IBUF,0);
211. 000323 1 1
212. 000323 1 1 SBUF ':=' "Please specify the comparison criteria:"
->@BUF^END;
213. 000334 1 1 CALL WRITE(HOME^TERM^NUM,IBUF,@BUF^END '-' @SBUF);
214. 000346 1 1 SBUF ':=' " (for example: > 500, = 1000, <= 250)" ->
@BUF^END;
215. 000357 1 1 CALL WRITE(HOME^TERM^NUM,IBUF,@BUF^END '-' @SBUF);
216. 000371 1 1 CALL WRITE(HOME^TERM^NUM,IBUF,0);
217. 000401 1 1