The library routines for controlling threads can be used to implement threads that wait for another thread to terminate and
               then pick up a return value. 
            
            
            You should terminate any thread created using these library routines by one of the following methods: 
            
            
               
               - Exit using STOP RUN 
 
               
               - Exit using CBL_THREAD_EXIT 
 
               
               - Be killed by CBL_THREAD_KILL 
 
               
               - Return from the original entry point 
 
               
            
            
            A thread might not have been created by the thread-control routines. However, such a thread might still be known to the run-time
               system by the thread's use of run-time system services. Such a thread can be accessed via the thread-control library routines;
               it can use: 
            
            
            
               
               - The CBL_THREAD_LIST_START, CBL_THREAD_LIST_NEXT, and CBL_THREAD_LIST_END routines. The thread will also show up in the lists
                  provided by these routines. 
               
 
               
               - The CBL_THREAD_IDDATA_ALLOC and CBL_THREAD_IDDATA_GET routines. 
 
               
               - The CBL_THREAD_SELF routine to get information on itself. 
 
               
               - The CBL_THREAD_SUSPEND and CBL_THREAD_RESUME routine. For managed applications using the .NET Framework, these routines are deprecated. See Multi-threading in the .NET Framework.
 
               
               - The CBL_THREAD_DETACH routine to detach itself while still alive; however this call is effectively a noop. Irrespective of
                  any detach call, the resources of the thread from a program in another language are freed when it finishes using the run-time
                  system and calls cobthreadtidy(). It is illegal for a thread from a program in another language to terminate without first
                  calling cobthreadtidy(). 
               
 
               
            
            
            In a mixed-language environment, any thread known to the run-time system from its use of the run-time system, but not created
               by the run-time system or any of the thread control routines, must do one of the following: 
            
            
            
               
               - Call cobthreadtidy() before terminating. This call informs the run-time system that the thread no longer needs its services and allows it to cleanup
                  its thread-state data. For managed applications using the .NET Framework, this routine is deprecated. See Multi-threading in the .NET Framework.
 
               
               - Call cobtidy() to indicate that the COBOL run-time system will not be needed again in this application run.For managed applications using the .NET Framework, this routine is deprecated. See Multi-threading in the .NET Framework.
 
               
               - Call cobexit() to terminate the run unit. For managed applications using the .NET Framework, this routine is deprecated. See Multi-threading in the .NET Framework.
 
               
               - Not be killed by another thread calling CBL_THREAD_KILL. The user should use the kill mechanism that matches how the thread
                  was created originally. 
               
 
               
               - Not be waited on by another thread calling CBL_THREAD_WAIT. The user should use the wait mechanism that matches how the thread
                  was created originally. 
               
 
               
               - Not exit by using the routine CBL_THREAD_EXIT. The user should use the termination mechanism that matches how the thread was
                  created originally. 
               
 
               
            
            
            An application can check that the run-time system used by a program supports the thread-control routines by calling either
               CBL_GET_OS_INFO or CBL_THREAD_SELF. 
            
            
            Example - Checking Which Run-time System a Program Supports 
            
            
               
     call "CBL_THREAD_SELF" using thread-id
      on exeception
*       no cbl_thread routines support
     end-call
     if  return-code = 1008
*       running in a single-threaded-only rts
     end-if