C THIS IS A DEMONSTRATION OF THE SEND BY REFERENCE CAPABILITY C OF THE MEMORY MANAGEMENT DIRECTIVES. TASK A WILL CREATE A C COMMON REGION AND WRITE A MESSAGE INTO IT. IT WILL THEN ISSUE C A SEND BY REFERENCE TO TASK B, AND WAIT UNTIL TASKB HAS C RECEIVED THE REFERENCE. TASK B RECEIVES THE REFERENCE, AND PRINTS C THE MESSAGE ON THE ISSUING TERMINAL. C C THE FOLLOWING PROGRAM IS TASKA. IT IS TASK BUILT AS FOLLOWS: C TKB>TASKA=TASKA C TKB>/ C ENTER OPTIONS: C TKB>VSECT=IPLAS:160000:100:1 !ALLOCATE IN TASK MEMORY C TKB>WNDWS=1 !ALLOCATE WINDOW FOR COMMON C TKB>// COMMON /IPLAS/ IPLAS(32) C ALLOCATE SPACE FOR RDB,WDB, AND MESSAGE DIMENSION IRDB(9),IWDB(11),ITEST(14) C THIS IS THE MESSAGE TO BE TRANSMITTED DATA ITEST /' D','AT','A ','RE','CE','IV','ED',' S','UC', 1'CE','SS','FU','LL','Y '/ C ALLOCATE REGION DEFINITION BLOCK. REGION STATUS WORD IS DEFINED AS: C RS.MDL!RS.ATT!RS.WRT!RS.RED C 200 ! 40 ! 2 ! 1 C (SEE EXEC. REFERENCE MANUAL, P. 3-9) DATA IRDB /0,0,0,0,0,0,"243,0,0/ C ALLOCATE WINDOW DEFINITION BLOCK. SPECIFY APR 7, 32. WORDS (100 OCTAL C BYTES). WINDOW STATUS WORD IS DEFINED AS: C WS.64B!WS.MAP!WS.WRT C 400 ! 200 ! 2 C (SEE EXEC. REFERENCE MANUAL, P. 3-13) DATA IWDB /"3400,0,1,0,0,1,"602,0,0,1,0/ C DEFINE WINDOW STATUS WORD FOR SEND WITH READ ACCESS ONLY. DEFINITIONS: C WS.64B!WS.MAP!WS.RED C 400 ! 200 ! 1 DATA ISND /"601/ C DEFINE TARGET TASK NAME IN RAD50 DATA TSKB /6RTASKB / C ALLOCATE SPACE FROM THAT RESERVED BY TASK BUILDER FROM PHYSICAL C SIZE PARAMETER OF VSECT. C TKB>VSECT=IPLAS:160000:100:1 C CALL ALSCT (IRDB,IWDB,ISTS) C TEST IF ALLOCATION SUCCESSFUL. IF NOT, EXIT IF(ISTS-1)100,5,100 C CREATE REGION 5 CALL CRRG (IRDB,IDS) C TEST IF REGIONS SUCCESSFULLY CREATED (STATUS WORD NEGATIVE). IF NOT, C EXIT. IF (IRDB(7))10,100,100 C COPY REGION I.D. TO WINDOW DEFINITION BLOCK 10 IWDB(4)=IRDB(1) C CREATE ADDRESS EWINDOW WITH MAP OPTION. CALL CRAW (IWDB,IDS) C TEST IF WINDOW SUCCESFULLY CREATED. IF NOT, EXIT. IF (IWDB(7))20,100,100 C NOW COPY MESSAGE INTO COMMON 20 DO 30 I=1,14 30 IPLAS(I)=ITEST(I) C SET UP WINDOW STAUS WORD FOR SEND BY REFERENCE IWDB(7)=ISND C ISSUE SEND BY REFERENCE, SPECIFYING EVENT FLAG 1 FOR THIS C TASK,WHICH WILL BE SET WHEN TASK B SUCCESSFULLY RECEIVES C THE REFERENCE CALL SREF(TSKB,1,IWDB,,IDS) C TEST FOR SUCCESS IF (IDS-1)100,40,100 C NOW WAIT UNTIL TASKB RECEIVES THE REFERENCE 40 CALL WAITFR(1) C DETACH THE REGION (REGION WILL NOT BE DELETED UNITL TASKB DETACHES) CALL DTRG (IRDB,IDS) C AND RELEASE SPACE FROM MEMORY CALL RLSCT(IRDB,IWDB) 100 CALL EXIT END