Exchange/RJE Manual
Send/Receive Program Example
Example Programs
104698 Tandem Computers Incorporated D–17
Page 18 [1] $RJE.EXCHAPPL.RJEPROG 1991-06-17 11:05:47
MAIN PROCEDURE
791. 000131 1 2 IF scommand = ["RECV"]
792. 000131 1 2 THEN
793. 000142 1 2 case^index := 1;
794. 000144 1 2 IF scommand = ["EXIT"]
795. 000144 1 2 THEN
796. 000155 1 2 case^index := 2;
797. 000157 1 2 IF scommand <> "SEND" and scommand <> "RECV" and scommand <> "EXIT"
798. 000157 1 2 THEN
799. 000212 1 2 case^index := 3;
800. 000214 1 2
801. 000214 1 2 CASE (case^index) OF
802. 000216 1 2 BEGIN
803. 000216 1 3 !0! BEGIN
804. 000216 1 CE0 CALL send;
805. 000220 1 4 END;
806. 000221 1 CE1 !1! BEGIN
807. 000221 1 4 CALL receive;
808. 000223 1 4 END;
809. 000225 1 CE2 !2! BEGIN
810. 000225 1 4 sbuf ':=' ["BYE Y'ALL"] -> @sp;
811. 000236 1 4 write^count := @sp '-' @sbuf;
812. 000242 1 4 CALL write (term^fnum, ibuf, null);
813. 000252 1 4 CALL write (term^fnum, ibuf, write^count);
814. 000262 1 4 IF <>
815. 000262 1 4 THEN
816. 000263 1 4 BEGIN
817. 000263 1 5 CALL FILEINFO (term^fnum, error);
818. 000274 1 5 CALL DEBUG;
819. 000275 1 5 END;
820. 000275 1 4 END;
821. 000276 1 CE3 OTHERWISE
822. 000276 1 3 BEGIN
823. 000276 1 4 sbuf ':=' [bel, "TRY AGAIN -- EXPECTS SEND, RECV, or EXIT"]->@sp;
824. 000307 1 4 write^count := @sp '-' @sbuf;
825. 000313 1 4 CALL write (term^fnum, ibuf, null);
826. 000323 1 4 CALL write (term^fnum, ibuf, write^count);
827. 000333 1 4 IF <>
828. 000333 1 4 THEN
829. 000334 1 4 BEGIN
830. 000334 1 5 CALL FILEINFO (term^fnum, error);
831. 000345 1 5 CALL DEBUG;
832. 000346 1 5 END;
833. 000346 1 4 END;
834. 000346 1 3 END;
835. 000362 1 2 END UNTIL scommand = "EXIT" or end^loop = 1; ! end loop if EXIT or error
836. 000376 1 1
837. 000376 1 1 ! reopen the EXCHANGE/RJE line server process named $LNSRV !
838. 000376 1 1 CALL OPEN (server^open^name, server^fnum); ! single open; wait i/o
839. 000406 1 1 IF <>
840. 000406 1 1 THEN
841. 000407 1 1 BEGIN
842. 000407 1 2 CALL FILEINFO (server^fnum, error); ! use -1 if open fails !
843. 000420 1 2 sbuffer ':=' ["CAN'T REOPEN $LNSRV -- ERROR: "] -> @sp;
844. 000431 1 2 write^count := @sp '-' @sbuffer;
845. 000435 1 2 CALL NUMOUT (sbuffer[write^count-3], error, 10, 3);
846. 000445 1 2 CALL end^it^all (ibuffer, write^count);
847. 000453 1 2 END;