Highlighted
Absent Member.
Absent Member.
1614 views

Migration from RM/COBOL: some problems

Jump to solution

[Migrated content. Thread originally posted on 21 December 2011]

Hello,

I have more problems with the migrating to VisualCobol of RMCOBOL programs... I wanted to know if there is some kind of solution for these problems, or if it will be corrected in future VisualCobol versions

1)In some programs RM / COBOL, we use the word PROGRAM-ID to know the name of the current program ..

       IDENTIFICATION DIVISION.
       PROGRAM-ID.   BASE0006.
       ...
       PROCEDURE DIVISION.
       PROGRAMA SECTION.
       PROGRAMA-INI.
                 
       ...
       DISPLAY "PROGRAM NAME: ", PROGRAM-ID.


But in Visual Cobol it gives the error "invalid operand"...

2) In Visual Cobol this line of code doesn't work

... (WENTRADA(1:1) IS LIKE CASE-INSENSITIVE “S”)..
We have to change it with
... ((WENTRADA(1:1) = “S”) OR (WENTRADA(1:1) = “s”))..

Is there another option that does not force me to modify the code?

3)The next RM/Cobol rutines doesn't work with Visual Cobol:

    C$GetSysInfo
    C$WRU


Is there any way to get the information you give us back these routines?
Will it be available in future VisualCobol versions?


Thanks in advance

0 Likes
1 Solution

Accepted Solutions
Highlighted
Micro Focus Expert
Micro Focus Expert

RE: Migration from RM/COBOL: some problems

Jump to solution
The RM compatible library routines that have been implemented in Visual COBOL are documented here:

Visual COBOL has its own set of Library routines that can be found documented here:

An example of how to return program information about the current program and other program in the run-unit is as follows: (please see entry for CBL_GET_PROGRAM_INFO for more detailed information)



       program-id. testProgram.
       data division.
       working-storage section.
       01 wsfunction              pic x(4) comp-5.
       01 param-block.
          05 cblte-gpi-size      pic x(4) comp-5.
          05 cblte-gpi-flags     pic x(4) comp-5.
          05 cblte-gpi-handle    usage pointer.
          05 cblte-gpi-prog-id   usage pointer.
          05 cblte-gpi-attrs     pic x(4) comp-5.
       01 return-buf             pic x(100).
       01 return-buf-len         pic x(4) comp-5 value 100.
       01 status-code     pic x(4) comp-5 value 0.
       procedure division.

           move length of param-block to cblte-gpi-size
           move length of return-buf to return-buf-len
           
         *> Establish the current program and return handle           
           
           move 0 to wsfunction
           perform 100-call-program-info
           display "program name = " return-buf
           
         *> Get first entry point in program
           move 4 to wsfunction
           perform 100-call-program-info
           display "entry point = " return-buf
         
         *> Close the handle that was established
           
           move 6 to wsfunction
           perform 100-call-program-info
           stop run.
       
       100-call-program-info.
                 
           call "CBL_GET_PROGRAM_INFO"
              using
                 by value wsfunction
                 by reference   param-block
                 by reference   return-buf
                 by reference   return-buf-len
             returning      status-code
            end-call.
           


The UPPER-CASE intrinsic function can be used instead of the CASE-INSENSITIVE of RM


IF FUNCTION UPPER-CASE(WENTRADA(1:1)) = "S"

View solution in original post

0 Likes
1 Reply
Highlighted
Micro Focus Expert
Micro Focus Expert

RE: Migration from RM/COBOL: some problems

Jump to solution
The RM compatible library routines that have been implemented in Visual COBOL are documented here:

Visual COBOL has its own set of Library routines that can be found documented here:

An example of how to return program information about the current program and other program in the run-unit is as follows: (please see entry for CBL_GET_PROGRAM_INFO for more detailed information)



       program-id. testProgram.
       data division.
       working-storage section.
       01 wsfunction              pic x(4) comp-5.
       01 param-block.
          05 cblte-gpi-size      pic x(4) comp-5.
          05 cblte-gpi-flags     pic x(4) comp-5.
          05 cblte-gpi-handle    usage pointer.
          05 cblte-gpi-prog-id   usage pointer.
          05 cblte-gpi-attrs     pic x(4) comp-5.
       01 return-buf             pic x(100).
       01 return-buf-len         pic x(4) comp-5 value 100.
       01 status-code     pic x(4) comp-5 value 0.
       procedure division.

           move length of param-block to cblte-gpi-size
           move length of return-buf to return-buf-len
           
         *> Establish the current program and return handle           
           
           move 0 to wsfunction
           perform 100-call-program-info
           display "program name = " return-buf
           
         *> Get first entry point in program
           move 4 to wsfunction
           perform 100-call-program-info
           display "entry point = " return-buf
         
         *> Close the handle that was established
           
           move 6 to wsfunction
           perform 100-call-program-info
           stop run.
       
       100-call-program-info.
                 
           call "CBL_GET_PROGRAM_INFO"
              using
                 by value wsfunction
                 by reference   param-block
                 by reference   return-buf
                 by reference   return-buf-len
             returning      status-code
            end-call.
           


The UPPER-CASE intrinsic function can be used instead of the CASE-INSENSITIVE of RM


IF FUNCTION UPPER-CASE(WENTRADA(1:1)) = "S"

View solution in original post

0 Likes
The opinions expressed above are the personal opinions of the authors, not of Micro Focus. By using this site, you accept the Terms of Use and Rules of Participation. Certain versions of content ("Material") accessible here may contain branding from Hewlett-Packard Company (now HP Inc.) and Hewlett Packard Enterprise Company. As of September 1, 2017, the Material is now offered by Micro Focus, a separately owned and operated company. Any reference to the HP and Hewlett Packard Enterprise/HPE marks is historical in nature, and the HP and Hewlett Packard Enterprise/HPE marks are the property of their respective owners.