亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 10348 | 回復(fù): 10
打印 上一主題 下一主題

如何把文件里面的字段保存的值,在程序里面當做變量名稱使用! [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2014-01-10 10:52 |只看該作者 |倒序瀏覽
RT:

例如,表A, 有一個一個字段F1 = VEW1,
在程序里面,當我取到字段F1的時候,我需要把VEW1當做變量使用,而不是把他當做字符串值‘VEW1’.

有誰知道如何處理,給點意見,急,非常感謝。。。

論壇徽章:
0
2 [報告]
發(fā)表于 2014-01-10 10:52 |只看該作者
自己沙發(fā)。。。

論壇徽章:
0
3 [報告]
發(fā)表于 2014-01-10 10:52 |只看該作者
自己板凳。

論壇徽章:
0
4 [報告]
發(fā)表于 2014-01-13 09:36 |只看該作者
現(xiàn)在論壇里面,好沒有人氣啊。。。?磥400真的要悲劇啊。。。。

問了個問題,3天了,沒人回答,嗚嗚嗚,傷心鳥。。。

論壇徽章:
0
5 [報告]
發(fā)表于 2014-01-13 10:12 |只看該作者
對這種問題,建議你考慮元編程。
目前不知道那種編程語言支持動態(tài)使用變量名的,但還是有變通的方法的。
比如你要動態(tài)的去讀寫一張表,規(guī)則一樣,但這張表的結(jié)構(gòu)是未知的,這種情況你可以考慮做一個模版程序+配置文件方式。需要讀寫的時候根據(jù)模版程序和配置文件動態(tài)生成一個程序源碼并編譯,只要保證調(diào)用接口一致就可以了。
整個流程大概是這樣的。
需要調(diào)用一個動態(tài)的B程序,但B程序此時并不存在。那么就先定義一個C程序,在C程序里定義一個動態(tài)調(diào)用程序,程序名未知,但輸入輸出參數(shù)固定。
接著實現(xiàn)一個D程序,根據(jù)配置文件和傳入的參數(shù)動態(tài)生成B程序。
那么最終的調(diào)用模式就是:
A—>D—>C—>B

論壇徽章:
0
6 [報告]
發(fā)表于 2014-04-14 15:30 |只看該作者
給出你的實際的需求,我們可以替你想出解決問題的方法。
由于需求的復(fù)雜性,有時候我們甚至需要動態(tài)的生成一個程序來解決問題。

論壇徽章:
0
7 [報告]
發(fā)表于 2014-05-27 16:16 來自手機 |只看該作者
如果樓主不介意引入c++的話,這個問題是很好解決的。
這類問題在c++中都有標準處理模式:
使用map,初始化的時候把可能用到的變量逐一取地址,以變量名為鍵,地址位為值,寫到map里。
實際使用的時候,以PF中的字段值為鍵值直接在map中查出對應(yīng)變量的地址位,然后就可以隨心所欲了。
不需要動態(tài)生成程序。

直覺上用java還能更簡單點,因為c++沒有反射機制。不過我們這邊一般在400上都沒裝java開發(fā)包,所以推薦c++。

論壇徽章:
0
8 [報告]
發(fā)表于 2014-05-27 16:26 來自手機 |只看該作者
好吧,其實核心思想就是在內(nèi)存里緩存數(shù)據(jù),保留以字段名和實際字段的地址的對應(yīng)關(guān)系。

如果用純凈的RPGLE寫的話,可以考慮使用一個結(jié)構(gòu)體數(shù)組來實現(xiàn)這個偉大的目的。

論壇徽章:
0
9 [報告]
發(fā)表于 2014-05-28 10:36 |只看該作者
看來胖有型 C++ 很熟。 其實RPGLE 也可以做同樣的事情。

函數(shù) %ADDR()   可以返回變量 所在的內(nèi)存地址,而我們可以把這個地址內(nèi)存用數(shù)據(jù)結(jié)構(gòu)定義成變量來存取。

xxxxx     ds    based(addr)
yyyyy

譬如說  數(shù)據(jù)庫 字段指明 變量  FLD1, 含值 VAR1,

      EVAL  ADDR = %ADDR(FLD1)  可以返回變量 VAR1的地址
這時候變量 YYYY 就可以拿到變量 VAR1的值了。

論壇徽章:
0
10 [報告]
發(fā)表于 2014-05-29 00:36 |只看該作者
franliu 發(fā)表于 2014-05-28 10:36
看來胖有型 C++ 很熟。 其實RPGLE 也可以做同樣的事情。

函數(shù) %ADDR()   可以返回變量 所在的內(nèi)存地址, ...


F先生您好,我仔細看了一下,您這里說的是在RPGLE里取變量地址位,以及根據(jù)地址位獲取具體的值,也就是類似于C里面的& 和 * 的用法。
我之前說的,是在內(nèi)存中緩存一份變量名和變量地址的對應(yīng)關(guān)系,這個是不一樣的。

以樓主的要求為例,樓主的需求我們不妨這樣分解一下:
1.  有一張配置表PF, 其中有個字段FLD1,  然后假設(shè)第一條記錄中, FLD1的值為 "VAR1"
2.  樓主的程序中,其實是有VAR1這樣一個字段的,它可能是某個獨立的變量,也可能是某個PF的字段,還可能是某個DS中的一個成員變量,總之有這么一個變量。
  假設(shè)VAR1的初始值為"HELLO WORLD"
3.  樓主希望的是,他有一個應(yīng)用程序,讀取PF表,取出第一條記錄中FLD1的值"VAR1";
   然后他想根據(jù)這個字符串"VAR1",找到對應(yīng)的"HELLO WORLD", 或者是把這個"HELLO WORLD"修改成為"HELLO AS400"

您舉的偽代碼的例子中,YYYY對應(yīng)的是FLD1的地址位,所以最終取出的YYYY的值一定是"VAR1", 不可能是"HELLO WORLD“

所以針對樓主的這個需求,我們需要有一個初始化的動作。
比如假設(shè)我們已經(jīng)用%Addr取出VAR1這個變量的地址是0XF8305891(隨便編的),那么就需要建立好字符串"VAR1”和這個0XF8305891的對應(yīng)關(guān)系。
以后用的時候就可以根據(jù)字符串找到對應(yīng)的地址位,即而找到相應(yīng)的值了。
MAP的好處是可以動態(tài)擴展,并且使用堆排序,查找效率恒定。
當然考慮到這里是400板塊,過于炫耀C++的知識也有踩場子嫌疑,所以我后來也補充了,用純凈的RPGLE也可以實現(xiàn),只是沒那么優(yōu)雅罷了。
比如我們可以建兩個數(shù)組,保持邏輯上的一致性,也就是說這個一致性只存在于程序員的大腦中,沒有代碼級別的限制。
一個數(shù)組DIMA是存放字符串,一個數(shù)組DIMB存放事先取出的變量的地址位。
要用的時候通過LOOKUP操作符,查找出"VAR1“這個字符串在數(shù)組DIMA中的下標位置,然后直接用這個下標在數(shù)組DIMB中取地址就可以了。

之所以說用數(shù)組沒有map優(yōu)雅,一個是數(shù)組需要約定最大元素,再一個LOOKUP操作好象是全數(shù)組掃描,沒有map的查詢快。 不知道I5以后的版本有沒有對數(shù)組查詢這部分做優(yōu)化。

當然,我也深深的懷疑,我們討論得這么熱火朝天,樓主到底看到?jīng)],看明白沒。。。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP