What happens if you add a copybook to linkage section instead of adding it to a working-storage section in a sub-program?Adding a field to an existing COBOL data filenot able to add decimals in the loop after reading it from the fileCICS EXCI Transaction CSMI abend ASRAHow to use file descriptions in cobol?Does the whole linkage section return?Executable program requested but PROCEDURE/ENTRY has USING clauseHandling multiple containers over one pipe in CICS web service call from COBOLHow to use LINKAGE SECTION and WORKING-STORAGE SECTION in the same file?Passing Arrays using POINTERS in CBLLEInitialize variable-length in Cobol

Journal standards vs. personal standards

How to get a character's limb regrown at 3rd level?

Why do I need two parameters in an HTTP parameter pollution attack?

The warming up game

Is there a legal way for US presidents to extend their terms beyond two terms of four years?

Find the radius of the hoop.

How to properly say asset/assets in German

I hit a pipe with a mower and now it won't turn

My colleague is constantly blaming me for his errors

Sacrifice blocking creature before damage is dealt no longer working (MtG Arena)?

What will happen if I checked in for another room in the same hotel, but not for the booked one?

Comment traduire « That screams X »

Could human civilization live 150 years in a nuclear-powered aircraft carrier colony without resorting to mass killing/ cannibalism?

How do we separate rules of logic from non-logical constraints?

Single level file directory

Does a Hand Crossbow with the Repeating Shot Infusion still require a Free Hand to use?

Was it really unprofessional of me to leave without asking for a raise first?

What is "override advice"?

Different budgets within roommate group

How to plan the font size in a fiction?

How receiver knows the exact frequency in the channel to "listen to"?

Can SOCPs approximate better than LPs?

Is there reliable evidence that depleted uranium from the 1999 NATO bombing is causing cancer in Serbia?

Closest Proximity of Oceans to Freshwater Springs



What happens if you add a copybook to linkage section instead of adding it to a working-storage section in a sub-program?


Adding a field to an existing COBOL data filenot able to add decimals in the loop after reading it from the fileCICS EXCI Transaction CSMI abend ASRAHow to use file descriptions in cobol?Does the whole linkage section return?Executable program requested but PROCEDURE/ENTRY has USING clauseHandling multiple containers over one pipe in CICS web service call from COBOLHow to use LINKAGE SECTION and WORKING-STORAGE SECTION in the same file?Passing Arrays using POINTERS in CBLLEInitialize variable-length in Cobol






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








5















What happens if you add a copybook to linkage section instead of adding it to a working-storage section in a sub-program?










