@originalJob int, @srcjob int, @tgtjob int, @schid int, @lvl int, @pathid int
AS
BEGIN
    DECLARE @JobSrcId INT; 
    DECLARE @JobTrgId INT; 
    DECLARE @InSchidId INT; 
    DECLARE @OutSchidId INT;
    DECLARE @Lv INT;
    DECLARE @i INT;

    IF(@originalJob = @srcjob AND @tgtjob is null AND @lvl = 0) 
        BEGIN
            return 1;
        END
    ELSE IF (@originalJob != @srcjob AND @tgtjob is null AND @lvl = 0)
        BEGIN
            return 0;
        END
    ELSE
        BEGIN
            select @JobSrcId = src, @JobTrgId = tgt, @InSchidId = ssid, @OutSchidId = tsid, @Lv = ord from #Path where src = @tgtjob and pathid = @pathid and ord = @lvl-1 and (ssid = @schid or ssid = 0 or ssid is null or (@schid = 0 and ssid <> 0 ))
            IF (@@ROWCOUNT = 1)     
                BEGIN
                
                    SET @i = 0;
                    DECLARE @v_schid INT; 
                    DECLARE @v_InSchidId INT;
                    DECLARE @v_OutSchidId INT;
                    
                    IF (@schid is null)
                        BEGIN
                            set @v_schid = 0;
                        END
                    ELSE 
                        BEGIN
                            set @v_schid = @schid;
                        END
                        
                    IF (@InSchidId is null)
                        BEGIN
                            set @v_InSchidId = 0;
                        END
                    ELSE 
                        BEGIN
                            set @v_InSchidId = @InSchidId;
                        END
                        
                    IF (@OutSchidId is null)
                        BEGIN
                            set @v_OutSchidId = 0;
                        END
                    ELSE 
                        BEGIN
                            set @v_OutSchidId = @OutSchidId;
                        END
                        
                    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)
                        BEGIN
                            exec @i = EZViewer_CA7_Validate_SCHID @originalJob, @JobSrcId, @JobTrgId, @schid, @lv, @pathid
                            GOTO lbl
                        END 
                        
                    IF(@v_schid <> @v_InSchidId and @v_schid = @v_OutSchidId and @v_OutSchidId = 0 and @v_InSchidId <> 0)
                        BEGIN
                            exec @i = EZViewer_CA7_Validate_SCHID @originalJob, @JobSrcId, @JobTrgId, @InSchidId, @lv, @pathid    
                            GOTO lbl
                        END
                        
                    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)
                        BEGIN
                            exec @i = EZViewer_CA7_Validate_SCHID @originalJob, @JobSrcId, @JobTrgId, @OutSchidId, @lv, @pathid
                            GOTO lbl
                        END
                        
                    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)
                        BEGIN
                            set @i = 0;
                            GOTO lbl
                        END    
                                                             
                    lbl:
                        return @i;
                END
            ELSE
                BEGIN
                    RETURN 0;
                END
        END
END