(
        IN originalJob INTEGER,
        IN srcjob INTEGER,
        IN tgtjob INTEGER,
        IN schid INTEGER,
        IN lvl INTEGER,
        IN pathid1 INTEGER,
        OUT i INTEGER
 )
CALLED ON NULL INPUT
DYNAMIC RESULT SETS 1
LANGUAGE SQL
BEGIN
    DECLARE JobSrcId INTEGER; 
    DECLARE JobTrgId INTEGER; 
    DECLARE InSchidId INTEGER; 
    DECLARE OutSchidId INTEGER;
    DECLARE Lv INTEGER;
    DECLARE v_RC1 INTEGER;
    DECLARE v_schid INTEGER; 
    DECLARE v_InSchidId INTEGER;
    DECLARE v_OutSchidId INTEGER;
    DECLARE vic INTEGER;
    DECLARE STMT VARCHAR(2000);
    DECLARE STMT_V STATEMENT;
    DECLARE C1 CURSOR FOR STMT_V;
    
    IF  (originalJob = srcjob AND tgtjob is null AND lvl = 0) THEN
         SET i = 1;
    ELSEIF (originalJob != srcjob AND tgtjob is null AND lvl = 0) THEN
            SET i = 0;      
    ELSE 
        SET vic = lvl - 1;
        SET STMT = 'SELECT src, tgt, ssid, tsid, ord FROM SESSION.Path WHERE src = ' || tgtjob || ' AND pathid = ' || pathid1 || ' AND ord = ' || vic || ' AND (ssid = ' || schid || ' or ssid = 0 or ssid is null or (' || schid || ' = 0 AND ssid <> 0 ))';       
        PREPARE STMT_V FROM STMT;
        SET v_RC1 = 0;
        BEGIN
            OPEN C1;
            FETCH C1 INTO JobSrcId, JobTrgId, InSchidId, OutSchidId, Lv;
            IF JobSrcId is not null THEN
                SET v_RC1 = 1;
            END IF;
            CLOSE C1;
        END;
        
        IF  (v_RC1 = 1) THEN 
            BEGIN
                SET i = 0;
                IF (schid is null) THEN
                    BEGIN
                        set v_schid = 0;
                    END;
                ELSE 
                    BEGIN
                        set v_schid = schid;
                    END;
                END IF;    
                IF (InSchidId is null) THEN
                    BEGIN
                        set v_InSchidId = 0;
                    END;
                ELSE 
                    BEGIN
                        set v_InSchidId = InSchidId;
                    END;
                END IF;    
                IF (OutSchidId is null) THEN
                    BEGIN
                        set v_OutSchidId = 0;
                    END;
                ELSE 
                    BEGIN
                        set v_OutSchidId = OutSchidId;
                    END;
                END IF;  
                IF (v_schid = v_InSchidId  AND  v_InSchidId = v_OutSchidId) OR (v_schid = v_InSchidId AND v_OutSchidId = 0) OR (v_schid <> v_InSchidId AND v_InSchidId = v_OutSchidId AND v_OutSchidId = 0) OR (v_schid <> v_InSchidId AND v_InSchidId = 0 AND v_schid = v_OutSchidId AND v_schid <> 0 AND v_OutSchidId <> 0) THEN
                    BEGIN
                        call EZViewer_CA7_Validate_SCHID (originalJob, JobSrcId, JobTrgId, schid, lv, pathid1, i);
                        GOTO lbl;
                    END; 
                END IF;    
                IF(v_schid <> v_InSchidId AND v_schid = v_OutSchidId AND v_OutSchidId = 0 AND v_InSchidId <> 0) THEN
                    BEGIN
                        call EZViewer_CA7_Validate_SCHID (originalJob, JobSrcId, JobTrgId, InSchidId, lv, pathid1, i);  
                        GOTO lbl;
                    END;
                END IF;    
                IF(v_schid  = v_InSchidId AND v_OutSchidId <> 0) OR (v_schid <> v_InSchidId AND v_schid = 0 AND v_InSchidId <> 0 AND v_OutSchidId <> 0) OR (v_schid <> v_InSchidId AND v_schid = 0 AND v_InSchidId = v_OutSchidId ) OR (v_schid <> v_InSchidId AND v_InSchidId = 0 AND v_schid <> v_OutSchidId AND v_schid <> 0 AND v_OutSchidId <> 0) THEN
                    BEGIN
                        call EZViewer_CA7_Validate_SCHID (originalJob, JobSrcId, JobTrgId, OutSchidId, lv, pathid1, i);
                        GOTO lbl;
                    END;
                END IF;    
                IF(v_schid <> v_InSchidId AND v_schid <> 0 AND v_InSchidId <> 0) OR (v_schid <> v_InSchidId AND v_InSchidId = v_OutSchidId AND v_InSchidId <> 0 AND v_OutSchidId <> 0) OR (v_schid <> v_InSchidId AND v_InSchidId <> v_OutSchidId) THEN
                    BEGIN
                        set i = 0;
                        GOTO lbl;
                    END;    
                END IF;                                         
                lbl:
                    SET i = i;                  
            END;         
        ELSE
            BEGIN
               SET i = 0;
            END;
         END IF;
    END IF;
END 
