HP3000-L Archives

April 1999, Week 3

HP3000-L@RAVEN.UTC.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Rick Gilligan <[log in to unmask]>
Reply To:
Rick Gilligan <[log in to unmask]>
Date:
Wed, 21 Apr 1999 17:18:41 GMT
Content-Type:
text/plain
Parts/Attachments:
text/plain (179 lines)
In article <[log in to unmask]>,
John C. Vestal <[log in to unmask]> wrote:

>    I need an example of how to call a CM routine from an NM XL.  I
>would prefer a COBOL example but any help would be appreciated.

So much for needing a PASCAL compiler...

Here's an example of one I wrote in '91.  Be careful of input, output and
input/output.  Also, where the item passed has an arbitrary length... be
careful to copy only the proper number of bytes.

Also, be sure to reference the correct SL.

$CONTROL SOURCE,LINES=60,DYNAMIC,SUBPROGRAM
 IDENTIFICATION DIVISION.
 PROGRAM-ID.  MXXL002A.
**
** CONST
$define   %HpPidtKnown      =%0#
$define   %HpPidtName       =%1#
$define   %HpPidtPlabel     =%2#
**
$define   %HpSystemSl       =%0#
$define   %HpLogonPubSl     =%1#
$define   %HpLogonGroupSl   =%2#
$define   %HpPubSl          =%3#
$define   %HpGroupSl        =%4#
**
$define   %HpMethodNormal   =0#
$define   %HpMethodSplit    =1#
$define   %HpMethodNoCopy   =2#
**
$define   %HpParmValue      =0#
$define   %HpParmWordRef    =1#
$define   %HpParmByteRef    =2#
**
$define   %HpCcg            =0#
$define   %HpCcl            =1#
$define   %HpCce            =2#
$define   %HpAllOk          =0#
**
$define %Hpinput            =%20000000000#
$define %Hpoutput           =%10000000000#
**
$page
 DATA DIVISION.
 WORKING-STORAGE SECTION.

 01  Hp--proc.
     05  Hp--p-proc-id-type      PIC X(01).
     05  Hp--p-lib               PIC X(01).
     05  Hp--p-proc-name         PIC X(16).

 01  Hp--parms.
     05  FILLER                  OCCURS 32.
         10  Hp--pd-parmptr      PIC S9(18) COMP.
         10  Hp--pd-parmlen      PIC S9(04) COMP.
         10  Hp--pd-parm-type    PIC S9(04) COMP.
         10  Hp--pd-io-type      PIC S9(09) COMP.

 01  Hp--method                  PIC S9(09) COMP.

 01  Hp--nparms                  PIC S9(09) COMP.

 01  Hp--funclen                 PIC S9(09) COMP.

 01  Hp--funcptr                 PIC S9(09) COMP.

 01  Hp--cond-code               PIC S9(04) COMP.

 01  Hp--status.
     05  Hp--all                 PIC S9(09) COMP.
     05  FILLER                  REDEFINES Hp--all.
         10  Hp--info            PIC S9(04) COMP.
         10  Hp--subsys          PIC S9(04) COMP.

 LINKAGE SECTION.

 COPY MXXKSRB IN MXXCOPY.

 COPY MXXKVCA IN MXXCOPY.

 01  LINEBUF                     PIC X(80).

 01  UNDERBUF                    PIC X(80).

** STUB procedure MXXL002A

 PROCEDURE DIVISION USING SCROLLING-REVIEW-BLOCK
                          VIEW-COMM-AREA
                          LINEBUF
                          UNDERBUF.
 0000-MXXL002A.
*
*    Initialization
*
*    Setup procedure information--name, lib, etc.
*
     MOVE %HpPidtName    TO Hp--p-proc-id-type.
     MOVE %HpPubSl       TO Hp--p-lib.
     MOVE "MXXL002A"     TO Hp--p-proc-name.
*
*    Setup misc. variables
*
     MOVE %HpMethodNormal    TO Hp--method.
     MOVE 4                  TO Hp--nparms.
*
*    Setup length/pointers for functional return if this
*    is a FUNCTION.  Set length to zero, pointer to NIL
*    if this is not a FUNCTION.
*
     MOVE 0 TO Hp--funclen.
     MOVE 0 TO Hp--funcptr.
*
*    Make a local copy of all VALUE parameters
*
*
*    Build parameter descriptor array to describe each
*    parameter.
*
*
*    SCROLLING-REVIEW-BLOCK -- Input/Output by REFERENCE
*
     CALL INTRINSIC ".LOC." USING  SCROLLING-REVIEW-BLOCK
                            GIVING Hp--pd-parmptr (1).
     CALL INTRINSIC ".LEN." USING  SCROLLING-REVIEW-BLOCK
                            GIVING Hp--pd-parmlen (1).
     MOVE %HpParmWordRef        TO Hp--pd-parm-type (1).
     COMPUTE Hp--pd-io-type (1) = %Hpinput + %Hpoutput.
*
*    VIEW-COMM-AREA -- Input/Output by REFERENCE
*
     CALL INTRINSIC ".LOC." USING  VIEW-COMM-AREA
                            GIVING Hp--pd-parmptr (2).
     COMPUTE Hp--pd-parmlen (2) = VCA-COMAREALEN * 2.
     MOVE %HpParmWordRef        TO Hp--pd-parm-type (2).
     COMPUTE Hp--pd-io-type (2) = %Hpinput + %Hpoutput.
*
*    LINEBUF -- Input by REFERENCE
*
     CALL INTRINSIC ".LOC." USING  LINEBUF
                            GIVING Hp--pd-parmptr (3).
     CALL INTRINSIC ".LEN." USING  LINEBUF
                            GIVING Hp--pd-parmlen (3).
     MOVE %HpParmWordRef        TO Hp--pd-parm-type (3).
     COMPUTE Hp--pd-io-type (3) = %Hpinput.
*
*    UNDERBUF -- Input by REFERENCE
*
     CALL INTRINSIC ".LOC." USING  UNDERBUF
                            GIVING Hp--pd-parmptr (4).
     CALL INTRINSIC ".LEN." USING  UNDERBUF
                            GIVING Hp--pd-parmlen (4).
     MOVE %HpParmWordRef        TO Hp--pd-parm-type (4).
     COMPUTE Hp--pd-io-type (4) = %Hpinput.
*
*    Do the actual SWITCH call
*
     CALL INTRINSIC "hpswitchtocm" USING Hp--proc
                                         Hp--method
                                         Hp--nparms
                                         Hp--parms
                                         Hp--funclen
                                         Hp--funcptr
                                         Hp--cond-code
                                         Hp--status.
     IF Hp--all NOT = %HpAllOk
     THEN
         CALL INTRINSIC "quit" USING Hp--info.

*** end

--
Rick Gilligan
Senior Software Specialist
Computer And Software Enterprises, Inc.
E-mail: [log in to unmask]

ATOM RSS1 RSS2