POINTERS 
Author Message
 POINTERS

Anybody that know work with POINTERS in cobol.
I need an litle example.
nax


Wed, 20 Apr 2005 15:31:57 GMT  
 POINTERS
On Sat, 2 Nov 2002 07:31:57 UTC, "Maximo Ricardo Boettner"

Quote:

> Anybody that know work with POINTERS in cobol.
> I need an litle example.
> nax

define some buffer

01  some-buffer.
  02  buff-bits pic x(4000).

define the pointer

01  the-pointer usage pointer.

in the procedures

set the-pointer to address of some-buffer.

call "someprogram" using
  by value the-pointer

is equivalent to

call "someprogram" using
  by reference some-buffer

--
Lorne Sunley



Wed, 20 Apr 2005 22:15:57 GMT  
 POINTERS

Quote:
> Anybody that know work with POINTERS in cobol.
> I need an litle example.

In standard Cobol the STRING and UNSTRING have 'WITH POINTER var-n'
clauses which are very useful. for example to unstring one value at a
time:

       MOVE 1      TO current-position
       PERFORM
           WITH TEST AFTER          
           UNTIL current-terminator = "'"

           MOVE SPACES      TO Work-string
           UNSTRING EDIFACT-Segment
               DELIMITED BY "'" OR "+" OR ":"
               INTO Work-string
               DELIMITER IN current-terminator
               WITH POINTER current-position
           IF ( ... )
               blah blah
           END-IF
       END-PERFORM    Note: an EDIFACT segment ends with an "'" and
the values are separated by + and :.

However, I doubt that this is what you actually mean.  You probably
want to use raw machine addresses in an entirely low-level language
way.  Cobol is a high level language and avoids such grubby and
error-prone mechanisms.
Some compilers do have extensions to the language which can cater for
some uses that require dealing with raw addresses.  For example it is
possible (in some implementations) to take the address of an object
using:

            SET My-raw-address     TO ADDRESS OF My-record-area

also if an address is passed into a Cobol program it is possible to
de-reference this by having a declaration of its structure in linkage
section and then using SET to associate the declaration with the
address:

       LINKAGE SECTION.
       01  Passed-in-area.
           03  Passed-item-1          PIC S9(8) COMP-5.
           etc

           SET ADDRESS OF Passed-in-area   TO My-raw-address

then you can access Passed-in-... fields because they will map over
the data area in the program that gave you the address (probably).

See the specific details of this in the manuals of the version you
use.



Thu, 21 Apr 2005 05:35:24 GMT  
 POINTERS
Hi Max,

If you're an IBM/MVS pgmr, here are some code snippets that illustrate
the use of pointers to access system control blocks.
It's a tad dated but the pointer concepts are still valid.

Regards, Jack.

PROGRAM-ID.    RUNINFO.
**************************************************
*  DISPLAYS THE FOLLOWING RUN INFO FOR THE
*  CALLING PROGRAM:

*       ~   PGM/JOB/JOBSTEP/PROCSTEP NAMES  
*       ~   ENTRY/LOAD/END POINTS AND LENGTH OF
*           program

*  FOR COBOL II PROGRAMS ALSO DISPLAYS 4 BYTES OF
*  HEX INDICATORS SHOWING THE COMPILE OPTIONS
*  SELECTED AT COMPILE TIME.
**************************************************

**************************************************
 WORKING-STORAGE                 SECTION.
**************************************************

 01  WS-TCB-ADDR-01.
     10  WS-TCB-ADDR             POINTER.
 .
 .
 .

 /
**************************************************
 LINKAGE                         SECTION.
**************************************************

 01  LK-TCB-ADDR                 POINTER.
  .
  .
  .
*-------------------------------------------------
*===> T A S K   C O N T R O L   B L O C K
*-------------------------------------------------
 01  LK-TCB.
     10  FILLER                  PIC  X(012).
     10  LK-TIOT-ADDR            POINTER.
     10  FILLER                  PIC  X(028).
     10  LK-LAST-CDE-ADDR        POINTER.

*-------------------------------------------------
*===>     T A S K   I/O   T A B L E
*-------------------------------------------------
 01  LK-TIOT.
     10  LK-JOB-NAME             PIC  X(008).
     10  LK-JSTP-NAME            PIC  X(008).
     10 LK-PSTP-NAME             PIC  X(008).