share|improve this question






























    5















    What happens if you add a copybook to linkage section instead of adding it to a working-storage section in a sub-program?










    share|improve this question


























      5












      5








      5








      What happens if you add a copybook to linkage section instead of adding it to a working-storage section in a sub-program?










      share|improve this question
















      What happens if you add a copybook to linkage section instead of adding it to a working-storage section in a sub-program?







      cobol






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Mar 25 at 18:42









      zarchasmpgmr

      1,2588 silver badges18 bronze badges




      1,2588 silver badges18 bronze badges










      asked Mar 25 at 13:31









      Ganesh kGanesh k

      261 bronze badge




      261 bronze badge






















          2 Answers
          2






          active

          oldest

          votes


















          8














          This is a common practice. Having a copybook that can be used in the Working-Storage or Local-Storage Section of a calling program and the Linkage Section of the program being called ensures the parameters on the CALL match.



          As noted in another answer, no storage is allocated for a copybook in the Linkage Section. This is no different than any other variables described there. If you want addressability to variables defined in the Linkage Section, you must include them in the USING phrase of your Procedure Division, which allows the calling parameters to be matched with variables described in the Linkage Section -or- you must dynamically allocate storage of sufficient size to accommodate these variables and use SET ADDRESS OF linkage-section-item TO pointer-to-allocated-storage. Probably the most portable method to allocate storage in COBOL is the ALLOCATE statement if your compiler supports it. With IBM Enterprise COBOL storage can be allocated via the Language Environment callable service CEEGTST, Micro Focus has CBL_ALLOC_MEM, some compilers and environments support directly callin C functions so you could use malloc() there.



          COBOL (and C, et. al.) compilers do not enforce type-safety for passed parameters. At run time the Linkage Section variables in the called program are mapped to the addresses of the variables on the CALL statement in the calling program.



          As noted in a comment by @SimonSobisch, there has been some work done in the COBOL standard to enforce type-safety on CALLs via prototypes. Not all COBOL compilers support this.



          If you have a copybook in which calling parameters for a subroutine are defines, and use the same copybook in the Working-Storage section of the calling program and the Linkage Section of the program it calls, then changes to the definition of the parameters need only be done in one place (the copybook), and hopefully your source code management system will force recompilation of both the caller and the called program, ensuring there is no parameter mismatch.






          share|improve this answer




















          • 1





            "COBOL compilers do not enforce type-safety for passed parameters." COBOL 2002 has program-prototypes that do exactly this, doesn't it? And it specifies checks that (if the compiler supports it) will be done at run-time to verify the parameters match by type and size (and by actually being passed). I suggest to update your good answer that gives the main point of WS/LS->PROCEDURE DIVISION USING, along with ways to allocate storage (No idea of GETMAIN but a CALL to C$MALLOC, CBL_..., and the standard ALLOCATE statement should work).

            – Simon Sobisch
            Mar 25 at 16:20


















          3














          The storage will not be allocated when running the program. You will need to gain addressability to it, either by having a program call the sub-program with the copybook as one of the parameters AND specifying the copybook in the PROCEDURE DIVISION USING...



          Alternatively you can use a GETMAIN command (like EXEC CICS GETMAIN, if you are in CICS) to allocate some storage, and then set the address of the copybook to the resulting pointer.



          If you try to assign values to the copybook without doing either, you will get abends, probably S0C4 (Protection Exception).






          share|improve this answer

























            Your Answer






            StackExchange.ifUsing("editor", function ()
            StackExchange.using("externalEditor", function ()
            StackExchange.using("snippets", function ()
            StackExchange.snippets.init();
            );
            );
            , "code-snippets");

            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "1"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













            draft saved

            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55338967%2fwhat-happens-if-you-add-a-copybook-to-linkage-section-instead-of-adding-it-to-a%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            8














            This is a common practice. Having a copybook that can be used in the Working-Storage or Local-Storage Section of a calling program and the Linkage Section of the program being called ensures the parameters on the CALL match.



            As noted in another answer, no storage is allocated for a copybook in the Linkage Section. This is no different than any other variables described there. If you want addressability to variables defined in the Linkage Section, you must include them in the USING phrase of your Procedure Division, which allows the calling parameters to be matched with variables described in the Linkage Section -or- you must dynamically allocate storage of sufficient size to accommodate these variables and use SET ADDRESS OF linkage-section-item TO pointer-to-allocated-storage. Probably the most portable method to allocate storage in COBOL is the ALLOCATE statement if your compiler supports it. With IBM Enterprise COBOL storage can be allocated via the Language Environment callable service CEEGTST, Micro Focus has CBL_ALLOC_MEM, some compilers and environments support directly callin C functions so you could use malloc() there.



            COBOL (and C, et. al.) compilers do not enforce type-safety for passed parameters. At run time the Linkage Section variables in the called program are mapped to the addresses of the variables on the CALL statement in the calling program.



            As noted in a comment by @SimonSobisch, there has been some work done in the COBOL standard to enforce type-safety on CALLs via prototypes. Not all COBOL compilers support this.



            If you have a copybook in which calling parameters for a subroutine are defines, and use the same copybook in the Working-Storage section of the calling program and the Linkage Section of the program it calls, then changes to the definition of the parameters need only be done in one place (the copybook), and hopefully your source code management system will force recompilation of both the caller and the called program, ensuring there is no parameter mismatch.






            share|improve this answer




















            • 1





              "COBOL compilers do not enforce type-safety for passed parameters." COBOL 2002 has program-prototypes that do exactly this, doesn't it? And it specifies checks that (if the compiler supports it) will be done at run-time to verify the parameters match by type and size (and by actually being passed). I suggest to update your good answer that gives the main point of WS/LS->PROCEDURE DIVISION USING, along with ways to allocate storage (No idea of GETMAIN but a CALL to C$MALLOC, CBL_..., and the standard ALLOCATE statement should work).

              – Simon Sobisch
              Mar 25 at 16:20















            8














            This is a common practice. Having a copybook that can be used in the Working-Storage or Local-Storage Section of a calling program and the Linkage Section of the program being called ensures the parameters on the CALL match.



            As noted in another answer, no storage is allocated for a copybook in the Linkage Section. This is no different than any other variables described there. If you want addressability to variables defined in the Linkage Section, you must include them in the USING phrase of your Procedure Division, which allows the calling parameters to be matched with variables described in the Linkage Section -or- you must dynamically allocate storage of sufficient size to accommodate these variables and use SET ADDRESS OF linkage-section-item TO pointer-to-allocated-storage. Probably the most portable method to allocate storage in COBOL is the ALLOCATE statement if your compiler supports it. With IBM Enterprise COBOL storage can be allocated via the Language Environment callable service CEEGTST, Micro Focus has CBL_ALLOC_MEM, some compilers and environments support directly callin C functions so you could use malloc() there.



            COBOL (and C, et. al.) compilers do not enforce type-safety for passed parameters. At run time the Linkage Section variables in the called program are mapped to the addresses of the variables on the CALL statement in the calling program.



            As noted in a comment by @SimonSobisch, there has been some work done in the COBOL standard to enforce type-safety on CALLs via prototypes. Not all COBOL compilers support this.



            If you have a copybook in which calling parameters for a subroutine are defines, and use the same copybook in the Working-Storage section of the calling program and the Linkage Section of the program it calls, then changes to the definition of the parameters need only be done in one place (the copybook), and hopefully your source code management system will force recompilation of both the caller and the called program, ensuring there is no parameter mismatch.






            share|improve this answer




















            • 1





              "COBOL compilers do not enforce type-safety for passed parameters." COBOL 2002 has program-prototypes that do exactly this, doesn't it? And it specifies checks that (if the compiler supports it) will be done at run-time to verify the parameters match by type and size (and by actually being passed). I suggest to update your good answer that gives the main point of WS/LS->PROCEDURE DIVISION USING, along with ways to allocate storage (No idea of GETMAIN but a CALL to C$MALLOC, CBL_..., and the standard ALLOCATE statement should work).

              – Simon Sobisch
              Mar 25 at 16:20













            8












            8








            8







            This is a common practice. Having a copybook that can be used in the Working-Storage or Local-Storage Section of a calling program and the Linkage Section of the program being called ensures the parameters on the CALL match.



            As noted in another answer, no storage is allocated for a copybook in the Linkage Section. This is no different than any other variables described there. If you want addressability to variables defined in the Linkage Section, you must include them in the USING phrase of your Procedure Division, which allows the calling parameters to be matched with variables described in the Linkage Section -or- you must dynamically allocate storage of sufficient size to accommodate these variables and use SET ADDRESS OF linkage-section-item TO pointer-to-allocated-storage. Probably the most portable method to allocate storage in COBOL is the ALLOCATE statement if your compiler supports it. With IBM Enterprise COBOL storage can be allocated via the Language Environment callable service CEEGTST, Micro Focus has CBL_ALLOC_MEM, some compilers and environments support directly callin C functions so you could use malloc() there.



            COBOL (and C, et. al.) compilers do not enforce type-safety for passed parameters. At run time the Linkage Section variables in the called program are mapped to the addresses of the variables on the CALL statement in the calling program.



            As noted in a comment by @SimonSobisch, there has been some work done in the COBOL standard to enforce type-safety on CALLs via prototypes. Not all COBOL compilers support this.



            If you have a copybook in which calling parameters for a subroutine are defines, and use the same copybook in the Working-Storage section of the calling program and the Linkage Section of the program it calls, then changes to the definition of the parameters need only be done in one place (the copybook), and hopefully your source code management system will force recompilation of both the caller and the called program, ensuring there is no parameter mismatch.






            share|improve this answer















            This is a common practice. Having a copybook that can be used in the Working-Storage or Local-Storage Section of a calling program and the Linkage Section of the program being called ensures the parameters on the CALL match.



            As noted in another answer, no storage is allocated for a copybook in the Linkage Section. This is no different than any other variables described there. If you want addressability to variables defined in the Linkage Section, you must include them in the USING phrase of your Procedure Division, which allows the calling parameters to be matched with variables described in the Linkage Section -or- you must dynamically allocate storage of sufficient size to accommodate these variables and use SET ADDRESS OF linkage-section-item TO pointer-to-allocated-storage. Probably the most portable method to allocate storage in COBOL is the ALLOCATE statement if your compiler supports it. With IBM Enterprise COBOL storage can be allocated via the Language Environment callable service CEEGTST, Micro Focus has CBL_ALLOC_MEM, some compilers and environments support directly callin C functions so you could use malloc() there.



            COBOL (and C, et. al.) compilers do not enforce type-safety for passed parameters. At run time the Linkage Section variables in the called program are mapped to the addresses of the variables on the CALL statement in the calling program.



            As noted in a comment by @SimonSobisch, there has been some work done in the COBOL standard to enforce type-safety on CALLs via prototypes. Not all COBOL compilers support this.



            If you have a copybook in which calling parameters for a subroutine are defines, and use the same copybook in the Working-Storage section of the calling program and the Linkage Section of the program it calls, then changes to the definition of the parameters need only be done in one place (the copybook), and hopefully your source code management system will force recompilation of both the caller and the called program, ensuring there is no parameter mismatch.







            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited Mar 25 at 19:34

























            answered Mar 25 at 14:14









            cschneidcschneid

            7,5591 gold badge20 silver badges28 bronze badges




            7,5591 gold badge20 silver badges28 bronze badges







            • 1





              "COBOL compilers do not enforce type-safety for passed parameters." COBOL 2002 has program-prototypes that do exactly this, doesn't it? And it specifies checks that (if the compiler supports it) will be done at run-time to verify the parameters match by type and size (and by actually being passed). I suggest to update your good answer that gives the main point of WS/LS->PROCEDURE DIVISION USING, along with ways to allocate storage (No idea of GETMAIN but a CALL to C$MALLOC, CBL_..., and the standard ALLOCATE statement should work).

              – Simon Sobisch
              Mar 25 at 16:20












            • 1





              "COBOL compilers do not enforce type-safety for passed parameters." COBOL 2002 has program-prototypes that do exactly this, doesn't it? And it specifies checks that (if the compiler supports it) will be done at run-time to verify the parameters match by type and size (and by actually being passed). I suggest to update your good answer that gives the main point of WS/LS->PROCEDURE DIVISION USING, along with ways to allocate storage (No idea of GETMAIN but a CALL to C$MALLOC, CBL_..., and the standard ALLOCATE statement should work).

              – Simon Sobisch
              Mar 25 at 16:20







            1




            1





            "COBOL compilers do not enforce type-safety for passed parameters." COBOL 2002 has program-prototypes that do exactly this, doesn't it? And it specifies checks that (if the compiler supports it) will be done at run-time to verify the parameters match by type and size (and by actually being passed). I suggest to update your good answer that gives the main point of WS/LS->PROCEDURE DIVISION USING, along with ways to allocate storage (No idea of GETMAIN but a CALL to C$MALLOC, CBL_..., and the standard ALLOCATE statement should work).

            – Simon Sobisch
            Mar 25 at 16:20





            "COBOL compilers do not enforce type-safety for passed parameters." COBOL 2002 has program-prototypes that do exactly this, doesn't it? And it specifies checks that (if the compiler supports it) will be done at run-time to verify the parameters match by type and size (and by actually being passed). I suggest to update your good answer that gives the main point of WS/LS->PROCEDURE DIVISION USING, along with ways to allocate storage (No idea of GETMAIN but a CALL to C$MALLOC, CBL_..., and the standard ALLOCATE statement should work).

            – Simon Sobisch
            Mar 25 at 16:20













            3














            The storage will not be allocated when running the program. You will need to gain addressability to it, either by having a program call the sub-program with the copybook as one of the parameters AND specifying the copybook in the PROCEDURE DIVISION USING...



            Alternatively you can use a GETMAIN command (like EXEC CICS GETMAIN, if you are in CICS) to allocate some storage, and then set the address of the copybook to the resulting pointer.



            If you try to assign values to the copybook without doing either, you will get abends, probably S0C4 (Protection Exception).






            share|improve this answer



























              3














              The storage will not be allocated when running the program. You will need to gain addressability to it, either by having a program call the sub-program with the copybook as one of the parameters AND specifying the copybook in the PROCEDURE DIVISION USING...



              Alternatively you can use a GETMAIN command (like EXEC CICS GETMAIN, if you are in CICS) to allocate some storage, and then set the address of the copybook to the resulting pointer.



              If you try to assign values to the copybook without doing either, you will get abends, probably S0C4 (Protection Exception).






              share|improve this answer

























                3












                3








                3







                The storage will not be allocated when running the program. You will need to gain addressability to it, either by having a program call the sub-program with the copybook as one of the parameters AND specifying the copybook in the PROCEDURE DIVISION USING...



                Alternatively you can use a GETMAIN command (like EXEC CICS GETMAIN, if you are in CICS) to allocate some storage, and then set the address of the copybook to the resulting pointer.



                If you try to assign values to the copybook without doing either, you will get abends, probably S0C4 (Protection Exception).






                share|improve this answer













                The storage will not be allocated when running the program. You will need to gain addressability to it, either by having a program call the sub-program with the copybook as one of the parameters AND specifying the copybook in the PROCEDURE DIVISION USING...



                Alternatively you can use a GETMAIN command (like EXEC CICS GETMAIN, if you are in CICS) to allocate some storage, and then set the address of the copybook to the resulting pointer.



                If you try to assign values to the copybook without doing either, you will get abends, probably S0C4 (Protection Exception).







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Mar 25 at 13:54









                JamesJames

                3012 silver badges9 bronze badges




                3012 silver badges9 bronze badges



























                    draft saved

                    draft discarded
















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55338967%2fwhat-happens-if-you-add-a-copybook-to-linkage-section-instead-of-adding-it-to-a%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

                    Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

                    Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript