Thread

Bom dia, antes eu utilizava o Cobol isCobol e lá temos a instrução "perform thread" essa instrução faz com que desvie o fluxo do programa para uma rotina e fique executando outra ao mesmo tempo como fazer com Visual Cobol, obrigado.

Good day, before I used the Cobol isCOBOL and there we have the statement " perform thread" this statement causes divert the program flow to a routine and stay running another at the same time how to make Visual Cobol , thank you.

Parents
  • Verified Answer

    This was just a simple example of one way that you can use the .NET Threading syntax which happened to use a static method. If you need to use an instance method with threading you can do this as follows:

          $set ilusing"System"
          $set ilusing"System.Threading"
           program-id. Program1 as "testthreading.Program1".
    
           data division.
           working-storage section.
           01 any-key pic x.
           procedure division.
               declare thread1 as type Thread
               declare myobject as type ThreadWork = new ThreadWork
               declare threadDelegate as type ThreadStart = new ThreadStart(myobject::DoWork)
               set thread1 to new Thread(threadDelegate)
               invoke thread1::Start
               perform varying i as binary-long from 0 by 1 until i > 3
                  display "In Main"
                  invoke type Thread::Sleep(100)
               end-perform
               accept any-key
               goback.
               
           end program Program1.
           class-id ThreadWork.
           working-storage section.
           
           method-id DoWork public.
           procedure division.
               perform varying i as binary-long from 0 by 1 until i > 3
                  display "Working Thread..."
                  invoke type Thread::Sleep(100)
               end-perform
              
               goback.
           end method.
           
           end class.
          

    If you do wish to use a static method that does file handling then the file itself should be defined as static or you will get errors.

    Example:


           class-id ThreadWork.
              select optional test-file assign to "testfile.dat"
                               organization is line sequential
                               file status is file-status.
           file section.
           fd test-file static.
           01 test-record  pic x(20).
           working-storage section.
           01 file-status pic x(2) static.
           method-id DoWork static.
           procedure division.
               open extend test-file
               display "open = " file-status
               perform varying i as binary-long from 0 by 1 until i > 3
                  display "Working Thread..."
                  move i to test-record
                  write test-record
                  invoke type Thread::Sleep(100)
               end-perform
               close test-file
               goback.
           end method.
           
           end class.
    
Reply
  • Verified Answer

    This was just a simple example of one way that you can use the .NET Threading syntax which happened to use a static method. If you need to use an instance method with threading you can do this as follows:

          $set ilusing"System"
          $set ilusing"System.Threading"
           program-id. Program1 as "testthreading.Program1".
    
           data division.
           working-storage section.
           01 any-key pic x.
           procedure division.
               declare thread1 as type Thread
               declare myobject as type ThreadWork = new ThreadWork
               declare threadDelegate as type ThreadStart = new ThreadStart(myobject::DoWork)
               set thread1 to new Thread(threadDelegate)
               invoke thread1::Start
               perform varying i as binary-long from 0 by 1 until i > 3
                  display "In Main"
                  invoke type Thread::Sleep(100)
               end-perform
               accept any-key
               goback.
               
           end program Program1.
           class-id ThreadWork.
           working-storage section.
           
           method-id DoWork public.
           procedure division.
               perform varying i as binary-long from 0 by 1 until i > 3
                  display "Working Thread..."
                  invoke type Thread::Sleep(100)
               end-perform
              
               goback.
           end method.
           
           end class.
          

    If you do wish to use a static method that does file handling then the file itself should be defined as static or you will get errors.

    Example:


           class-id ThreadWork.
              select optional test-file assign to "testfile.dat"
                               organization is line sequential
                               file status is file-status.
           file section.
           fd test-file static.
           01 test-record  pic x(20).
           working-storage section.
           01 file-status pic x(2) static.
           method-id DoWork static.
           procedure division.
               open extend test-file
               display "open = " file-status
               perform varying i as binary-long from 0 by 1 until i > 3
                  display "Working Thread..."
                  move i to test-record
                  write test-record
                  invoke type Thread::Sleep(100)
               end-perform
               close test-file
               goback.
           end method.
           
           end class.
    
Children
No Data