*-------------------------------------------------
*===> C O N T E N T S    D I R E C T O R Y    
*===>             E N T R Y
*-------------------------------------------------
 01  LK-CDE.
     10  LK-PREV-CDE-ADDR        POINTER.
     10  FILLER                  PIC  X(004).
     10  LK-PGM-NAME             PIC  X(008).
     10  LK-EP-ADDR              PIC  X(004).
     10  LK-EXTENT-LST-ADDR      POINTER.

*-------------------------------------------------
*===>         E X T E N T    L I S T
*-------------------------------------------------
 01  LK-EXTENT-LST.
     10  FILLER                  PIC  X(009).
     10  LK-PGM-LEN              PIC  X(003).
     10  LK-LP-ADDR              PIC  X(004).
     10  REDEFINES  LK-LP-ADDR.
     15  LK-LP-ADDR-BIN          PIC  9(009) COMP.
     10  REDEFINES  LK-LP-ADDR.
     15  LK-LP-ADDR-PTR          POINTER.

**************************************************
 01  LK-COMPILER-INFO.
**************************************************
     05  LK-VSCOB-INFO.
         10 FILLER               PIC  X(020).
         10 LK-TYPE-VS           PIC  X(002).
            88 LK-VSCOBOL             VALUE "VS".
         10 FILLER               PIC  X(001).
         10 LK-VSREL-NBR         PIC  X(001).
         10 FILLER               PIC  X(112).
         10 LK-VSTIME            PIC  X(008).
         10 LK-VSMO-DAY          PIC  X(008).
         10 LK-VSYEAR            PIC  X(004).
     05  REDEFINES  LK-VSCOB-INFO.
     10  LK-COBII-INFO.
         20 FILLER               PIC  X(014).
         20 LK-TYPE-II           PIC  X(002).
         20 FILLER               PIC  X(001).
         20 LK-IIREL-NBR         PIC  X(006).
         20 LK-IIMON-DAY-YR      PIC  X(009).
         20 LK-IITIME            PIC  X(008).
         20 FILLER               PIC  X(004).
         20 LK-IIOPT-BYTES       PIC  X(004).

**************************************************
 PROCEDURE DIVISION.
**************************************************

 000-MAINLINE.
*-------------------------------------------------
*===>  ESTABLISH ADDRESSABILITY FOR TIOT
*-------------------------------------------------
     MOVE X"0000021C" TO  WS-TCB-ADDR-01
     SET  ADDRESS OF LK-TCB-ADDR TO  WS-TCB-ADDR
     SET  ADDRESS OF LK-TCB      TO  LK-TCB-ADDR
     SET  ADDRESS OF LK-TIOT     TO  LK-TIOT-ADDR

*-------------------------------------------------
*===>  SET UP STEP NAMES FOR DISPLAY
*-------------------------------------------------
     IF LK-JSTP-NAME = SPACES
        AND
        LK-PSTP-NAME = SPACES
        GO TO 000-CONTINUE
     END-IF
     IF LK-PSTP-NAME = SPACES
        MOVE LK-JSTP-NAME TO WS-JSTP-NAME
     ELSE
        MOVE LK-PSTP-NAME TO WS-JSTP-NAME
        MOVE LK-JSTP-NAME TO WS-PSTP-NAME
     END-IF
     .
 000-CONTINUE.
*-------------------------------------------------
*===>  SET UP PGM NAME FOR DISPLAY
*-------------------------------------------------
     SET ADDRESS OF LK-CDE TO LK-LAST-CDE-ADDR
     PERFORM WITH TEST BEFORE
       UNTIL LK-PREV-CDE-ADDR = NULLS
             SET ADDRESS OF LK-CDE
              TO  LK-PREV-CDE-ADDR
     END-PERFORM
     MOVE LK-PGM-NAME TO WS-PN-DISPLAY
     .
     .

Quote:

> On Sat, 2 Nov 2002 07:31:57 UTC, "Maximo Ricardo Boettner"

> > Anybody that know work with POINTERS in cobol.
> > I need an litle example.
> > nax

