*DECK DLAREP USETEXT DLFPDEF USETEXT ABH USETEXT DEQCOM USETEXT DLTLC USETEXT NP$NWN1 USETEXT OUTCDA USETEXT WRDPAIR USETEXT ZHRCD PROC DLAREP; # AIP DEBUG LOG FILE HEADER REPORT # *IF DEF,IMS # * *1DC DLAREP * * 1. PROC NAME AUTHOR DATE. * DLAREP S.KRULEVITCH 78/12/19 * * 2. FUNCTIONAL DESCRIPTION. * FORMATS AIP DEBUG LOG FILE HEADERS. * * 3. METHOD USED. * SWITCH ON OPERATION CODE TO FORMAT DATA * * 4. ENTRY PARAMETERS. * ZHRCD - CONTAINS DEBUG LOG FILE ENTRY * * 5. EXIT PARAMETERS. * DLCC TEXT LENGTH IN CHARACTERS * TRUNC TEXT LENGTH IN CHARACTERS * * 6. COMDECKS CALLED AND SYMPL TEXTS USED. * ABH DEQCOM DLFPDEF DLTLC * NP$DBA NP$DLA NP$NWNC OUTCDA WRDPAIR * NP$DBA NP$DLA OUTCDA WRDPAIR * ZHRCD * * 7. ROUTINES CALLED. * DLDISDE CONVERT FIELD TO DECIMAL DISPLAY * DLDISO CONVERT FIELD TO OCTAL DISPLAY * DLWRITC WRITE LINE TO CIO BUFFER * * 8. DAYFILE MESSAGES. * NONE. * # *ENDIF # EXTERNAL REFERENCES # XREF BEGIN PROC DLDISDE; # CONVERT FIELD TO DECIMAL DISPLAY # PROC DLDISO; # CONVERT FIELD TO OCTAL DISPLAY # PROC DLWRITC; # WRITE LINE TO CIO BUFFER # END # COMMON VARIABLES # BASED ARRAY DBGLG P(2); *CALL NP$DBA BASED ARRAY DATLINE P(4); *CALL NP$DLA # LOCAL VARIABLES # BEGIN # ITEM DEFINITIONS # ITEM CHARWD C(WC); # TEMPORARY VARIABLE # ITEM I; # INDEX VARIABLE FOR TEXT # ITEM LINLEN; # LENGTH OF OUTPUT LINE # # # # ARRAY DEFINITIONS # # # ARRAY LINE1 P(7); # CHARACTER ARRAY FOR FORMATTING LINE 1 # BEGIN ITEM L1$NAME C(0, 0,10); # PROCEDURE NAME # ITEM L1$CALL C(1, 0, 6); # CALL ADDRESS # ITEM L1$FMT1 C(1,36, 4); ITEM L1$WRD1 C(1,0,WC); ITEM L1$FMT2 C(2, 0, 4); ITEM L1$CLN C(2,24, 6); # ACN OR ALN VALUE FOR GETS # ITEM L1$HAPT C(2,24, 6); # HEADER ADDRESS FOR PUTS # ITEM L1$WRD2 C(2,0,WC); ITEM L1$FMT3 C(3, 0, 7); ITEM L1$HAGT C(3,24, 6); # HEADER ADDRESS FOR GETS # ITEM L1$TAP1 C(3,42, 3); # TEXT ADDR FOR PUT (LEFT 3) # ITEM L1$NAPT C(3,42, 3); # NUMBER OF FRAGMENTS FOR PUTF # ITEM L1$WRD3 C(3,0,WC); ITEM L1$TAP2 C(4, 0,10); # TEXT ADDR FOR PUT (RIGHT 3) # ITEM L1$FMT4 C(4, 0, 8); ITEM L1$TAG1 C(4,36, 4); # TEXT ADDR FOR GET (LEFT 4) # ITEM L1$NAGT C(4,42, 3); ITEM L1$TAA1 C(4,48, 2); # TAA ADDR FOR PUTF (LEFT 2) # ITEM L1$WRD4 C(4,0,WC); ITEM L1$TAA2 C(5, 0,10); # TAA ADDR FOR PUTF (RIGHT 4) # ITEM L1$FMT5 C(5, 0,10); ITEM L1$TAG2 C(5, 0, 2); # TEXT ADDR FOR GET (RIGHT 2) # ITEM L1$TAA3 C(5,42, 3); # TAA ADDR FOR GETF (LEFT 3) # ITEM L1$WRD5 C(5, 0,WC); ITEM L1$TLMX C(6, 0,10); # TLMAX FOR GET # ITEM L1$TLEQ C(6, 0, 1); # INSERT = SIGN # ITEM L1$TAA4 C(6, 0,10); # TAA ADDR FOR GETF (RIGHT 3) # ITEM L1$WRD6 C(6, 0,WC); END ARRAY MSGNO P(2); BEGIN ITEM MSG$FMT C(0,0,10)=[" MSG NO."]; ITEM MSG$MCT C(1,0,6); # MSG$COUNT # ITEM MSG$TERM I(1,36,24)=[0]; END ARRAY HDRLINE P(9); BEGIN ITEM HL$FMT1 C(0, 0,10) = [" ABT = "]; ITEM HL$ABT C(0,42, 2); ITEM HL$FMT2 C(1, 0,10) = [" ADR = "]; ITEM HL$ADR C(1,36, 4); ITEM HL$FMT3 C(2, 0,10) = [" ABN = "]; ITEM HL$ABN1 C(2,42, 3); ITEM HL$ABN2 C(3, 0, 3); ITEM HL$FMT4 C(3, 0,10) = [" ACT ="]; ITEM HL$ACT C(4, 0, 2); ITEM HL$FMT5 C(4,12, 8) = [" STATUS"]; ITEM HL$FMT6 C(5, 0,10) = [" = "]; ITEM HL$ST1 U(5,18, 6); ITEM HL$ST2 U(5,24, 6); ITEM HL$ST3 U(5,30, 6); ITEM HL$ST4 U(5,36, 6); ITEM HL$ST5 U(5,42, 6); ITEM HL$ST6 U(5,48, 6); ITEM HL$ST7 U(5,54, 6); ITEM HL$ST8 U(6, 0, 6); ITEM HL$FMT7 C(6, 0,10) = [" TLC = "]; ITEM HL$TLC C(7, 0,10); ITEM HL$FMT9 I(8, 0,WL) = [0]; END # HEADER BUFFER FOR BLOCK TYPE 4 (APPPN) # ARRAY HDRLINE2 P(9) ; BEGIN ITEM HL2$FMT1 C(0,0,10) = [" ABT = "] ; ITEM HL2$ABT C(0,42,2) ; ITEM HL2$FMT2 C(1,0,09) = [" DN = "] ; ITEM HL2$DN C(1,36,3) ; ITEM HL2$D1 C(1,54,1) = [" "] ; ITEM HL2$FMT3 C(2,0,9) = [" SN = "] ; ITEM HL2$SN C(2,36,3) ; ITEM HL2$D2 C(2,54,1) = [" "] ; ITEM HL2$FMT4 C(3,0,09) = [" CN = "] ; ITEM HL2$CN C(3,36,3) ; ITEM HL2$D3 C(3,54,1) = [" "] ; ITEM HL2$FMT5 C(4,0,09) = [" BT = "] ; ITEM HL2$BT C(4,36,3) ; ITEM HL2$D4 C(4,54,1) = [" "] ; ITEM HL2$FMT6 C(5,0,10) = [" ACT = "] ; ITEM HL2$ACT C(5,42,3) ; ITEM HL2$FMT7 C(6,0,10) = [" TLC = "] ; ITEM HL2$TLC C(7,0,10) ; ITEM HL2$FMT8 I(8,0,WL) = [0] ; END ARRAY HDRLINB P(9) ; BEGIN # HEADER LINE FOR NETLOG CALLS # ITEM HB$FIL1 C(0,0,60)= [" "]; ITEM HB$FIL2 C(6,0,10)= [" TLW ="]; ITEM HB$TLW C(7,0,10) ; ITEM HB$FIL3 I(8,0,60) = [0] ; END ARRAY ONLINE1 P(7); # LOG ENTRY CHARACTER ARRAY - LINE 1 # BEGIN ITEM ON1$OP C(0, 0,10) = [" NETON ("]; ITEM ON1$CAD C(1, 0, 6); ITEM ON1$RP C(1,36, 4) = [") "]; ITEM ON1$FM1 C(2, 0,10) = [" ANAME = "]; ITEM ON1$NAM C(3, 0,10); ITEM ON1$FM2 C(4, 0,10) = [" DATE ="]; ITEM ON1$DAT C(5, 0,10); ITEM ON1$FM3 C(6, 0,10) = [" "]; END ARRAY ONLINE2 P(6); # LOG ENTRY CHARACTER ARRAY - LINE 2 # BEGIN ITEM ON2$FM1 C(0, 0,10) = [" NSUP ADD"]; ITEM ON2$FM2 C(1, 0, 4) = ["R = "]; ITEM ON2$NAD C(1,24, 6); ITEM ON2$FM3 C(2, 0,10) = [" MINACN ="]; ITEM ON2$MIN C(3, 0, 5); ITEM ON2$FM4 C(3,30, 5) = [" MAX"]; ITEM ON2$FM5 C(4, 0, 5) = ["ACN ="]; ITEM ON2$MAX C(4,30, 5); ITEM ON2$FM6 I(5, 0,60) = [0]; END ARRAY DBGLOG P(7); # LOG NETDBG CALL MESSAGE CHARACTER ARRAY # BEGIN ITEM TX$DBG C(0, 0,10) = [" NETDBG ("]; ITEM TX$CALL C(1, 0, 6); ITEM TX$RP C(1,36, 4) = [") "]; ITEM TX$OPT1 C(2, 0,10) = [" OPT1 = "]; ITEM TX$OPV1 U(2,54, 6); ITEM TX$OPT2 C(3, 0,10) = [" OPT2 = "]; ITEM TX$OPV2 U(3,54, 6); ITEM TX$DATE C(4, 0,10) = [" DATE ="]; ITEM TX$YMD C(5, 0,10); ITEM TX$ZERO C(6, 0,10) = [" "]; END ARRAY OFFLINE P(7); # LOG ENTRY CHARACTER ARRAY # BEGIN ITEM OFF$OP C(0, 0,10) = [" NETOFF ("]; ITEM OFF$CAD C(1, 0, 6); ITEM OFF$FM1 C(1,36, 4) = [") "]; ITEM OFF$FM2 C(2, 0,10) = [" DATE ="]; ITEM OFF$DAT C(3, 0,10); ITEM OFF$FM3 C(4, 0,30) = [" "]; END ARRAY RSTLINE P(7); # LOG ENTRY FOR RESET WORKLIST # BEGIN ITEM RST$OP C(0, 0,10) = [" NETRR ("]; ITEM RST$CAD C(1, 0, 6); ITEM RST$FM1 C(1,36, 4) = [") "]; ITEM RST$FM2 C(2, 0,10) = [" DATE ="]; ITEM RST$DAT C(3, 0,10); ITEM RST$FM3 C(4, 0,30) = [" "]; END BASED ARRAY ONLINE P(4); BEGIN ITEM ON$NSUP I(0,6,AL); # USER COMMUNICATION WORD # ITEM ON$CALL I(0,24,AL); ITEM ON$OPC I(0,54,6); # NETON OPCODE (=6) # ITEM ON$MIN I(1,0,WL); # MINACN # ITEM ON$MAX I(2,0,WL); # MAXACN # END # ONLINE # # SWITCH DEFINITION # # # SWITCH NAMCALL RTRN,PUT,GET,GETL,RTRN,RTRN,ON,OFF,GETF, PUTF,GTFL,XFR,RST,LOG,RTRN,RTRN,RTRN,DBG; #**********************************************************************# # DLAREP EXECUTION STARTS HERE # # ZERO WORDS AT END OF CHARACTER ARRAY # L1$WRD1[0] = " "; L1$WRD2[0] = " "; L1$WRD3[0] = " "; L1$WRD4[0] = " "; L1$WRD5[0] = " "; L1$WRD6[0] = " "; DLDISDE(OUMSGNO, 6,CHARWD); # CONVERT MESSAGE COUNT # MSG$MCT[0] = CHARWD; # SWITCH ON OPERATION CODE FOR NAM PROCEDURE CALL # P = LOC(TEMPB1); GOTO NAMCALL [DL$OPC[0]]; PUT: L1$NAME[0] = " NETPUT ("; # FORMAT TA PARAMETER FOR NETPUT # L1$FMT3[0] = " TA ="; DLDISO(DL$TA[0],6,CHARWD); # CONVERT TEXT ADDR TO DISPLAY # L1$TAP1[0] = C<0,3> CHARWD; # PUT TEXT ADDR IN OUTPUT LINE # L1$TAP2[0] = C<3,3> CHARWD; LINLEN = 7; GOTO FL11; PUTF: L1$NAME[0] = " NETPUTF ("; # FORMAT NA PARAMETER FOR NETPUTF # LTAA = DL$TL[0]; # NUMBER OF FRAGMENTS # L1$FMT3[0] = " NA ="; DLDISDE(DL$TL[0],3,CHARWD); # CONVERT NA TO DISPLAY CODE # L1$NAPT[0] = C<0,3> CHARWD; # PUT NA INTO OUTPUT LINE # # FORMAT TAA PARAMETER FOR NETPUTF # L1$FMT4[0] = " TAA ="; DLDISO(DL$TA[0],6,CHARWD); # CONVERT TAA TO DISPLAY CODE # L1$TAA1[0] = C<0,2> CHARWD; # PUT TAA INTO OUTPUT LINE # L1$TAA2[0] = C<2,4> CHARWD; LINLEN = 7; FL11: # FORMAT HA PARAMETER FOR NETPUT AND NETPUTF # L1$FMT1[0] = ") "; DLDISO(DL$HA[0],6,CHARWD); # CONVERT HA TO DISPLAY # L1$HAPT[0] = CHARWD; #PUT HEADER ADDR IN OUTPUT LINE# L1$FMT2[0] = "HA ="; GOTO FL110; GET: L1$NAME[0] = " NETGET ("; L1$FMT2[0] = "CN ="; GOTO FL12; GETL: L1$NAME[0] = " NETGETL ("; L1$FMT2[0] = "LN ="; FL12: # FORMAT MESSAGE TEXT ADDRESS FOR NETGET AND NETGETL # L1$FMT4[0] = " TA = "; DLDISO(DL$TA[0],6,CHARWD); # CONVERT TA TO DISPLAY # L1$TAG1[0] = C<0,4> CHARWD; # PUT TEXT ADDR IN OUTPUT LINE # L1$FMT5[0] = " TLMAX "; L1$TAG2[0] = C<4,2> CHARWD; # OUTPUT LAST 2 CHAR OF TA # # FORMAT TEXT LENGTH MAXIMUM FOR NETGET AND NETGETL # DLDISDE(DL$TL[0],5,CHARWD); # CONVERT TLMAX TO DISPLAY # L1$TLMX[0] = C<0,5> CHARWD; #PUT TLMAX VALUE IN OUTPUT LINE# L1$TLEQ[0] = "="; # PUT EQUAL SIGN IN OUTPUT # LINLEN = 7; GOTO FL19; GETF: L1$NAME[0] = " NETGETF ("; L1$FMT2[0] = "CN ="; GOTO FL18; GTFL: L1$NAME[0] = " NETGTFL ("; L1$FMT2[0] = "LN ="; FL18: # FORMAT NUMBER OF FRAGMENTS FOR NETGETF AND NETGTFL # LTAA = DL$TL[0]; # NUMBER OF FRAGMENTS # L1$FMT4[0] = " NA = "; DLDISDE(DL$TL[0],3,CHARWD); # CONVERT NA TO DISPLAY CODE # L1$NAGT[0] = C<0,3> CHARWD; # PUT NA VALUE IN OUTPUT LINE # # FORMAT TAA PARAMETER FOR NETGETF AND NETGTFL # L1$FMT5[0] = " TAA = "; DLDISO(DL$TA[0],6,CHARWD); # CONVERT TAA VALUE TO DISPLAY # L1$TAA3[0] = C<0,3> CHARWD; # PUT TAA VALUE IN OUTPUT LINE # L1$TAA4[0] = C<3,3> CHARWD; LINLEN = 7; FL19: L1$FMT1[0] = ") A"; # FORMAT ACN OR ALN VALUE # DLDISDE(DL$ADR[0],4,CHARWD); # CONVERT CONNECTION/LIST NO # L1$CLN[0] = C<0,4> CHARWD; # PUT CONNECT/LINE NO IN OUTPUT# # FORMAT HA PARAMETER # L1$FMT3[0] = "HA ="; DLDISO(DL$HA[0],6,CHARWD); # CONVERT HA TO DISPLAY # L1$HAGT[0] = C<0,6> CHARWD; #PUT HEADER ADDR IN OUTPUT LINE# FL110: DLDISO(DL$CALL[0],6,CHARWD); # CONVERT CALL ADDR TO DISPLAY # L1$CALL = C<0,6>CHARWD; # PUT CALL ADDR IN OUTPUT LINE # OUPART = TRUE; DLWRITC(LINE1,LINLEN); # OUTPUT LINE 1 FOR LOG ENTRY # OUPART = FALSE; DLWRITC(MSGNO,2); # OUTPUT MESSAGE NUMBER # # CONVERT HEADER FIELDS TO DISPLAY CODE. # P = P + 3; IF ABHABT[0] EQ APPPN THEN BEGIN # PROCESS FOR BT 4 # DLDISDE(ABHABT[0],2,CHARWD) ; HL2$ABT[0] = C<0,2>CHARWD ; DLDISDE(ABHDN[0],3,CHARWD) ; HL2$DN[0] = C<0,3>CHARWD ; DLDISDE(ABHSN[0],3,CHARWD) ; HL2$SN[0] = C<0,3>CHARWD ; DLDISDE(ABHCN[0],3,CHARWD) ; HL2$CN[0] = C<0,3>CHARWD ; DLDISDE(ABHBT[0],2,CHARWD) ; HL2$BT[0] = C<0,2>CHARWD ; DLDISDE(ABHACT[0],3,CHARWD) ; HL2$ACT[0] = C<0,3>CHARWD ; DLDISDE(ABHTLC[0],4,CHARWD) ; HL2$TLC[0] = C<0,4>CHARWD ; DLWRITC(HDRLINE2,9) ; END # PROCESS FOR BT 4 # ELSE BEGIN # PROCESS FOR OTHER BT # DLDISDE(ABHABT[0],2,CHARWD); # CONVERT ABT TO DISPLAY CODE # HL$ABT[0] = C<0,2> CHARWD; # PUT IN OUTPUT LINE # DLDISDE(ABHADR[0],4,CHARWD); # CONVERT ADR TO DISPLAY CODE # HL$ADR[0] = C<0,4> CHARWD; # PUT ADR IN OUTPUT LINE # DLDISDE(ABHABN[0],6,CHARWD); # CONVERT ABN TO DISPLAY # HL$ABN1[0] = C<0,3> CHARWD; # PUT ABN IN OUTPUT LINE # HL$ABN2[0] = C<3,3> CHARWD; DLDISDE(ABHACT[0],2,CHARWD); # CONVERT ACT TO DISPLAY CODE # HL$ACT[0] = C<0,2> CHARWD; # PUT ACT IN OUTPUT LINE # DLDISDE(ABHTLC[0],4,CHARWD); # CONVERT TLC TO DISPLAY CODE # HL$TLC[0] = C<0,4> CHARWD; # PUT TLC IN OUTPUT LINE # # CONVERT VALUE OF EACH STATUS BIT AND FORMAT INTO OUTPUT LINE # HL$ST1[0] = ABHIBU[0] + O"33"; HL$ST2[0] = ABHB41[0] + O"33"; HL$ST3[0] = ABHB42[0] + O"33"; HL$ST4[0] = ABHB43[0] + O"33"; HL$ST5[0] = ABHNFE[0] + O"33"; HL$ST6[0] = ABHXPT[0] + O"33"; HL$ST7[0] = ABHCAN[0] + O"33"; HL$ST8[0] = ABHBIT[0] + O"33"; # WRITE HEADER LINE FOR MESSAGE BEING LOGGED TO FILE OUTPUT # DLWRITC(HDRLINE,9); END # PROCESS FOR OTHER BT # IF ABHABT[0] EQ 0 THEN DLCC = 0 ; ELSE DLCC = ABHTLC[0] ; TRUNC = (2*ABHTLC[0]+NW$ROUND[ABHACT[0]])/NW$FACT[ABHACT[0]]; CT = ABHACT[0]; # SAVE ACT FOR PROCEDURE DLDIS # GOTO RTRN; ON: P = P + 1; DLDISO(ON$CALL,6,CHARWD); ON1$CAD[0] = CHARWD; ON1$NAM[0] = L1NAME; # NAME FROM ENTRY PARAMETER # ON1$DAT[0] = C<0,9>SDTYYMMDD; OUPART = TRUE; DLWRITC(ONLINE1,7); # OUTPUT FIRST LINE OF LOG ENTRY# OUPART = FALSE; DLWRITC(MSGNO,2); # OUTPUT MESSAGE NUMBER # # FORMAT SECOND LINE OF LOG ENTRY FOR NETON CALL # DLDISO(ON$NSUP,6,CHARWD); # CONVERT NSUP ADDR TO DISPLAY # ON2$NAD[0] = CHARWD; # PUT NSUP ADDRESS IN OUTPUT LINE # DLDISDE(ON$MIN,5,CHARWD); # CONVERT MINACN TO DISPLAY # ON2$MIN[0] = C<0,5> CHARWD; # PUT MINACN IN OUTPUT LINE # DLDISDE(ON$MAX,5,CHARWD); # CONVERT MAXACN TO DISPLAY # ON2$MAX[0] = C<0,5> CHARWD; # PUT MAXACN IN OUTPUT LINE # DLWRITC(ONLINE2,6); # OUTPUT SECOND LINE OF NETON # GOTO RTRN; XFR: GOTO RTRN ; DBG: P = P; DLDISO(DB$CAL,6,CHARWD); TX$CALL[0] = CHARWD; # PUT CALL ADDR IN OUTPUT LINE # IF DB$SMF # CONVERT OPTIONS TO DISPLAY CODE # THEN TX$OPV1[0] = O"33"; ELSE TX$OPV1[0] = O"34"; IF DB$DMF THEN TX$OPV2[0] = O"33"; ELSE TX$OPV2[0] = O"34"; TX$YMD[0] = L2DATE[0]; # PUT DATE IN OUTPUT LINE # OUPART = TRUE; DLWRITC(DBGLOG,7); # OUTPUT MESSAGE # OUPART = FALSE; DLWRITC(MSGNO,2); # OUTPUT MESSAGE NUMBER # GOTO RTRN; LOG: L1$NAME[0] = " NETLOG ("; # SET PROCEDURE NAME # DLDISO(DL$CALL[0],6,CHARWD); L1$CALL = CHARWD; # SET PROCEDURE CALL ADDRESS # L1$FMT1 = ")"; L1$WRD2[0] = " "; # CLEAR LINES # L1$WRD3[0] = " "; L1$WRD4[0] = " "; L1$WRD5[0] = " "; L1$WRD6[0] = " "; LINLEN = 7; DLCC = DL$SIZE[0]; # SET TEXT LENGTH # TRUNC = DLCC; OUPART = TRUE; # OUTPUT PART OF LINE # DLWRITC(LINE1,LINLEN); # OUTPUT LINE 1 FOR LOG ENTRY # OUPART = FALSE; # OUTPUT REST OF THE LINE # DLWRITC(MSGNO,2); # OUTPUT MESSAGE NUMBER # DLDISO(DL$SIZE[0],3,CHARWD); # OUTPUT TLW PART # HB$TLW = CHARWD; DLWRITC(HDRLINB,8); GOTO RTRN; OFF: DLDISO(DL$CALL[0],6,CHARWD); # CONVERT CALL ADDR TO DISPLAY # OFF$CAD[0] = C<0,6> CHARWD; # PUT CALL ADDRESS IN OUTPUT LINE # OFF$DAT[0] = L2DATE[0]; # PUT DISPLAY CODE DATE IN OUTPUT LINE # OUPART = TRUE; DLWRITC(OFFLINE,7); # OUTPUT NETOFF # OUPART = FALSE; DLWRITC(MSGNO,2); # OUTPUT MESSAGE NUMBER # GOTO RTRN; RST: DLDISO(DL$CALL[0],6,CHARWD); # CONVERT CALL ADDR TO DISPLAY # RST$CAD[0] = C<0,6> CHARWD; # PUT CALL ADDRESS IN OUTPUT LINE # RST$DAT[0] = L2DATE[0]; # PUT DISPLAY CODE DATE IN OUTPUT LINE # OUPART = TRUE; DLWRITC(RSTLINE,7); # OUTPUT NETRSET # OUPART = FALSE; DLWRITC(MSGNO,2); # OUTPUT MESSAGE NUMBER # GOTO RTRN; RTRN: RETURN; END # DLAREP # TERM