Google
オフコン練習帳内を検索
インターネット全体を検索

NECオフコン関連
オフコン一般
情報
トップ  >  ジョブ間同期・通信マクロ実行

ジョブ間同期・通信マクロ実行

信号通信(資源管理用)サンプルプログラム

サンプルプログラム

信号通信の資源管理用のサンプルプログラムです。
本当は資源占有が必要な処理を組み込むことができればよかったのですが、適当な処理が思いつかなかったので、資源占有しなければならない処理の代わりとしてインターバルタイマで10秒程度待ち合わせをするようにしています。
同じように資源占有する必要の無い処理の代わりにもインターバルタイマで5秒程度待ち合わせをするようにしています。

000010***********************************************                   
000020**   IJCC同期サンプルプログラム          **                   
000030***********************************************                   
000040 IDENTIFICATION      DIVISION.                                    
000050 PROGRAM-ID.         SAMIJC.                                      
000060 ENVIRONMENT         DIVISION.                                    
000070 DATA                DIVISION.                                    
000080 WORKING-STORAGE     SECTION.                                     
000090***********************************************                   
000100**            IJCC DATA AREA                 **                   
000110***********************************************                   
000120**   共通                                                         
000130 01  IJCCA01         PIC X(128).                                  
000140 01  IJCCA02.                                                     
000150     02 IJCCA02-1    PIC X(02).                                   
000160     02 IJCCA02-2    PIC X(02).                                   
000170 01  IJCCA03.                                                     
000180     02 IJCCA03-1    PIC X(01).                                   
000190     02 IJCCA03-2    PIC X(02).                                   
000200     02 IJCCA03-3    PIC X(02).                                   
000210     02 IJCCA03-4    PIC X(20).                                   
000220**   生成                                                         
000230 01  IJCCA14.                                                     
000240     02 IJCCA14-1    PIC X(01).                                   
000250     02 IJCCA14-2    PIC X(01).                                   
000260     02 IJCCA14-3    PIC X(01).                                   
000270     02 FILLER       PIC X(01).                                   
000280 01  IJCCA15.                                                     
000290     02 IJCCA15-1    PIC 9(05).                                   
000300     02 IJCCA15-2    PIC 9(05).                                   
000310**   使用開始宣言                                                 
000320 01  IJCCA24         PIC X(01).                                   
000330 01  IJCCA25         PIC X(01).                                   
000340 01  IJCCA26         PIC X(01).                                   
000350 01  IJCCA27         PIC X(01).                                   
000360**   信号受信                                                     
000370 01  IJCCA34         PIC X(01).                                   
000380**   信号送信                                                     
000390 01  IJCCA44.                                                     
000400     02 IJCCA44-1    PIC X(01).                                   
000410     02 IJCCA44-2    PIC X(01).                                   
000420**   使用終了宣言(共通部分のみ)                                 
000430**   解放                                                         
000440 01  IJCCA64         PIC X(01).                                   
000450 01  IJCCA65         PIC X(01).                                   
000460*********************                                             
000470**   TIMER         **                                             
000480*********************                                             
000490 01  A.                                                           
000500     02 SEC PIC 9(03).                                            
000510     02 FILLER PIC 9 VALUE ZERO.                                  
000520 01  A-R REDEFINES A PIC 9(4).                                    
000530 PROCEDURE           DIVISION.                                    
000540***************************************************               
000550**             主処理                        **               
000560***************************************************               
000570 MPRG.                                                            
000580***  IJCC生成  ***                                            
000590     PERFORM IJCCCR THRU IJCCCRE.                                 
000600***  IJCC使用開始宣言  ***                                    
000610     PERFORM IJCCAT THRU IJCCATE.                                 
000620*-------資源占有しなくても良い処理の代替------------              
000630     PERFORM 10 TIMES                                             
000640     MOVE 5 TO SEC                                                
000650     CALL "CBLTIMER" USING A-R                                    
000660*---------------------------------------------------              
000670***  信号受信  ***                                                
000680     PERFORM IJCCRS THRU IJCCRSE                                  
000690***                                                               
000700***  ここは資源占有中  ***                                        
000710***                                                               
000720*---------資源占有が必要な処理の代替----------------              
000730     MOVE 10 TO SEC                                               
000740     CALL "CBLTIMER" USING A-R                                    
000750*---------------------------------------------------              
000760***  信号送信  ***                                                
000770     PERFORM IJCCSS THRU IJCCSSE                                  
000780*---------------------------------------------------              
000790     END-PERFORM                                                  
000800***  IJCC使用終了宣言  **                                     
000810     PERFORM IJCCDE THRU IJCCDEE                                  
000820***  IJCC解放  ***                                            
000830     PERFORM IJCCRL THRU IJCCRLE.                                 
000840 MPRGE.                                                           
000850     STOP RUN.                                                    
000860***************************************************               
000870**         IJCC各処理                       **               
000880***************************************************               
000890***  IJCC生成  ***                                            
000900 IJCCCR.                                                          
000910     INITIALIZE IJCCA01 IJCCA02 IJCCA03 IJCCA14 IJCCA15           
000920     MOVE "A" TO IJCCA03-1                                        
000930     MOVE "  " TO IJCCA03-2                                       
000940     MOVE "AA" TO IJCCA03-3                                       
000950     MOVE "TEST-IJCCA" TO IJCCA03-4                               
000960     MOVE "S" TO IJCCA14-1                                        
000970     MOVE "R" TO IJCCA14-2                                        
000980     MOVE "J" TO IJCCA14-3                                        
000990     MOVE 1 TO IJCCA15-1                                          
001000     MOVE 0 TO IJCCA15-2                                          
001010     CALL "SYSIJCCR" USING IJCCA01 IJCCA02 IJCCA03                
001020                                           IJCCA14 IJCCA15.       
001030 IJCCCRE.                                                         
001040     EXIT.                                                        
001050***  IJCC使用開始宣言  ***                                    
001060 IJCCAT.                                                          
001070     INITIALIZE IJCCA24 IJCCA25 IJCCA26 IJCCA27                   
001080     MOVE "T" TO IJCCA24                                          
001090     MOVE "S" TO IJCCA25                                          
001100     MOVE "S" TO IJCCA26                                          
001110     MOVE "T" TO IJCCA27                                          
001120     CALL "SYSIJCAT" USING IJCCA01 IJCCA02 IJCCA03 IJCCA24        
001130                                      IJCCA25 IJCCA26 IJCCA27.    
001140 IJCCATE.                                                         
001150     EXIT.                                                        
001160***  信号受信  ***                                                
001170 IJCCRS.                                                          
001180     INITIALIZE IJCCA34                                           
001190     MOVE "W" TO IJCCA34                                          
001200     CALL "SYSIJCRS" USING IJCCA01 IJCCA02 IJCCA03 IJCCA34.       
001210 IJCCRSE.                                                         
001220     EXIT.                                                        
001230 IJCCSS.                                                          
001240     INITIALIZE IJCCA44                                           
001250     MOVE "N" TO IJCCA44-1                                        
001260     MOVE "T" TO IJCCA44-2                                        
001270     CALL "SYSIJCSS" USING IJCCA01 IJCCA02 IJCCA03 IJCCA44.       
001280 IJCCSSE.                                                         
001290     EXIT.                                                        
001300 IJCCDE.                                                          
001310     CALL "SYSIJCDE" USING IJCCA01 IJCCA02 IJCCA03.               
001320 IJCCDEE.                                                         
001330     EXIT.                                                        
001340***  IJCC解放  ***                                            
001350 IJCCRL.                                                          
001360     INITIALIZE IJCCA64 IJCCA65                                   
001370     MOVE "T" TO IJCCA64                                          
001380     MOVE "T" TO IJCCA65                                          
001390     CALL "SYSIJCRL" USING IJCCA01 IJCCA02 IJCCA03                
001400                                   IJCCA64 IJCCA65.               
001410 IJCCRLE.                                                         
001420     EXIT.                                                        

サンプルプログラムなので、異常処理関係は一切行っていません。実際はそれらを組み込むことになるでしょう。

IJCCの生成は1回で良いので、このサンプルプログラムを複数起動すると2個目以降サンプルプログラムでエラーになるはずです。しかしサンプルプログラムではエラーを無視してしまうので、たまたま2個目以降も動きます。

サンプルプログラムは5秒の待ち合わせ+10秒の待ち合わせを10回行う仕組みになっています。
サンプルプログラムを1個実行すると、だいたい150秒ぐらいで終わるはずです。
サンプルプログラムを2個同時に実行すると、何秒かかるか試してみてください。300秒でしょうか、それとも150秒でしょうか?
3個動かすとどうでしょうか?


サンプルプログラムを1個、2個同時に起動したときのタイムチャート(3個同時ではどうなる?)