> define some buffer

> 01  some-buffer.
>   02  buff-bits pic x(4000).

> define the pointer

> 01  the-pointer usage pointer.

> in the procedures

> set the-pointer to address of some-buffer.

> call "someprogram" using
>   by value the-pointer

> is equivalent to

> call "someprogram" using
>   by reference some-buffer



Thu, 21 Apr 2005 08:01:16 GMT  
 POINTERS
//JOBNAME JOB (ACCT,'ROOM-NBR'),'HOTTEL COBPTR',MSGCLASS=S,CLASS=K        

//PROCLIB JCLLIB ORDER=USERID.DVL.PROC                                    

//        SET TITLE1='XXX.COB00010'                                        

//OUTPUT INCLUDE MEMBER=DESTCH                                            

//*-------------------------------------------------------------------*    

//*        COBOL II COMPILE                                           *    

//*-------------------------------------------------------------------*    

//STEP01   EXEC  COB3CLG,LIBRARY='DVL.SOURCE.LIBMAST',PROG=IEFBR14,        

//    LOPT='AMODE=31,RMODE=ANY'                                            

//COMP.SYSIN DD  *                                                        

       ID DIVISION.                                                        

       PROGRAM-ID.   COBPTR.                                              

       AUTHOR.       CHARLIE HOTTEL.                                      

       DATE-WRITTEN. 08/22/01.                                            

       DATE-COMPILED.                                                      

      *---------------------------------------------------------------*    

      *    VS COBOL II POINTER FEATURE EXAMPLE                        *    

      *    USING MVS CONTROL BLOCKS                                   *    

      *---------------------------------------------------------------*    

      *    BASED ON ARTICLE: "THE POINTER FEATURE OF VS COBOL II" BY  *    

      *    ANNE PETICOLAS IN ENTERPRISE SYSTEMS JOURNAL, MARCH 1991.  *    

      *---------------------------------------------------------------*    

       ENVIRONMENT DIVISION.                                              

       INPUT-OUTPUT SECTION.                                              

       FILE-CONTROL.                                                      

           SELECT TEST-FILE ASSIGN TO DD1.                                

       DATA DIVISION.                                                      

       FILE SECTION.                                                      

       FD  TEST-FILE                                                      

           LABEL RECORDS STANDARD                                          

           RECORDING MODE IS F                                            

           BLOCK CONTAINS 0 RECORDS                                        

           DATA RECORD IS TEST-REC.                                        

       01  TEST-REC PIC X(80).                                            

      /                                                                    

       WORKING-STORAGE SECTION.                                            

