Exchange/SNA Manual

Send/Receive Program Example
Example Programs
E–6 104700 Tandem Computers Incorporated
Page 6 [1] $RJE.EXCHAPPL.EXAPPL 1991-06-04 13:36:52
EXCHANGE/SNA PROGRAMMATIC EXAMPLE
210. 000000 0 0 !PRINT^IT opens the line server's printer subdevice named #PR1.
211. 000000 0 0 ! Records are read from the subdevice until an EOF or other error
212. 000000 0 0 ! is returned by the line server. Each record read is written
213. 000000 0 0 ! to the output file, and vertical forms-control escape sequences
214. 000000 0 0 ! are translated to the appropriate calls to SETMODE.
215. 000000 0 0
216. 000000 0 0 PROC print^it;
217. 000000 1 0
218. 000000 1 0 BEGIN
219. 000000 1 1
220. 000000 1 1 INT i;
221. 000000 1 1 STRING vfu^channels[0:13] := ["BCDEFGHIJKL",0];
222. 000006 1 1
223. 000006 1 1 ! open printer subdevice!
224. 000006 1 1 server^file^name[4] ':=' "#PR1 ";
225. 000024 1 1 CALL OPEN (server^file^name, server^fnum, read^only^waited^io);
226. 000035 1 1 IF <>
227. 000035 1 1 THEN
228. 000036 1 1 BEGIN
229. 000036 1 2 CALL FILEINFO (server^fnum, error);
230. 000047 1 2 sbuffer ':=' ["CAN'T OPEN PRINT LINE SERVER-- ERROR: "] -> @sp;
231. 000060 1 2 write^count := @sp '-' @sbuffer;
232. 000064 1 2 CALL NUMOUT (sbuffer[write^count-3], error, 10, 3);
233. 000074 1 2 CALL WRITE (term^fnum,ibuffer, write^count);
234. 000104 1 2 CALL STOP;
235. 000111 1 2 END;
236. 000111 1 1
237. 000111 1 1 ! initialize counters !
238. 000111 1 1 records := 0;
239. 000113 1 1 error := 0;
240. 000115 1 1
241. 000115 1 1 ! set RECEIVE parameters !
242. 000115 1 1 CALL SETMODE (server^fnum, set^recv^params, esc^on^tr^on);
243. 000124 1 1 IF <>
244. 000124 1 1 THEN
245. 000125 1 1 BEGIN
246. 000125 1 2 CALL FILEINFO (server^fnum, error);
247. 000136 1 2 sbuffer ':=' ["SET RECEIVE PARAMETERS FAILED--ERROR: "] -> @sp;
248. 000147 1 2 write^count := @sp '-' @sbuffer;
249. 000153 1 2 CALL NUMOUT (sbuffer[write^count-3], error, 10, 3);
250. 000163 1 2 CALL WRITE (TERM^FNUM, ibuffer, write^count);
251. 000173 1 2 CALL STOP;
252. 000200 1 2 END;
253. 000200 1 1
254. 000200 1 1 ! receive the job's output !
255. 000200 1 1 DO
256. 000200 1 1 BEGIN ! loop until EOF or error !
257. 000200 1 2 CALL READ (server^fnum, server^buffer, read^count, count^read);
258. 000210 1 2 IF <>
259. 000210 1 2 THEN
260. 000211 1 2 BEGIN
261. 000211 1 3 CALL FILEINFO (server^fnum, error);
262. 000222 1 3 IF error = 1
263. 000222 1 3 THEN
264. 000225 1 3 BEGIN
265. 000225 1 4 sbuffer ':=' ["EOF--RECEIVED #### RECORDS"] -> @sp;
266. 000236 1 4 write^count := @sp '-' @sbuffer;