CICS Application Programming Fundamentals 第8-6章

  1. The Sign-on Process

TRANS(HANC), PROG(HANCON), MAP(HANMAP)

註: 以下 MAP 和 PROG 內容並不全,由於原視頻跳過了

Cobol 复制代码
000001 HANMAP  DFHMSD MODE=INOUT,                                             X        
000002                CTRL=(FREEKB,FRSET),                                    X        
000003                CURSLOC=YES,                                            X        
000004                DSATTS=COLOR,                                           X        
000005                MAPATTS=(COLOR,HILIGHT),                                X        
000006                STORAGE=AUTO,                                           X        
000007                LANG=COBOL,                                             X        
000008                TIOAPFX=YES,                                            X        
000009                TYPE=&SYSPARM                                                    
000010 HANM    DFHMDI SIZE=(24,80),LINE=1,COLUMN=1                                     
000011         DFHMDF POS=(1,27),LENGTH=24,ATTRB=(ASKIP,NORM),                X        
000012                INITIAL='Demo of HANDLE CONDITION'                               
000013         DFHMDF POS=(3,1),LENGTH=73,ATTRB=(ASKIP,NORM),                 X        
000014                INITIAL='Program HANCON issues an EXEC CICS READ FILE coX        
000015                mmand for file EREGUSR'                                          
000016         DFHMDF POS=(4,1),LENGTH=45,ATTRB=(ASKIP,NORM),                 X        
000017                INITIAL='with the following HANDLE commands in effect:'          
000018         DFHMDF POS=(6,1),LENGTH=26,ATTRB=(ASKIP,NORM),                 X        
000019                INITIAL='EXEC CICS HANDLE CONDITION'                             
000020         DFHMDF POS=(7,5),LENGTH=31,ATTRB=(ASKIP,NORM),                 X        
000021                INITIAL='FILENOTFOUND(8100-FileNotFound)'                        
000022         DFHMDF POS=(16,1),LENGTH=70,ATTRB=(ASKIP,NORM),                X        
000023                INITIAL='Change the parameters below to elicit one of thX        
000024                e exception conditions.'                                         
000025         DFHMDF POS=(18,1),LENGTH=20,ATTRB=(ASKIP,NORM),                X        
000026                INITIAL='EXEC CICS READ FILE('                                   
000027 FILENM  DFHMDF POS=(18,22),LENGTH=8,ATTRB=(UNPROT,BRT,IC),             X        
000028                HILIGHT=UNDERLINE                                                
000029         DFHMDF POS=(18,31),LENGTH=1,ATTRB=(ASKIP,NORM),                X        
000030                INITIAL=')'                                                      
000031         DFHMDF POS=(19,5),LENGTH=7,ATTRB=(ASKIP,NORM),                 X        
000032                INITIAL='RIDFLD('                                                
000033 RIDVAL  DFHMDF POS=(19,13),LENGTH=8,ATTRB=(UNPROT,BRT),                X        
000034                HILIGHT=UNDERLINE                                                
000035         DFHMDF POS=(19,22),LENGTH=1,ATTRB=(ASKIP,NORM),                X        
000036                INITIAL=')'                                                      
000037         DFHMDF POS=(20,5),LENGTH=7,ATTRB=(ASKIP,NORM),                 X        
000038                INITIAL='LENGTH('                                                
000039 LENVAL  DFHMDF POS=(20,13),LENGTH=4,ATTRB=(UNPROT,BRT),                X        
000040                HILIGHT=UNDERLINE                                                
000041         DFHMDF POS=(20,18),LENGTH=1,ATTRB=(ASKIP,NORM),                X        
000042                INITIAL=')'                                                      
000043         DFHMDF POS=(21,5),LENGTH=10,ATTRB=(ASKIP,NORM),                X        
000044                INITIAL='KEYLENGTH('                                             
000045 KEYLEN  DFHMDF POS=(21,16),LENGTH=4,ATTRB=(UNPROT,BRT),                X        
000046                HILIGHT=UNDERLINE                                                
000047         DFHMDF POS=(21,21),LENGTH=1,ATTRB=(ASKIP,NORM),                X        
000048                INITIAL=')'                                                      
000049         DFHMDF POS=(23,1),LENGTH=7,ATTRB=(ASKIP,NORM),                 X        
000050                INITIAL='Result:'                                                
000051 RESULT  DFHMDF POS=(23,9),LENGTH=50,ATTRB=(ASKIP,BRT)                           
000052         DFHMSD TYPE=FINAL                                                       
000053         END                                                                     
****** ******************************** Bottom of Data ********************************
Cobol 复制代码
****** ********************************* Top of Data **********************************
000001        Identification Division.                                                 
000002        Program-Id. HANCON.                                                      
000003        Data Division.                                                           
000004        Working-Storage Section.                                                 
000005            copy DFHAID.                                                         
000006            copy HANMAP.                                                         
000007        01  Parm-Variables.                                                      
000008            05  Parm-Filename           pic x(08).                               
000009            05  Parm-Length             pic s9(04) binary.                       
000010            05  Parm-Keylength          pic s9(04) binary.                       
000011            05  Parm-Ridval             pic x(08).                               
000012        01  Default-Values.                                                      
000013            05  Default-Filename        pic x(08) value 'EREGUSR'.               
000014            05  Default-Length          pic s9(04) binary value +100.            
000015            05  Default-Keylength       pic s9(04) binary value +8.              
000016            05  Default-Ridval          pic x(08) value 'TESTUSR1'.              
000017        01  Record-Area                 pic x(100).                              
000018        01  Result-to-Display           pic x(50).                               
000019        01  Container-Data.                                                      
000020            05  Previous-Filename       pic x(08).                               
000021            05  Previous-Length         pic s9(04).                              
000022            05  Previous-Keylength      pic s9(04).                              
000023            05  Previous-Ridval         pic x(08).                               
000024        01  BMS-Values.                                                          
000025            05  Map-Name                pic x(08) value 'HANM'.                  
000026            05  Mapset-Name             pic x(08) value 'HANMAP'.                
000027        01  CICS-Response               pic s9(09) binary.                       
000028        01  Container-Name              pic x(10) value 'CNHANCON'.              
000029        01  Channel-Name                pic x(10) value 'CHHANCON'.              
000030        Procedure Division.                                                      
000031            EXEC CICS GET CONTAINER(Container-Name)                              
000032                CHANNEL(Channel-Name)                                            
000033                INTO(Container-Data)                                             
000034                RESP(CICS-Response)                                              
000035            END-EXEC                                                             
000036            if CICS-Response equal DFHRESP(CHANNELERR)                           
000037                perform 0000-First-Time                                          
000038            else                                                                 
000039                perform 1000-Process-Input                                       
000040            end-if                                                               
000041            .                                                                    
000042        0000-First-Time.                                                         
000043            perform 0100-Clear-Map-Data                                          
000044            perform 0200-Initialize-Local-Data                                   
000045            perform 9000-Display-Output                                          
000046            .                                                                    
000047        0100-Clear-Map-Data.                                                     
000048            move low-values to HANMO                                             
000049            .                                                                    
000050        0200-Initialize-Local-Data.                                              
000051            move Default-Values to Parm-Variables.                               
000052            initialize Container-Data                                            
000053            .                                                                    
000054        1000-Process-Input.                                                      
000055            perform 1100-Receive-Terminal-Input                                  
000056            perform 1200-Handle-Condition-Commands                               
000057            perform 1300-Execute-Read-Command                                    
000058            perform 9000-Display-Output                                          
000059            .                                                                    
000060        1100-Receive-Terminal-Input.                                             
000061            EXEC CICS RECEIVE                                                    
000062                MAP(Map-Name)                                                    
000063                MAPSET(Mapset-Name)                                              
000064                INTO(HANMI)                                                      
000065            END-EXEC                                                             
000066            evaluate EIBAID                                                      
000067                when DFHPF3                                                      
000068                when DFHPF12                                                     
000069                    perform 9900-End                                             
000070                when other                                                       
000071                    continue                                                     
000072            end-evaluate                                                         
000073            if FILENMI > spaces                                                  
000074                move FILENMI to Parm-Filename                                    
000075            else                                                                 
000076                if Previous-Filename > spaces                                    
000077                    move Previous-Filename to Parm-Filename                      
000078                else                                                             
000079                    move Default-Filename to Parm-Filename                       
000080                end-if                                                           
000081            end-if                                                               
000082            if LENVALI > spaces                                                  
000083                move LENVALI to Parm-Length                                      
000084            else                                                                 
000085                if Previous-Length > zeros                                       
000086                    move Previous-Length to Parm-Length                          
000087                else                                                             
000088                    move Default-Length to Parm-Length                           
000089                end-if                                                           
000090            end-if                                                               
000091            if KEYLENI > zeros                                                   
000092                move KEYLENI to Parm-Keylength                                   
000093            else                                                                 
000094                if Previous-Keylength > zeros                                    
000095                    move Previous-Keylength to Parm-Keylength                    
000096                else                                                             
000097                    move Default-Keylength to Parm-Keylength                     
000098                end-if                                                           
000099            end-if                                                               
000100            if RIDVALI > spaces                                                  
000101                move RIDVALI to Parm-Ridval                                      
000102            else                                                                 
000103                if Previous-Ridval > spaces                                      
000104                    move Previous-Ridval to Parm-Ridval                          
000105                else                                                             
000106                    move Default-Ridval to Parm-Ridval                           
000107                end-if                                                           
000108            end-if                                                               
000109            .                                                                    
000110        1200-Handle-Condition-Commands.                                          
000111            EXEC CICS HANDLE CONDITION                                           
000112                FILENOTFOUND(8100-FileNotFound)                                  
000113                NOTFND(8200-RecordNotFound)                                      
000114                INVREQ(8300-InvalidRequest)                                      
000115                ERROR(8900-UnexpectedError)                                      
000116            END-EXEC                                                             
000117            EXEC CICS IGNORE CONDITION                                           
000118                LENGERR                                                          
000119            END-EXEC                                                             
000120            .                                                                    
000121        1300-Execute-Read-Command.                                               
000122            move spaces to RESULTO                                               
000123            EXEC CICS READ                                                       
000124                FILE(Parm-Filename)                                              
000125                RIDFLD(Parm-Ridval)                                              
000126                INTO(Record-Area)                                                
000127                LENGTH(Parm-Length)                                              
000128                KEYLENGTH(Parm-Keylength)                                        
000129            END-EXEC                                                             
000130            move 'Successful read' to Result-to-Display                          
000131            .                                                                    
000132        8100-FileNotFound.                                                       
000133            move '8100-FileNotFound'                                             
000134                to Result-to-Display                                             
000135            perform 9000-Display-Output                                          
000136            .                                                                    
000137        8200-RecordNotFound.                                                     
000138            move '8200-RecordNotFound'                                           
000139                to Result-to-Display                                             
000140            perform 9000-Display-Output                                          
000141            .                                                                    
000142        8300-InvalidRequest.                                                     
000143            move '8300-InvalidRequest'                                           
000144                to Result-to-Display                                             
000145            perform 9000-Display-Output                                          
000146            .                                                                    
000147        8900-UnexpectedError.                                                    
000148            move '8900-UnexpectedError'                                          
000149                to Result-to-Display                                             
000150            perform 9000-Display-Output                                          
000151            .                                                                    
000152        9000-Display-Output.                                                     
000153            move Parm-Filename to FILENMO Previous-Filename                      
000154            EXEC CICS SEND                                                       
000155                MAP(Map-Name)                                                    
000156                MAPSET(Mapset-Name)                                              
000157                FROM(HANMO)                                                      
000158                ERASE                                                            
000159            END-EXEC                                                             
000160            perform 9900-End                                                     
000161            .                                                                    
000162        9900-End.                                                                
000163            EXEC CICS PUT CONTAINER(Container-Name)                              
000164                CHANNEL(Channel-Name)                                            
000165                FROM(Container-Data)                                             
000166            END-EXEC                                                             
000167            EXEC CICS RETURN                                                     
000168                TRANSID(EIBTRNID)                                                
000169                CHANNEL(Channel-Name)                                            
000170            END-EXEC                                                             
000171            .                                                                    
****** ******************************** Bottom of Data ********************************