18 January 2026:


This forum is now archived and is in read-only mode. Please continue discussions on our improved new Sahi Pro Community forum.



Sahi Pro is an enterprise grade test automation platform which can automate web, mobile, API, windows and java based applications and SAP.

funtion too long getting compilation error

AmarAmar Members
edited November -1 in Sahi - Open Source
if i run this function i getting below mention error in sahi

function navigateToDlg($DlgName)
{



switch ($DlgName) {
case "ZulageantragSuchen":
navigateToZulageantragSuchen();
_include("/DlgZulageantragSuchen.sah"); //ok
break;
case "Zulageantrage":
navigateToDlgZulageantrage();
break;
case "ZulageantragBearbeiten":
navigateToDlgZulageantragBearbeiten();
_include("/DlgZulageantragBearbeiten.sah");
break;
case "Vertragsdatenbearbeiten":
navigateToDlgVertragsdatenbearbeiten();
_include("/");
break;
case "VortragsdatenUbersicht":
navigateToDlgVortragsdatenUbersicht();
break;
case "Vortragsdaten":
navigateToDlgVortragsdaten();
_include("/DlgVortragsdaten.sah");
break;
case "Zulageantragneuanlegen":
navigateToDlgZulageantragneuanlegen();
_include("/DlgZulageantragNeuAnlegen.sah");
break;
case "VertragsdatenfurBescheinigungnach":
navigateToDlgVertragsdatenfurBescheinigungnach();
_include("/DlgVertragsdatenFuerBescheinigungNach92EStG.sah");
break;
case "Zulageantragsdaten":
navigateToDlgZulageantragsdaten();
_include("/DlgZulageantragsdaten.sah");
break;
case "Kinderzulage":
navigateToDlgKinderzulage();
_include("/DlgKinderzulage.sah");
break;
case "Vetragsdaten":
navigateToDlgVetragsdaten();
_include("/DlgVertragsdaten.sah");
break;
case "AnbieterwechselHinufuegen":
navigateToDlgAnbieterwechselHinufuegen();
_include("/DlgAnbieterwechselHinufuegen.sah");
break;
case "Zertifizierungsnummerwechselhinzufugen":
navigateToDlgZertifizierungsnummerwechselhinzufugen();
_include("/DlgZertifizierungsnummernwechsel.sah");
break;
case "Vertragszusammenfuhrunghinzufugen":
navigateToDlgVertragszusammenfuhrunghinzufugen();
_include("/DlgVertragszusammenfuehrungHinzufuegen.sah");
break;
case "Vertragsnummerwechselhinzufugen":
navigateToDlgVertragsnummerwechselhinzufugen();
_include("/DlgVertragsnummernwechsel.sah");
break;

case "SchadlicheVerwendungWegfallunbeschrSteuerpflichtbearbeiten":
navigateToDlgSchadlicheVerwendungWegfallunbeschrSteuerpflichtbearbeiten();
_include("/DlgSchaedlicheVerwendungWegfallUnbeschrSteuerpflichtBearbeiten.sah");
break;
case "Leistungsdaten":
navigateToDlgLeistungsdaten();
_include("/DlgLeistungsdaten.sah");
break;
case "Einnahmehinzufugen":
navigateToDlgEinnahmehinzufugen();
_include("/DlgEinnahmen.sah");
break;
case "Bearbeitungsvermerk":
navigateToDlgBearbeitungsvermerk();
_include("/DlgBearbeitungsvermerk.sah");
break;
case "Vertragsuchen":
navigateToDlgVertragsuchen();
_include("/DlgVertragSuchen.sah");
break;
case "Partnersuchen":
navigateToDlgPartnersuchen();
_include("/DlgPartnerSuchen.sah");
break;
case "Partnerdatenanzeigen":
navigateToDlgPartnerdatenanzeigen();
_include("/DlgPartner.sah");
break;
case "Kinderdatenhinzufugen":
navigateToDlgKinderdatenhinzufugen();
_include("/DlgKinderdaten.sah");
break;
case "InfoForm":
navigateToDlgInfoForm();
break;
default:
}
}



Encountered code generation error while compiling function "navigateToDlg": Program too complex: too big jump offset at Dec 24, 2009 1:21:39 PM

thanks in adavance
Nagarjun.

Comments

  • narayannarayan Administrators
    Nagarjun,

    There are limitations to the size of scripts because of the Rhino javascript interpreter. These limits are huge, but may be hit if your code structure is not optimal.

    A few points to note about your script.

    1) _includes are expanded in place. It is good to have your includes at the start and have the statements in it structured as functions.
    Eg.
    
    inner.sah
    ------------
    Line I1
    Line I2
    
    outer.sah
    ------------
    Line O1
    Line O2
    _include("inner.sah");
    Line O3;
    
    is equal to
    
    Line O1
    Line O2
    Line I1
    Line I2
    Line O3
    
    Instead, do this
    
    inner.sah:
    ------------
    function fn1(){
      Line I1;
      Line I2;
    }
    
    outer.sah
    ------------
    _include("inner.sah");
    Line O1
    Line O2
    fn1();
    Line O3
    

    2) In your case the case statement has become huge because of inline _includes.

    Instead do the includes at the top, (but make sure the statements are inside functions) and then only call the functions inside your cases. That will make your case statements much smaller.


    Eg.
    function navigateToDlg($DlgName)
    {
         switch ($DlgName) {
                 case "ZulageantragSuchen":
                    navigateToZulageantragSuchen();
                    _include("/DlgZulageantragSuchen.sah"); //ok
                    break; 
                 default:
         }
    }
    
    could be 
    
    _include("/DlgZulageantragSuchen.sah"); //ok
    function navigateToDlg($DlgName)
    {
         switch ($DlgName) {
                 case "ZulageantragSuchen":
                    navigateToZulageantragSuchen();
                    doDlgZulageantragSuchenActions();
                    break; 
                 default:
         }
    }
    
    where doDlgZulageantragSuchenActions is defined inside DlgZulageantragSuchen.sah
    

    Hope that helps.

    Regards,
    Narayan
Sign In or Register to comment.