• Aucun résultat trouvé

TOPS-IO/TOPS-20 COBOL Task-to-Task Examples

Dans le document OIL User Reference Manual AA-M581 (Page 111-120)

TOPS-20 AND TOPS-10 TASK-TO-TASK

TOPS-20 AND TOPS-10 TASK-TO-TASK

6.4 TOPS-IO/TOPS-20 TASK-TO-TASK EXAMPLES

6.4.1 TOPS-IO/TOPS-20 COBOL Task-to-Task Examples

IDENTIFICATION DIVISION.

PROGRAM-ID.

PASC36.

AUTHOR.

SOFTWARE ENGINEERING.

This program opens a passive link and then waits for a connection from an active task (created by the program ACTC36). Once a link is established, user specified messages are sent in both directions across the link. The link is closed by the program ACTC36 and this program waits for a confirmation of the close.

INSTALLATION.

DEC MARLBOROUGH.

ENVIRONMENT DIVISION.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 INTERFACE FILES.

COPY DIT OF "SYS:DIL.LIB".

COpy OIL OF "SYS:DIL.LIB".

01 DILINI-PARAMETERS.

*

Di1ini is necessary for DECsystem-10 and DECSYSTEM-20 Cobol only.

05 DIL-INIT-STATUS PIC S9(10) COMPo 05 OIL-STATUS PIC S9 (10) COMPo 05 OIL-MESSAGE PIC S9(10) COMPo 05 OIL-SEVERITY PIC S9(10) COMPo 01 DATA-RECORDS.

05 SEND-DATA PIC X(100) USAGE DISPLAY-7.

05 RECEIVE-DATA PIC X(100) USAGE DISPLAY-7.

01 COUNT-OPT-DATA PIC S9(10) COMP VALUE O.

01 OPT-DATA PIC X(16) DISPLAY-7 VALUE SPACES.

01 NETLN PIC S9(10) COMPo

01 OBJECT-ID PIC X(16) DISPLAY-7 VALUE SPACES.

01 DESCRIPTOR PIC X(16) DISPLAY-7 VALUE SPACES.

01 TASKNAME PIC X(16) DISPLAY-7.

01 MESSAGE-UNITS-SIZE PIC S9(10) COMP VALUE 7.

01 MESSAGE-SIZE PIC S9(10) COMP VALUE 100.

TOPS-a YD TOPS-IG TASK-TO-TASI(

PROCEDURE DIVISION.

SETUP-RETURN-CODES.

* Set up for status code values, using DILINI routine ENTER MACRO DILINI USING DIL-INIT-STATUS, DIL-STATUS,

DIL-MESSAGE, DIL-SEVERITY.

IF DIL-INIT-STATUS NOT 1

DISPLAY "1 Invalid return code from DILINI routine

= "

DIL-INIT-STATUS.

OPEN-PASSIVE

*

Open a passive link.

MOVE "SERVER" TO TASKNAME.

MOVE "0" TO OBJECT-ID.

ENTER MACRO NFOPP USING NETLN, OBJECT-ID, DESCRIPTOR, TASKNAME, DIT-WAIT-NO.

DISPLAY" NFOPP Status return: " DIL-STATUS.

IF DIL-SEVERITY NOT

=

STS-K-SUCCESS AND DIL-SEVERITY NOT

=

STS-K-INFO

DISPLAY "1 NFOPP: unsuccessful status return "

STOP RUN.

CHECK-FOR-CONNECT.

*

Wait for a connect request

ENTER MACRO NFGND USING NETLN, DIT-WAIT-YES.

DISPLAY" NFGND Status return: " DIL-STATUS.

IF DIL-MESSAGE

=

DIT-C-CONNECTEVENT NEXT SENTENCE ELSE

DISPLAY "1 NFGND: Unexpected or invalid status returned: " DIL-STATUS STOP RUN.

ACCEPT-LINK

*

Accept link

ENTER MACRO NFACC USING NETLN, DIT-LTYPE-ASCII, COUNT-OPT-DATA, OPT-DATA.

DISPLAY" NFACC Status return: " DIL-STATUS.

IF DIL-SEVERITY NOT = STS-K-SUCCESS AND DIL-SEVERITY NOT = STS-K-INFO

DISPLAY "1 NFACC: unsuccessful status return"

STOP RUN.

CHECK-FOR-DATA

* Wait for a data event on the link

ENTER MACRO NFGND USING NETLN, DIT-WAIT-YES.

DISPLAY" NFGND Status return: " DIL-STATUS.

IF DIL-MESSAGE

=

DIT-C-DATAEVENT NEXT SENTENCE ELSE

DISPLAY "1 NFGND: Unexpected or invalid status returned: " DIL-STATUS STOP RUN.

TOPS-20 AND TOPS-IO TASK-TO-TASK

READ-THE-DATA.

*

Read the data received over the link MOVE 100 TO MESSAGE-SIZE.

ENTER MACRO NFRCV USING NETLN, MESSAGE-UNITS-SIZE, MESSAGE-SIZE, RECEIVE-DATA, DIT-MSG-MSG, DIT-WAIT-YES.

DISPLAY " NFRCV Status return: " DIL-STATUS.

IF DIL-SEVERITY NOT

=

STS-K-SUCCESS AND DIL-SEVERITY NOT

=

STS-K-INFO

DISPLAY"? NFRCV: unsuccessful status return "

STOP RUN.

DISPLAY" Data received: "

DISPLAY RECEIVE-DATA.

SEND-SOME-DATA.

* Send some data over the link MOVE 100 TO MESSAGE-SIZE

DISPLAY" Enter some data to be sent over the link: "

ACCEPT SEND-DATA.

ENTER MACRO NFSND USING NETLN, MESSAGE-UNITS-SIZE, MESSAGE-SIZE, SEND-DATA, DIT-MSG-MSG.

DISPLAY" NFSND Status return: " DIL-STATUS.

IF DIL-SEVERITY NOT

=

STS-K-SUCCESS AND DIL-SEVERITY NOT

=

STS-K-INFO

DISPLAY"? NFSND: unsuccessful status return"

STOP RUN.

CHECK-FOR-CLOSE.

ENTER MACRO NFGND USING NETLN, DIT-WAIT-YES.

DISPLAY" NFGND Status return: " DIL-STATUS.

IF DIL-MESSAGE NOT = DIT-C-ABREJEVENT AND DIL-MESSAGE NOT = DIT-C-DISCONNECTEVENT AND DIL-SEVERITY NOT

=

STS-K-SUCCESS AND

DIL-SEVERITY NOT = STS-K-INFO

DISPLAY"? NFGND: Invalid status returned"

STOP RUN.

DISPLAY" PASC36 successful. "

STOP RUN.

TOPS-20 AND TOPS-IO TASK-TO-TASK

IDENTIFICATION DIVISION.

PROGRAM-ID.

ACTC36.

AUTHOR.

SOFTWARE ENGINEERING.

This program opens an active link by connecting to the passive task set up by the program PASC36. Once the link is established, user specified messages are sent in both directions across the link. Then the link is closed.

INSTALLATION.

DEC MARLBOROUGH.

ENVIRONMENT DIVISION.

DATA DIVISION.

WORKING-STORAGE SECTION.

01 INTERFACE-FILES.

COpy DIT OF "SYS:DIL.LIB".

COpy DIL OF "SYS"DIL.LIB".

01 DILINI-PARAMETERS.

* Dilini is necessary for DECsystem-10 and DECSYSTEM-20 COBOL only.

05 DIL-INIT-STATUS PIC S9(10) COMPo 05 DIL-STATUS-PIC S9(10) COMPo 05 DIL-MESSAGE PIC S9(10) COMPo 05 DIL-SEVERITY PIC S9(10) COMPo 01 DATA-RECORDS.

05 SEND-DATA PIC X(lOO) USAGE DISPLAY-7.

05 RECEIVE-DATA PIC X(lOO) USAGE DISPLAY-7.

01 COUNT-OPT-DATA PIC S9(10) COMP VALUE O.

01 OPT-DATA PIC X(16) DISPLAY-7 VALUE SPACES.

01 NETLN PIC S9(10) COMPo

01 HOSTNAME PIC X(06) DISPLAY-7 VALUE SPACES.

01 OBJECT-ID PIC X(16) DISPLAY-7 VALUE SPACES.

01 DESCRIPTOR PIC X(16) DISPLAY-7 VALUE SPACES.

01 TASKNAME PIC X(16) DISPLAY-7.

01 USERID PIC X(39) DISPLAY-7 VALUE SPACES.

01 PASSWD PIC X(39) DISPLAY-7.

01 ACCT PIC X(39) DISPLAY-7 VALUE SPACES.

01 MESSAGE-UNITS-SIZE PIC S9(10) COMP VALUE 7.

01 MESSAGE-SIZE PIC S9(10) COMP VALUE 100.

01 SYNCH-DISCONN PIC S9(10) COMP VALUE O.

TOPS-20 AND TOPS-IO TASK-TO-TASK

PROCEDURE OIVISION.

SETUP-RETURN-CODES.

*

Set up for status code values, using DILINI routine ENTER MACRO DILINI USING DIL-INIT-STATUS, OIL-STATUS

OIL-MESSAGE, OIL-SEVERITY.

IF DIL-INIT-STATUS NOT 1

DISPLAY"? Invalid return code from DILINI routine

= "

DIL-INIT-STATUS.

CONNECT-TO-PASSIVE

* Ask for a connection to the passive link MOVE "0" TO OBJECT-ID.

MOVE "SERVER" TO DESCRIPTOR.

MOVE SPACES TO TASKNAME.

ENTER MACRO NFOPA USING NETLN, HOSTNAME, OBJECT-ID, DESCRIPTOR, TASKNAME, USERID, PASSWD, ACCT, OPT-DATA, DIT-WAIT-NO.

DISPLAY" NFOPA Status return: ", DIL-STATUS.

IF OIL-SEVERITY NOT = STS-K-SUCCESS AND DIL-SEVERITY NOT = STS-K-INFO

DISPLAY"? NFOPA: unsuccessful status return"

STOP RUN.

CHECK-FOR-CONNECT.

* Wait for confirmation of the connection

ENTER MACRO NFGND USING NETLN, DIT-WAIT-YES.

DISPLAY" NFGND Status return: " OIL-STATUS.

IF DIL-MESSAGE

=

DIT-C-CONNECTEVENT NEXT SENTENCE ELSE

DISPLAY"? NFGND: Unexpected or invalid status returned: " DIL-STATUS STOP RUN.

SEND-SOME-DATA

*

Send some data over the link MOVE 100 TO MESSAGE-SIZE.

DISPLAY" Enter some data to be sent over the link: ".

ACCEPT SEND-DATA.

ENTER MACRO NFSND USING NETLN, MESSAGE-UNITS-SIZE, MESSAGE-SIZE, SEND-DATA, DIT-MSG-MSG.

DISPLAY" NFSND Status return: " DIL-STATUS.

IF DIL-SEVERITY NOT

=

STS-K-SUCCESS AND DIL-SEVERITY NOT

=

STS-K-INFO

DISPLAY"? NFSND: unsuccessful status return "

STOP RUN.

TOPS-20 AND TOPS-IO TASK-TO-TASK

CHECK-FOR-OATA.

*Wait for a data event on the link

ENTER MACRO NFGNO USING NETLN, OIT-WAIT-YES.

DISPLAY n NFGNO Status. return: " OIL-STATUS IF OIL-MESSAGE

=

DIT-C-DATAEVENT NEXT SENTENCE ELSE

DISPLAY"? NFGND: Unexpected or invalid status returned: n DIL-STATUS STOP RUN.

REAO-THE-OATA.

* Read .the data received over the link MOVE 100 TO MESSAGE-SIZE

ENTER MACRO NFRCV USING.NETLN, MESSAGE-UNITS-SIZE, MESSAGE-SIZE, RECEIVE-DATA, DIT-MSG-MSG, DIT-WAIT-YES.

DISPLAY" NFRCV Status return: n DIL-STATUS.

IF OIL-SEVERITY NOT = STS-K-SUCCESS AND OIL-SEVERITY NOT = STS-K-INFO

DISPLAY"? NFRCV: unsuccessful status return n

STOP RUN.

DISPLAY n Data received: n

DISPLAY RECEIVE-DATA.

CLOSE-LINK.

* Close the link

ENTER MACRO NFCLS USING NETLN, SYNCH-OISCONN, COUNT-OPT-DATA, OPT-DATA.

DISPLAY n NFCLS Status return: " OIL-STATUS.

IF DIL-SEVERITY NOT = STS-K-SUCCESS AND DIL-SEVERITY NOT

=

STS-K-INFO

DISPLAY"? NFCLS: unsuccessful status return"

STOP RUN.

DISPLAY" CTTT36 successful. "

STOP RUN.

TOPS-20 AND TOPS-IO TASK-TO-TASK

6.4.2 TOPS-IO/TOPS-20 FORTRAN Task-to-Task Examples C PASF36 INTEGER NETLN, DILSTS, MSGSIZ, MUNTSZ, CNTOPD

C Link description fields passive end

TOPS-20 AND TOPS-IO TASK-TO-TASK

C Wait for a connect request 110 DILSTS

=

NFGND (NETLN, WAITLY)

WRITE (5, 202) DILSTS

IF (DILSTS .EO. CONEVT) GO TO 120 WRITE (5, 777)

STOP

C Accept link 120 CNTOPD

=

0

DILSTS

=

NFACC (NETLN, LASCII, CNTOPD, OPTDAT) WRITE (5, 203) DILSTS

IF (DILSTS .EQ. NORMAL) GO TO 130 WRITE (5, 777)

STOP

C Wait for a data event on the link 130 DILSTS

=

NFGND (NETLN, WAITLY)

WRITE (5, 202) DILSTS

IF (DILSTS .EO. DATEVT) GO TO 140 WRITE (5, 777)

STOP

C Read the data received over the link 140 MSGSIZ 100

DILSTS NFRCV (NETLN, MUNTSZ, MSGSIZ, RECD, MSGMSG, WAITLY) 'WRITE (5, 205) DILSTS

IF (DILSTS .EO. NORMAL) GO TO 150 WRITE (5, 777)

STOP

150 WRITE (5, 779) 155 FORMAT (' , 20A5)

WRITE (5, ISS) RECD

C Send some data over the link WR IT E (5 , 7 7 8 )

157 FORMAT (20A5) ACCEPT 157, SENDD MSGSIZ 100

DILSTS NFSND (NETLN, MUNTSZ, MSGSIZ, SENDD, MSGMSG) WRITE (5, 204) DILSTS

IF (DILSTS .EO. NORMAL) GO TO 160 WRITE (5, 777)

STOP

TOPS-20 AND TOPS-IO TASK-TO-TASK

C Check for the link being closed 160 DILSTS

=

NFGND (NETLN, WAITLY)

WRITE (5, 202) DILSTS

IF (DILSTS .EO. ARJEVT) GO TO 170 IF (DILSTS .EO. DSCEVT) GO TO 170 IF (DILSTS .EO. NORMAL) GO TO 170 WRITE (5, 777)

STOP

170 WRITE (5, 175)

175 FORMAT (' PASF36 test successful ') STOP

END C ACTF36

C This program opens an active link by connecting to the passive C task set up by the program PASC36. Once the link is

C established, user specified messages are sent in both C directions across the link. Then the link is closed.

C Use the DIL interface files

C Data records

INCLUDE 'SYS:DITV7 ' INCLUDE 'SYS:DILV7 '

DIMENSION SENDD (20), RECD (20) C DIL task to task routine parameters

DIMENSION HSTNAM (4), OPTDAT (4), OBJID (4), DESCR (4) DIMENSION PASSWD (8), ACCT (8), USERID (8), TASKN (4)

INTEGER NETLN, DILSTS, MSGSIZ, MUNTSZ, CNTOPD, SYNCDS C Link description fields

DATA OBJID

I'TASK

I

,

I

'I

DATA DESCR I'SERVE ' , 'R

'I

DATA TASKN

I' 'I

DATA HSTNAM

I' 'I

DATA PASSWD

I' ,

1

'I

DATA USERID

I' ,

1

'I

DATA ACCT

I' ,

1

'I

DATA OPTDAT

I'

C Program messages

TOPS-20 AND TOPS-10 TASK-TO-TASK

Invalid status returned ••• ' )

Dans le document OIL User Reference Manual AA-M581 (Page 111-120)

Documents relatifs