2016-04-10 23 views
0

Cobol'da dahili bir girişi çağırmaya çalışıyorum. Arama tamam, ancak, girdikten sonra yanlış şekilde çalıştırılan bazı paragrafların olması sorunu.Bir giriş çağıran etkiyi durdurma

IDENTIFICATION DIVISION. 
    PROGRAM-ID. ENTR1POW. 
    DATA DIVISION. 
    WORKING-STORAGE SECTION. 
    LOCAL-STORAGE SECTION. 
    PROCEDURE DIVISION. 
    display "BEFORE CALL NOM_PROC1=======================" 
    PERFORM NOM_PROC1 THRU E--NOM_PROC1 
    display "AFTER CALL NOM_PROC1=======================" 
    display "CALL NOM_PROC2=============================" 
    PERFORM NOM_PROC2 THRU E--NOM_PROC2 
    display "CALL ENTRY1============================" 
    CALL 'ENTRY1' 
    GOBACK. 

    NOM_PROC1. 
     display "PGM ENTR1POW: BEGIN NOM_PROC1" 
     display "PGM ENTR1POW: END NOM_PROC1" 
     CONTINUE. 
    E--NOM_PROC1. 
     EXIT. 

    NOM_PROC2 SECTION. 
     display "PGM ENTR1POW: BEGIN NOM_PROC2" 

     ENTRY 'ENTRY1' 
     display "===========BEGIN ENTRY ENTRY1" 
     display "===========END ENTRY ENTRY1" 

     ENTRY 'ENTRY2' 
     display "===========BEGIN ENTRY ENTRY2" 
     display "===========END ENTRY ENTRY2" 

     ENTRY 'ENTRY3' 
     display "===========BEGIN ENTRY ENTRY3" 
     display "===========END ENTRY ENTRY3" 

     display "PGM ENTR1POW: END NOM_PROC2" 
     CONTINUE. 
    E--NOM_PROC2. 
     EXIT. 

    NOM_PROC3 SECTION. 
     display "PGM ENTR1POW: BEGIN NOM_PROC3" 
     display "PGM ENTR1POW: END NOM_PROC3" 
     CONTINUE. 
    E--NOM_PROC3 SECTION. 
     EXIT. 

    NOM_PROC4. 
     display "PGM ENTR1POW: BEGIN NOM_PROC4" 
     display "PGM ENTR1POW: END NOM_PROC4" 
     CONTINUE. 
    E--NOM_PROC4. 
     EXIT. 

i elde çıkışı:

BEFORE CALL NOM_PROC1======================= 
PGM ENTR1POW: BEGIN NOM_PROC1 
PGM ENTR1POW: END NOM_PROC1 
AFTER CALL NOM_PROC1======================= 
CALL NOM_PROC2============================= 
PGM ENTR1POW: BEGIN NOM_PROC2 
===========BEGIN ENTRY ENTRY1 
===========END ENTRY ENTRY1 
===========BEGIN ENTRY ENTRY2 
===========END ENTRY ENTRY2 
===========BEGIN ENTRY ENTRY3 
===========END ENTRY ENTRY3 
PGM ENTR1POW: END NOM_PROC2 
CALL ENTRY1============================ 
===========BEGIN ENTRY ENTRY1 
===========END ENTRY ENTRY1 
===========BEGIN ENTRY ENTRY2 
===========END ENTRY ENTRY2 
===========BEGIN ENTRY ENTRY3 
===========END ENTRY ENTRY3 
PGM ENTR1POW: END NOM_PROC2 
PGM ENTR1POW: BEGIN NOM_PROC3 
PGM ENTR1POW: END NOM_PROC3 
PGM ENTR1POW: BEGIN NOM_PROC4 
PGM ENTR1POW: END NOM_PROC4 

paragraflarına çağrı NOM_PROC3 ve NOM_PROC4 gerçekleşmesi gerektiğini düşünüyorum

İşte benim programıdır.

+0

NOM_PROC2 paragrafını programın sonuna taşıdıysam, sorunum çözülecektir, ancak bunu yapmak istiyorum. Sorunumu çözmenin başka bir yolu var mı? Cevabınız için teşekkür ederiz. –

+0

Hangi derleyiciyi kullanıyorsunuz? ENTRY, ARAMAYAN programda olması amaçlanmamıştır, başka bir programda olması beklenir. Ne yapmaya çalışıyorsun? @cschneid'in dediği gibi, "içerilmiş" veya "iç içe geçmiş" bir program muhtemelen sizin istediğinizi daha fazladır. Bir PERFORM bir ÇAĞRI olduğunu düşünüyorsanız kendinizi de karıştırırsınız. Öyle değil, mesajlar yanlış. –

cevap

2

İlk olarak, ENTRY'u kullanmadan önce sert düşünün. 30 yıllık kodlamada, bir zamanlar, 1970'lerin başında yazılmış bir programla karşılaştım ve orada hiçbir işe yaramadı. ENTRY için bir gereksinim gördüğünüzde iç içe geçmiş programları düşünün. @BrianTiffin, yorumlarda ana çerçeve olmayan ortamlarda ENTRY için bir durum oluşturur.

ENTRY bildirimi, kodunuzda alternatif bir giriş noktası oluşturur. PERFORM gibi değil. Ana giriş noktasından döndüğünüz gibi, bu alternatif giriş noktasından açıkça geri dönmeniz gerekir. Bu genellikle bir GOBACK bildirimi ile yapılır.

Programınız gerektiği gibi davranıyor. ENTRY 'ENTRY1' ifadesinden sonra GOBACK kodunuz yoktur, bu nedenle CALL 'ENTRY1' kodunuzun çalıştırılması, programın sonuna gelinceye kadar devam eder.

+0

Girdileri kullanmamın nedeni, girdiler içeren bir PL1 programlarını taşımaya çalıştığım ve bu yönü benim geçiş yaptığım programlarda korumaya çalışıyorum. –

+0

Son olarak, girişleri içeren paragrafı bir alt programa ekliyorum ve benim için çalışıyor. –

+0

Sadece bir saniye eklemek istiyorum. GUI programlama için 'ENTRY' güçlü bir şeydir. Geri aramaların çalışma depolarında durum bilgilerine erişmesini sağlar. GTK + düğme tıklama işleyicileri ve X11 olayları gibi şeyler için oldukça kullanışlı bir şekilde gelir. –

İlgili konular