Exchange/RJE Manual
User-Exit Procedure
Example Programs
D–28 104698 Tandem Computers Incorporated
Page 8 [1] $RJE.JOSHI.UESRC 1991-06-13 13:25:30
SUBPROC DISCONNECT^LINE
311. 004625 1 1 !*****************************************************************************!
312. 004625 1 1 ! THIS SUBPROC SENDS A CONTROL DISCONNECT TO DISCONNECT THE LINE !
313. 004625 1 1 ! IN THE EVENT OF ANY ERROR WHILE DIALING. ONLY AFTER DISCONNECTING !
314. 004625 1 1 ! THE LINE SHOULD THE CONTROL BE TRANSFERRED BACK TO LINE SERVER. !
315. 004625 1 1 !*****************************************************************************!
316. 004625 1 1 SUBPROC disconnect^line ;
317. 004625 2 1 BEGIN
318. 004625 2 2
319. 004625 2 2 ! BUILD THE CP6100 MESSAGE HEADER TO DISCONNECT THE LINE
320. 004625 2 2
321. 004625 2 2 cp.cp^req.func := FUNC^CTL ; ! CP6100 CONTROL REQUEST
322. 004631 2 2 cp.cp^req.modf := 3 ; ! DROP DTR ONLY , DO NOT WAIT FOR DSR
323. 004636 2 2 reqid := reqid '+' 1 ;
324. 004641 2 2 cp.cp^req.reqid := reqid ;
325. 004644 2 2 cp.cp^req.txtin := 0 ; ! MAX BYTES IN
326. 004647 2 2 cp.cp^req.txtout := 0 ;
327. 004652 2 2 CALL WRITEREAD(line^fnum,buf,$LEN(cp^template.cp^hdr),
328. 004652 2 2 $LEN(cp^template.cp^hdr),count ) ;
329. 004663 2 2 IF <>
330. 004663 2 2 THEN
331. 004664 2 2 BEGIN
332. 004664 2 3 CALL FILEINFO(line^fnum,error) ;
333. 004675 2 3 stbuf ':='
334. 004675 2 3 " **** DISCONNECT REQUEST: " & sxlinename FOR linenamelen -> @t;
335. 004711 2 3 t ':=' ",FILE MGT ERROR = " -> @t ;
336. 004722 2 3 CALL NUMOUT(t,error,10,3) ;
337. 004730 2 3 @t := @t '+' 3 ;
338. 004733 2 3 CALL WRITE(out^file^num,tbuf,1) ;
339. 004743 2 3 CALL WRITE(out^file^num,tbuf,(@t '-' @stbuf)) ;
340. 004755 2 3 END ;
341. 004755 2 2
342. 004755 2 2 CALL AWAITIO(line^fnum,,count,,max^wait) ;
343. 004766 2 2 IF <>
344. 004766 2 2 THEN
345. 004767 2 2 BEGIN
346. 004767 2 3 CALL FILEINFO(line^fnum,error) ;
347. 005000 2 3 stbuf ':='
348. 005000 2 3 " **** DISCONNECT CONTROL AWAITIO " & sxlinename FOR linenamelen -> @t; ;
349. 005014 2 3 t ':=' ",FILE MGT ERROR = " -> @t ;
350. 005025 2 3 CALL NUMOUT(t,error,10,3) ;
351. 005033 2 3 @t := @t '+' 3 ;
352. 005036 2 3 CALL WRITE(out^file^num,tbuf,1) ;
353. 005046 2 3 CALL WRITE(out^file^num,tbuf,(@t '-' @stbuf)) ;
354. 005060 2 3 END ;
355. 005060 2 2
356. 005060 2 2 IF cp.cp^rsp.status
357. 005060 2 2 THEN ! CP6100 ERROR
358. 005065 2 2 CALL log^cp^status ;
359. 005066 2 2
360. 005066 2 2 CALL CLOSE(out^file^num); ! CLOSE THE LOG FILE
361. 005073 2 2
362. 005073 2 2 END ;
363. 005155 1 1