TEST***01  WS-TEST                            PIC S9(9) COMP VALUE ZERO.  

       01  WS-WORK                             PIC S9(9) COMP.            

       01  WS-RIGHT-HEX-DIGIT                  PIC S9(4) COMP.            

       01  WS-LEN                              PIC S9(4) COMP.            

       01  WS-LENGTH REDEFINES WS-LEN          PIC X(02).                  

       01  WS-FLAG                             PIC S9(4) COMP.            

       01  WS-FLAG1 REDEFINES WS-FLAG          PIC X(02).                  

       01  WS-TCB-ADDRESS-POINTER.                                        

           05  WS-TCB-ADDR-POINTER             USAGE IS POINTER.          

       01  WS-TIOT-SEG-POINT.                                              

           05  WS-TIOT-SEG-POINTER             USAGE IS POINTER.          

           05  WS-TIOT-SEG-PNT REDEFINES WS-TIOT-SEG-POINTER              

                                               PIC S9(9) COMP.            

       01  WS-JFCB-POINT.                                                  

           05  WS-JFCB-POINTER                 USAGE IS POINTER.          

           05  WS-JFCB-PTR REDEFINES WS-JFCB-POINTER                      

                                               PIC S9(9) COMP.            

           05  WS-JFCB-POINT-RED REDEFINES  WS-JFCB-PTR.                  

               07  FILLER                      PIC X.                      

               07  WS-JFCB-LOW-3               PIC X(3).                  

       01  WS-POINT.                                                      

           05  WS-POINTER                      USAGE IS POINTER.          

           05  WS-PTR REDEFINES WS-POINTER                                

                                               PIC S9(9) COMP.            

           05  WS-POINT-RED REDEFINES WS-PTR.                              

               07  FILLER                      PIC X.                      

               07  WS-LOW-3                    PIC X(3).                  

       01  WS-SWA-POINT.                                                  

           05  WS-SWA-POINTER                  USAGE IS POINTER.          

           05  WS-SWA-PTR REDEFINES WS-SWA-POINTER                        

                                               PIC S9(9) COMP.            

           05  WS-SWA-POINT-RED REDEFINES WS-SWA-PTR.                      

               07  FILLER                      PIC X.                      

               07  WS-SWA-LOW-3                PIC X(3).                  

       01  WS-QMAT-POINT.                                                  

           05  WS-QMAT-POINTER                 USAGE IS POINTER.          

           05  WS-QMAT-PTR REDEFINES WS-QMAT-POINTER                      

                                               PIC S9(9) COMP.            

      /                                                                    

       01  WS-UCB-POINT.                                                  

           05  WS-UCB-POINTER                  USAGE IS POINTER.          

           05  WS-UCB-POINT-RED REDEFINES WS-UCB-POINTER.                  

               07  FILLER                      PIC X.                      

               07  WS-UCB-LOW-3                PIC X(3).                  

       01  WS-DEB-POINT.                                                  

           05  WS-DEB-POINTER                  USAGE IS POINTER.          

           05  WS-DEB-POINT-RED REDEFINES WS-DEB-POINTER.                  

               07  FILLER                      PIC X.                      

               07  WS-DEB-LOW-3                PIC X(3).                  

       01  WS-DCB-POINT.                                                  

           05  WS-DCB-POINTER                  USAGE IS POINTER.          

           05  WS-DCB-POINT-RED REDEFINES WS-DCB-POINTER.                  

               07  FILLER                      PIC X.                      

               07  WS-DCB-LOW-3                PIC X(3).                  

       01  WS-CVT-ADDRESS-POINTER.                                        

           05  WS-CVT-ADDR-POINTER             USAGE IS POINTER.          

       01  WS-ASCB-ADDRESS-POINTER.                                        

           05  WS-ASCB-ADDR-POINTER            USAGE IS POINTER.          

       01  WS-ASSB-ADDRESS-POINTER.                                        

           05  WS-ASSB-ADDR-POINTER            USAGE IS POINTER.          

       01  WS-JSAB-ADDRESS-POINTER.                                        

           05  WS-JSAB-ADDR-POINTER            USAGE IS POINTER.          

      /                                                                    

      *---------------------------------------------------------------*    

      * PUT THE STATEMENTS BELOW IN AN ASSEMBLER program TO LOCATE    *    

      * THE DISPLACEMENTS OF THE SYMBOLS.  THESE LINES WERE SHIFTED   *    

      * TO THE RIGHT TO MAKE COBOL COMMENTS.  SHIFT THEM BACK TO THE  *    

      * LEFT SO THAT THE WORD 'TITLE' IS IN COLUMN 10.                *    

      *---------------------------------------------------------------*    

      *              TITLE 'PREFIX STORAGE AREA'                      *    

      *              IHAPSA LIST=YES                                  *    

      *              TITLE 'TASK CONTROL BLOCK'                       *    

      *              IKJTCB LIST=YES                                  *    

      *              TITLE 'SECONDARY TASK CONTROL BLOCK'             *    

      *              IHASTCB LIST=YES
...

read more »



Thu, 21 Apr 2005 10:48:36 GMT  
 
 [ 5 post ] 

 Relevant Pages 

1. ISO C Binding: Pointer to a pointer of pointers: ***argv

2. Pointers to pointers possible?

3. A pointer to an array of pointers

4. Pointer to pointer with LabVIEW 4.1?

5. pointers and pointers.

6. Returning Pointer To Pointer From Function

7. Implementing pointers to pointers in Ada

8. pointer to pointer to field / dynamic field

9. A couple of simple pointer questions (targets, arrays of pointers)

10. Deallocation of a pointer which points to a type containing allocated pointers

11. fortran 90/95 pointers vs C pointers

12. pointers to pointers

 

 
Powered by phpBB® Forum Software