zoukankan      html  css  js  c++  java
  • [ Calibre ] 集成到 Virtuoso 中,官方提供的脚本文件在哪?

    https://www.cnblogs.com/yeungchie/

    脚本位置

    $MGC_HOME/shared/pkgs/icv/tools/queryskl/calibre.skl
    # $MGC_HOME 为 Calibre 的安装路径
    

    使用方法

    • 在 .cdsinit 中增加一行:
    loadi(strcat(getShellEnvVar("MGC_HOME") "/shared/pkgs/icv/tools/queryskl/calibre.skl"))
    

    强烈推荐使用上面这种方式。

    脚本内容

    /*******************************************************************************
     *
     * calibre.skl
     *
     *******************************************************************************/
    
    ; ==============================================================================
    ; = @brief Get Calibre version string based on MGC home environment variable.
    ; ==============================================================================
    
    procedure( mgc_get_calibre_version(@optional (mgcHomeEnvName "MGC_HOME") "t")
        let( (mgc_home vfile version vfilep)
            mgc_home = getShellEnvVar(mgcHomeEnvName)
            version = ""
            if( mgc_home then
                vfile = strcat(mgc_home "/pkgs/icv/dependencies/version")
                when( isFile(vfile) && isReadable(vfile)
                    vfilep = infile(vfile)
                    fscanf(vfilep "%s" version)
                    close(vfilep)
                ) ; when
            else
                warn("Invalid or undefined mgc_home environment variable %L!
    " mgcHomeEnvName)
            ) ; if
            version
        ) ; let
    ) ; end
    
    ; ==============================================================================
    ; = @brief Compare two Calibre version strings.
    ; = @return 1/0/-1 return 1 if tVersion1 is newer than tVersion2, -1 otherwise,
    ; =                0 for same version.
    ; ==============================================================================
    
    procedure( mgc_compare_calibre_versions(tVersion1 tVersion2 "tt")
        prog( (nYear1 nYear2 nQuarter1 nQuarter2 tPattern nBld1 nBld2 nPch1 nPch2 nTotal1 nTotal2)
            ;; tVersion = "v2014.3_0.30" "v2014.2_12.0012"
            nYear1 = 0
            nYear2 = 0
            nQuarter1 = 0
            nQuarter2 = 0
            nBld1 = 0
            nBld2 = 0
            nPch1 = 0
            nPch2 = 0
            tPattern = "\([0-9]+\).\([1-4]+\).\([0-9]+\).\([0-9]+\)"
            when( rexMatchp(tPattern tVersion1)
                nYear1    = evalstring(rexSubstitute("\1"))
                nQuarter1 = evalstring(rexSubstitute("\2"))
                nBld1     = evalstring(rexSubstitute("\3"))
                nPch1     = evalstring(rexSubstitute("\4"))
            ) ; when
            when( rexMatchp(tPattern tVersion2)
                nYear2    = evalstring(rexSubstitute("\1"))
                nQuarter2 = evalstring(rexSubstitute("\2"))
                nBld2     = evalstring(rexSubstitute("\3"))
                nPch2     = evalstring(rexSubstitute("\4"))
            ) ; when
            nTotal1 = nYear1*100 + nQuarter1 
            nTotal2 = nYear2*100 + nQuarter2
            if( nTotal1>nTotal2 then 
                return(1)
            else if( nTotal1<nTotal2 then
                return(-1)
            else
                if( nBld1>nBld2 then
                    return(1)
                else if( nBld1<nBld2 then
                    return(-1)
                else if( nPch1>nPch2 then
                    return(1)
                else if( nPch1<nPch2 then
                    return(-1)
                else
                    return(0)
                ))))
            )) ; if
            return(0)
        ) ; prog
    ) ; end
    
    ; ==============================================================================
    ; = @brief Load Calibre SKILL files 
    ; ==============================================================================
    
    if( !boundp('mgcCadenceVersion4_3) then
        mgcCadenceVersion4_3 = nil
    )
    
    mgcCadenceVersionOA = nil
    if( !mgcCadenceVersion4_3 then
        when( dbGetDatabaseType()=="OpenAccess"
            mgcCadenceVersionOA = t
        )
    )
    
    /* Check for MGC_HOME */
    
    let( (mgc_home calibre_home realtime_home script_path calibre_realtime_file tVersion1 tVersion2)
        ; ER1054490: Add mechanism in calibre.skl to prevent double load
        if( boundp('MGC_CALIBRE_GLOBALS_SKL_LOADED) && MGC_CALIBRE_GLOBALS_SKL_LOADED then
            fprintf(stderr "//  Calibre Error: Calibre SKILL code has been loaded, new code will not be loaded!
    ")
        else 
            MGC_CALIBRE_GLOBALS_SKL_LOADED = t
            ; DR602690: When User use CALIBRE_HOME without MGC_HOME , Virtuoso can not display Calibre button .
            calibre_home = getShellEnvVar("CALIBRE_HOME")
            when( calibre_home && isDir(calibre_home) && isReadable(calibre_home)
                setShellEnvVar(sprintf(nil "MGC_HOME=%s" calibre_home))
            ) ; when
            mgc_home = getShellEnvVar("MGC_HOME")
            realtime_home = getShellEnvVar("MGC_REALTIME_HOME")
            when( realtime_home && realtime_home!=mgc_home && isReadable(realtime_home) && getShellEnvVar("MGC_CALIBRE_REALTIME_VIRTUOSO_ENABLED") && dbGetDatabaseType()=="OpenAccess"
                ; ER1054482: Issue warning message to customer if MGC_REALTIME_HOME is older than MGC_HOME
                ; ER1094216: An MGC_REALTIME_HOME older than MGC_HOME should be a fatal error
                tVersion1 = mgc_get_calibre_version("MGC_HOME")
                tVersion2 = mgc_get_calibre_version("MGC_REALTIME_HOME")
                if( mgc_compare_calibre_versions(tVersion2 tVersion1)<0 then
                    error("//  Calibre RealTime: MGC_REALTIME_HOME = %L, MGC_HOME = %L; MGC_REALTIME_HOME is older than MGC_HOME! Please correct your settings!" tVersion2 tVersion1)
                    when( isCallable('unsetShellEnvVar) unsetShellEnvVar("MGC_REALTIME_HOME") )
                else
                    printf("//
    ")
                    printf("//  Calibre RealTime: MGC_HOME          = %L, MGC_HOME is different with MGC_REALTIME_HOME.
    " mgc_home)
                    printf("//  Calibre RealTime: MGC_REALTIME_HOME = %L, SKILL code in MGC_REALTIME_HOME will be used!
    " realtime_home)
                    mgc_home = realtime_home
                ) ; if
            ) ; when
    
            if( mgc_home!=nil && isReadable(mgc_home) then
                script_path = strcat(mgc_home "/shared/pkgs/icv/tools/queryskl/")
                load( strcat(script_path "mgc_calibre_menu.skl") )
                load( strcat(script_path "mgc_rve.skl") )
                load( strcat(script_path "mgc_export.skl") )
                load( strcat(script_path "mgc_utility.skl") )
                when( getShellEnvVar("MGC_CALIBRE_REALTIME_VIRTUOSO_ENABLED") && dbGetDatabaseType()=="OpenAccess"
                    calibre_realtime_file = strcat( strcat(script_path "mgc_calibre_realtime.enc_skl") )
                    if( isReadable(calibre_realtime_file) then
                        load(calibre_realtime_file)
                    else
                        fprintf(stderr "//  Calibre Error: %L is not readable
    " calibre_realtime_file)
                    ) ; if
                ) ; when
                if( !mgcCadenceVersion4_3 then
                    load( strcat(script_path "mgc_extview.skl") )
                )
            else
                ; MGC_HOME is not set correctly. Report the problem.
                fprintf(stderr "//  Calibre Error: Environment variable ")
                if( mgc_home==nil || mgc_home=="" then
                    fprintf(stderr "CALIBRE_HOME or MGC_HOME is not set.")
                else
                    if( !isDir(mgc_home) then
                        fprintf(stderr "CALIBRE_HOME or MGC_HOME does not point to a directory.")
                    else
                        unless( isReadable(mgc_home)
                            fprintf(stderr "CALIBRE_HOME or MGC_HOME points to an unreadable directory.")
                        )
                    )
                )
                fprintf(stderr " Calibre Skill Interface not loaded.
    ")
            ) ; if
        ) ; if
    ) ; let
    
  • 相关阅读:
    linux部署nuxt.js项目
    vue---el-table设置表头居中,内容列居中/左对齐/右对齐
    偶然看到的jquery选择器性能问题
    关于js中的回调函数问题
    html5图片上传(搬砖)
    css上传文件样式元素样式美化
    小记--转自张鑫旭的css命名规则
    关于nodeJS 在webstorm中的服务器配置
    关于window上的github 上传本地文件--傻瓜式教程
    关于PS的基本操作
  • 原文地址:https://www.cnblogs.com/yeungchie/p/13420268.html
Copyright © 2011-2022 走看看