&LABEL PROC  ,,&N=0,&OPT=1,&CODE=
XM7RTN   NAME
FOGHORN  NAME
.* * * * *  * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
.*                                                                  *
.*   UNIVAC CONTAINING ITS PROPRIETARY,CONFIDENTIAL INFORMATION     *
.*                                                                  *
.*    THE FOLLOWING PROGRAMS ARE THE SOLE PROPERTY OF SPERRY        *
.*                                                                  *
.* * * * *  * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
         GBLB  &SVFLAG
         SPACE 2
.*       MACRO FOGHORN IS A RETURN MACRO WHICH ALLOWS FOR TWO TYPES OF
.*       RETURNS, ONE IN WHICH A BRANCH OF SOME SPECIFIED NUMBER BYTES
.*       PAST WHERE REGISTER 14 IS POINTING, THE OTHER IN WHICH A
.*       BRANCH REGISTER 14 IS MADE ; IN BOTH CASES A RETURN CODE CAN
.*       BE PASSED IN REGISTER 15 IF OPT=2 IS SPECIFIED WHICH
.*       BYPASSES THE RESTORING OF R15-R1 AND THE CODE IS SPECIFIED AS
.*     CODE=
&LABEL   DC    0H'0'                   DEFINE LABEL
         AIF   (&SVFLAG).A5
         L     13,4(13)      RESTORE POINTER
.A5      AIF   (&OPT EQ 2).A1  OPT=1 => RESTORE 14-12
         LM    14,12,12(13)  RESTORE REGISTERS
         AGO   .A2
.A1      L     14,12(0,13)   RESTORE REGISTER 14
         LM    2,12,28(13)   RESTORE REGISTERS 2-12
.A2      MVI   12(13),X'FF'  RETURN IDENTIFIER
         AIF   ('&CODE' EQ '').A3  NULL CODE IMPLIES NO RETURN CODE
.*       PASSED IN REGISTER 15
         LA    15,&CODE      LOAD CODE INTO REGISTER 15
.A3      AIF   (&N NE 0).A4  N=0 IMPLIES NORMAL BR 14
         BR    14
         SPACE 2
         AGO   .A6
.A4      B     &N.(14)       NON STANDARD RETURN
         SPACE 2
.A6      ANOP
         END
