home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.os.vms      DEC's VAX* line of computers & VMS.      264,096 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 262,344 of 264,096   
   =?UTF-8?Q?Arne_Vajh=C3=B8j?= to All   
   Re: Cobol   
   04 Feb 25 21:03:10   
   
   From: arne@vajhoej.dk   
      
   On 2/2/2025 9:55 PM, Arne Vajhøj wrote:   
   > On 2/2/2025 8:37 PM, Arne Vajhøj wrote:   
   >> On 2/2/2025 8:30 PM, Arne Vajhøj wrote:   
   >>  > On 1/14/2025 11:06 AM, Arne Vajhøj wrote:   
   >>  >> On 1/13/2025 9:11 PM, John Reagan wrote:   
   >>  >>> COBOL paragraphs behave like C.  First routine/PARAGRAPH gets a WEAK   
   >>  >>> transfer address.  Linker finds the first one.   
   >>  >>   
   >>  >> I have many prejudices about COBOL developers.   
   >>  >>   
   >>  >> One of them is that they don't create shareable images.   
   >>  >>   
   >>  >> :-)   
   >>  >   
   >>  > But let us say that someone wanted to create a shareable   
   >>  > image in Cobol.   
   >>  >   
   >>  > A typical Cobol program just have all the paragraphs that   
   >>  > get performed and they share state. Simple.   
   >>  >   
   >>  > To make them entry points with arguments in a shareable image,   
   >>  > then I assume one need to make them programs with linkage section   
   >>  > and procedure division using.   
   >>  >   
   >>  > Normal variables are just passed as arguments. Seems entirely   
   >>  > unproblematic to me.   
   >>  >   
   >>  > But how does one share open files between modules?   
   >>  >   
   >>  > Fortran and Basic numeric identifiers work across modules.   
   >>  > Pascal can share via inherit. C can use global variables   
   >>  > or just pass as argument.   
   >>  >   
   >>  > But how does one do that in Cobol?   
   >>  >   
   >>  > Can one mark an fd as global or can one pass a fd as argument?   
   >>   
   >> Did some reading.   
   >>   
   >> IS GLOBAL in one module and IS EXTERNAL in the other modules?   
   >   
   > And what to put in SELECT if FD is EXTERNAL?   
      
   Just EXTERNAL everywhere and no GLOBAL and nothing on SELECT   
   seems to do the trick.   
      
   identification division.   
   program-id.m2.   
   *   
   environment division.   
   input-output section.   
   file-control.   
        select in-file assign to "a.dat" organization is sequential.   
        select out-file assign to "c.dat" organization is sequential.   
   *   
   data division.   
   file section.   
   fd in-file external record is varying in size depending on line-len.   
   01 in-record.   
        03 in-line pic x(100).   
   fd out-file external record is varying in size from 0 to 100 depending   
   on line-len.   
   01 out-record.   
        03 out-line pic x(100).   
   working-storage section.   
   01 line-len pic 9(8) comp external.   
   *   
   procedure division.   
   main-paragraph.   
        open input in-file   
        open output out-file   
        call "docopy" end-call   
        close in-file   
        close out-file   
        stop run.   
   end program m2.   
   *   
   identification division.   
   program-id. docopy.   
   *   
   environment division.   
   input-output section.   
   file-control.   
        select in-file assign to "a.dat" organization is sequential.   
        select out-file assign to "c.dat" organization is sequential.   
   *   
   data division.   
   file section.   
   fd in-file external record is varying in size depending on line-len.   
   01 in-record.   
        03 in-line pic x(100).   
   fd out-file external record is varying in size from 0 to 100 depending   
   on line-len.   
   01 out-record.   
        03 out-line pic x(100).   
   working-storage section.   
   01 line-len pic 9(8) comp external.   
   01 eof-flag pic x.   
   *   
   procedure division.   
   main-paragraph.   
        move "N" to eof-flag   
        perform until eof-flag = "Y"   
            read in-file   
                at end   
                    move "Y" to eof-flag   
                not at end   
                    move in-line(1:line-len) to out-line   
                    write out-record   
            end-read   
        end-perform.   
   end program docopy.   
      
   Arne   
      
   --- SoupGate-DOS v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca