The SENDMSG call sends messages on a socket with descriptor
S passed in an array of messages.
Table 1. SENDMSG call requirementsCondition |
Requirement |
---|
Authorization: |
Supervisor state or problem state, any PSW key. |
Dispatchable unit mode: |
Task. |
Cross memory mode: |
PASN = HASN. |
Amode: |
31-bit or 24-bit.
|
ASC mode: |
Primary address space control (ASC) mode. |
Interrupt status: |
Enabled for interrupts. |
Locks: |
Unlocked. |
Control parameters: |
All parameters must be addressable by the caller
and in the primary address space. |
Figure 1. SENDMSG call
instruction example (part 1 of 2)WORKING-STORAGE SECTION.
01 SOC-FUNCTION PIC X(16) VALUE IS 'SENDMSG'.
01 S PIC 9(4) BINARY.
01 MSG-HDR.
03 MSG-NAME USAGE IS POINTER.
03 MSG-NAME-LEN PIC 9(8) BINARY.
03 IOV USAGE IS POINTER.
03 IOVCNT USAGE IS POINTER.
03 MSG-ACCRIGHTS USAGE IS POINTER.
03 MSG-ACCRIGHTS-LEN USAGE IS POINTER.
01 FLAGS PIC 9(8) BINARY.
88 NO-FLAG VALUE IS 0.
88 OOB VALUE IS 1.
88 DONTROUTE VALUE IS 4.
01 ERRNO PIC 9(8) BINARY.
01 RETCODE PIC S9(8) BINARY.
01 SENDMSG-IPV4ADDR PIC 9(8) BINARY.
01 SENDMSG-IPV6ADDR.
05 FILLER PIC9(16) BINARY.
05 FILLER PIC9(16) BINARY.
LINKAGE SECTION.
01 L1.
03 SENDMSG-IOVECTOR.
05 IOV1A USAGE IS POINTER.
05 IOV1AL PIC 9(8) COMP.
05 IOV1L PIC 9(8) COMP.
05 IOV2A USAGE IS POINTER.
05 IOV2AL PIC 9(8) COMP.
05 IOV2L PIC 9(8) COMP.
05 IOV3A USAGE IS POINTER.
05 IOV3AL PIC 9(8) COMP.
05 IOV3L PIC 9(8) COMP.
03 SENDMSG-BUFFER1 PIC X(16).
03 SENDMSG-BUFFER2 PIC X(16).
03 SENDMSG-BUFFER3 PIC X(16).
03 SENDMSG-BUFNO PIC 9(8) COMP.
* IPv4 socket address structure.
03 NAME.
05 FAMILY PIC 9(4) BINARY.
05 PORT PIC 9(4) BINARY.
05 IP-ADDRESS PIC 9(8) BINARY.
05 RESERVED PIC X(8) BINARY.
* IPv6 socket address structure.
03 NAME.
05 FAMILY PIC 9(4) BINARY.
05 PORT PIC 9(4) BINARY.
05 FLOWINFO PIC 9(8) BINARY.
05 IP-ADDRESS.
10 FILLER PIC 9(16) BINARY.
10 FILLER PIC 9(16) BINARY.
05 SCOPE-ID PIC 9(8) BINARY.
PROCEDURE DIVISION USING L1.
* For IPv6.
MOVE 19 TO FAMILY.
MOVE 1234 TO PORT.
MOVE 0 TO FLOWINFO.
MOVE SENDMSG-IPV6ADDR TO IP-ADDRESS.
MOVE 0 TO SCOPE-ID.
* For IPv4.
MOVE 2 TO FAMILY.
MOVE 1234 TO PORT.
MOVE SENDMSG-IPV4ADDR TO IP-ADDRESS.
SET MSG-NAME TO ADDRESS OF NAME.
MOVE LENGTH OF NAME TO MSG-NAME-LEN.
SET IOV TO ADDRESS OF SENDMSG-IOVECTOR.
MOVE 3 TO SENDMSG-BUFNO.
Figure 2. SENDMSG call instruction
example (part 2 of 2) SET MSG-IOVCNT TO ADDRESS OF SENDMSG-BUFNO.
SET IOV1A TO ADDRESS OF SENDMSG-BUFFER1.
MOVE 0 TO IOV1AL.
MOVE LENGTH OF SENDMSG-BUFFER1 TO IOV1L.
SET IOV2A TO ADDRESS OF SENDMSG-BUFFER2.
MOVE 0 TO IOV2AL.
MOVE LENGTH OF SENDMSG-BUFFER2 TO IOV2L.
SET IOV3A TO ADDRESS OF SENDMSG-BUFFER3.
MOVE 0 TO IOV3AL.
MOVE LENGTH OF SENDMSG-BUFFER3 TO IOV3L.
SET MSG-ACCRIGHTS TO NULLS.
SET MSG-ACCRIGHTS-LEN TO NULLS.
MOVE 0 TO FLAGS.
MOVE 'MESSAGE TEXT 1 ' TO SENDMSG-BUFFER1.
MOVE 'MESSAGE TEXT 2 ' TO SENDMSG-BUFFER2.
MOVE 'MESSAGE TEXT 3 ' TO SENDMSG-BUFFER3.
CALL 'EZASOKET' USING SOC-FUNCTION S MSG-HDR FLAGS ERRNO RETCODE.