Previous | Contents | Index |
The programs shown in Examples 1-2 and 1-3 demonstrate how to enqueue a simple "Hello world" message. The "From:" address associated with the message is that of the process running the program; the "To:" address is the local SYSTEM account. The output of these programs is given in Example 1-4. The callouts shown in the first two examples produce the corresponding output shown in the third example.
Example 1-2 Enqueuing a Message (Pascal) |
---|
(* api_example1.pas -- Send a "Hello world!" message to SYSTEM *) [inherit ('pmdf_exe:apidef')] program example1; type uword = [word] 0..65535; var nq_context : PMDF_nq; user : packed array [1..ALFA_SIZE] of char; user_len : uword; function SYS$EXIT (%immed status : integer := %immed 1) : integer; extern; procedure check (status : integer); begin (* check *) if not odd (status) then begin if nq_context <> nil then PMDF_abort_message (nq_context); SYS$EXIT (status); end; (* if *) end; (* check *) begin (* example1 *) nq_context := nil; check (PMDF_initialize (false)); check (PMDF_get_user_name (user, user_len)); check (PMDF_enqueue_initialize); check (PMDF_start_message_envelope (nq_context, 'l', substr (user, 1, user_len))); (1) check (PMDF_add_recipient (nq_context, 'system', 'system')); (2) check (PMDF_start_message_header (nq_context)); check (PMDF_write_from (nq_context, substr (user, 1, user_len))); (3) check (PMDF_write_date (nq_context)); (4) check (PMDF_write_subject (nq_context, 'Hello world!')); (5) check (PMDF_start_message_body (nq_context)); check (PMDF_write_line (nq_context, 'Hello')); (6) check (PMDF_write_line (nq_context, ' world!')); (7) check (PMDF_enqueue_message (nq_context)); check (PMDF_done); end. (* example1 *) |
Example 1-3 Enqueuing a Message (C) |
---|
/* api_example2.c -- Send a "Hello world!" message to SYSTEM */ #include <stdlib.h> #ifdef __VMS #include "pmdf_com:apidef.h" #else #include "/pmdf/include/apidef.h" #endif PMDF_nq *nq_context = 0; void check (int stat) { if (!(1 & stat)) { if (nq_context) PMDFabortMessage (&nq_context); exit (stat); } } main () { char user[ALFA_SIZE+1]; int user_len = ALFA_SIZE; check (PMDFinitialize (0)); check (PMDFgetUserName (user, &user_len)); check (PMDFenqueueInitialize ()); check (PMDFstartMessageEnvelope (&nq_context, "l", 1, user, user_len)); (1) check (PMDFaddRecipient (&nq_context, "system", 6, "system", 6)); (2) check (PMDFstartMessageHeader (&nq_context)); check (PMDFwriteFrom (&nq_context, user, user_len)); (3) check (PMDFwriteDate (&nq_context)); (4) check (PMDFwriteSubject (&nq_context, "Hello world!", 12)); (5) check (PMDFstartMessageBody (&nq_context)); check (PMDFwriteLine (&nq_context, "Hello", 5)); (6) check (PMDFwriteLine (&nq_context, " world!", 8)); (7) check (PMDFenqueueMessage (&nq_context)); check (PMDFdone ()); } |
Example 1-4 Output of Examples 1-2 and 1-3 |
---|
Received: from EXAMPLE.COM by EXAMPLE.COM (PMDF #1339) id <01GP37SOPRW0A9KZFV@EXAMPLE.COM>; Sat, 4 May 2012 18:04:00 EDT Date: 4 May 2012 18:04:00 -0400 (EDT) (4) From: STEPHANO@EXAMPLE.COM (3) Subject: Hello world! (5) To: system@EXAMPLE.COM (2) Message-id: <01GP37SOPRW2A9KZFV@EXAMPLE.COM> X-Envelope-to: system Content-type: TEXT/PLAIN; CHARSET=US-ASCII Content-transfer-encoding: 7BIT Hello (6) world! (7) |
Previous | Next | Contents | Index |