C SUBROUTINE TO SEND A MESSAGE TO A SUBTASK C CALLED FROM SUBTSK, PROCEDURE DO-SEND-OPERATION C C Submitted by: C C R. N. Stillwell C Institute for Lipid Research C Baylor College of Medicine C Houston, Texas 77030 C C (who would be glad to receive comments, suggestions, bug fixes, etc., but C who promises no support whatever). C C Literature reference: C C R. N. Stillwell. A low-overhead laboratory data management system C for the PDP11. Comput. Biomed. Res., 15, 29-38(1982). C C Acknowledgement: C C This software was developed under National Institutes of Health grants C GM-13901 and GM-26611. C C General permission is hereby granted to copy, modify, or distribute this C program, but not for profit. Copyright to this software is and shall C remain in the public domain. C SUBROUTINE SUBSEN(LTRACE,INVER,VARER) C C INCLUDE 'COMMON.FLX' C C Declare common blocks. C COMMON /TABDAT/ NREC,NCOLS,LENREC,OFFSET,IPTRD,TABREC, 1 DATA,IALT,IDUM INTEGER NREC,NCOLS,LENREC,OFFSET,IPTRD(41),TABREC BYTE DATA(1000) LOGICAL*1 IALT,IDUM !1-82 COMMON /LUN/ INLUN,OUTLUN,TILUN,TABLUN,TAILUN,RDFLUN INTEGER INLUN,OUTLUN,TILUN,TABLUN,TAILUN,RDFLUN COMMON /INPUT/ IREC,INPTR,LLINE,INLINE BYTE INLINE(132) DATA MAXIN/132/ COMMON /OUTPUT/ OUTLIN,OUTPTR,OUTEND BYTE OUTLIN (132) INTEGER OUTPTR,OUTEND DATA MAXOUT /132/ COMMON /FILES/ FILNAM,MAXFNM,MODNAM,LFNAM,FLREC, 1 MAXLVL,INLVL,OLDLVL,ULBUF,CARCTL,TERM 1 ,OUTOPN,TBOPEN C C File stack. C BYTE FILNAM(26,5) DATA MAXFNM/26/ REAL*4 MODNAM(5) !9-OCT-81 RAD50 MODULE NAMES INTEGER LFNAM(5) !LENGTHS OF NAMES C !POINTERS TO START OF CURRENT C !OR NEXT RECORD REAL*4 FLREC(5) !9-OCT-81 CHANGED FROM C !RECORD PTR TO BYTE PTR C D INTEGER IFLREC(2,5) D EQUIVALENCE (IFLREC,FLREC) DATA MAXLVL/5/ INTEGER INLVL !CURRENT LEVEL POINTER INTEGER OLDLVL !PREVIOUS LEVEL POINTER INTEGER ULBUF (7) BYTE CARCTL LOGICAL*1 TERM,OUTOPN,TBOPEN C C Scratch memory. Definitions may differ from subroutine to subroutine, C or may use equivalence statements. C COMMON /SCRATC/ SCRATC BYTE SCRATC (576) C C Local declarations. C LOGICAL*1 LTRACE,FILERR,EVALER LOGICAL*1 QUOTED,TSKACT,EQUAL LOGICAL*1 INVER,VARER INTEGER TDPRIV,RUNTS,SENTS,RECV INTEGER GETVAR,ADDVAR BYTE STR2(256),MESSAG(258) EQUIVALENCE (LMESSG,MESSAG(1)), (STR2(1),MESSAG(3)) EQUIVALENCE (MESSAG,SCRATC) DATA MAXSTR /255/ REAL*8 VARNAM BYTE VBYTE(8) EQUIVALENCE (VARNAM,VBYTE) REAL*8 VARN2 EQUIVALENCE (VARN2,STR2) INTEGER LEN2 C C IMPLEMENTATION NOTE: the TDB'S and the variable TSKACT C must be in a root-segment .PSECT. Also, for IAS, if this C module is in an overlay segment, then the root segment must C contain the module PILUN from SYSLIB. C COMMON/SUBCOM/ IDUMM(123),TSKACT C INVER = .FALSE. VARER = .FALSE. GET-STRING-2 IF (LTRACE) WRITE (TILUN,2) (STR2(I),I=1,LMESSG), DQUOTE 2 FORMAT (' %SUbtask SEnd: "',30A1/(1X,40A1)) C If task has gone to sleep, wake it up CALL RDEVTS(ISTAT,1) IF ((ISTAT.AND."10).EQ."10) CALL RSUMTS(1) IRET = SENTS(MESSAG,1) D WRITE (5,9902) IRET RETURN TO GET-STRING-2 IF (INPTR.GT.LLINE) REPORT-INVALID-OPERAND C One level of indirection. CALL GETNAM(1,STR2,MAXSTR,LMESSG,FILERR,QUOTED,EVALER) IF (FILERR.OR.EVALER) RETURN IF (LMESSG.LE.0) REPORT-INVALID-OPERAND D WRITE (5,4) QUOTED,LMESSG,(STR2(I),I=1,LMESSG) D4 FORMAT (' GET-STRING-2: QUOTED,LMESSG,STR2:',L4,I5/(1X,80A1)) FIN TO REPORT-INVALID-OPERAND INVER = .TRUE. RETURN FIN END