GET-POINTER-VALUE - Unix behaivor?



*如何使用GET-pointer-VALUE…获得具有进度的mem指针。。。。?在Windows中运行良好:

DEFINE VARIABLE vUNO  AS MEMPTR.
DEFINE VARIABLE vDOS  AS MEMPTR.
DEFINE VARIABLE vTRES AS MEMPTR.
DEFINE VARIABLE sUNO  AS CHARACTER.
DEFINE VARIABLE sDOS  AS CHARACTER.
DEFINE VARIABLE sTRES AS CHARACTER.
DEFINE VARIABLE rUno  AS MEMPTR.
/*Para prueba, poner algo a UNO, DOS y TRES.*/
DEFINE VARIABLE PTR AS MEMPTR.
ASSIGN sUNO                 = "Uno" 
       sDOS                 = "Dos" 
       sTRES                = "Tres"
       SET-SIZE(vUNO  )     = LENGTH(sUNO ) * 2
       SET-SIZE(vDOS  )     = LENGTH(sDOS ) * 2 
       SET-SIZE(vTRES )     = LENGTH(sTRES) * 2
       PUT-STRING(vUNO , 1) = sUNO                  
       PUT-STRING(vDOS , 1) = sDOS 
       PUT-STRING(vTRES, 1) = sTRES.
SET-SIZE(PTR) =  4  /*Apuntador a vUNO  -> 1*/
               + 4  /*Apuntador a vDOS  -> 5*/
               + 4. /*Apuntador a vTRES -> 9*/
/* 
  NOTA: 
       4 porque en arquitcturas a 32 bits apuntadores miden 4 bytes. 
       Checar en Unix porque Hp-Ux (de Axa) es a 64 bits (apuntadores a 8 bytes).
*/
/* [1] 2 3 4 [5] 6 7 8 [9] 10 11 12 */
MESSAGE PROGRAM-NAME(1) SKIP                          
    GET-STRING(vUNO,1 ) "/" GET-POINTER-VALUE(vUNO)  SKIP    
    GET-STRING(vDOS,1 ) "/" GET-POINTER-VALUE(vDOS)  SKIP
    GET-STRING(vTRES,1) "/" GET-POINTER-VALUE(vTRES) SKIP
    VIEW-AS ALERT-BOX INFO BUTTONS OK.

/******************/它返回:

---------------------------
Información
---------------------------
C:GMM2000Tempp19350.cmp 
Uno / 87066920 
Dos / 85914720 
Tres / 85914744 
---------------------------
Aceptar   
---------------------------

但Unix返回的代码相同:

---------------------------
Información
---------------------------
/gmm2000/p13659.cmp 
Uno / ? 
Dos / ? 
Tres / ? 
---------------------------
Aceptar   
---------------------------

请注意!!!*

HP-UX 64位AVM在某些版本中不做64位指针,因为外部接口只做32位指针。不过我忘了哪个版本实现了完整的64位指针-这将是一个需要问PSC TS的问题。

我刚刚在10.2B Linux上尝试了您的代码。它似乎起作用:

  ┌────────── Information ──────────┐
  │ /home/tom/p04012_Untitled1.ped  │
  │         Uno / 16817200          │
  │         Dos / 16992512          │
  │        Tres / 16992544          │
  │ ─────────────────────────────── │
  │              <OK>               │
  └─────────────────────────────────┘

我们知道您正在HPUX上运行64位Progress v9。。。

在64位环境中,GET-POINTER-VALUE()返回64位结果。但是Progress v9没有int64数据类型。尝试将结果分配给DECIMAL变量。这应该能够保持价值。

相关内容

  • 没有找到相关文章

最新更新