久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

RPG AS400程序員培訓手冊6

時間:2019-05-12 19:20:12下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《RPG AS400程序員培訓手冊6》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《RPG AS400程序員培訓手冊6》。

第一篇:RPG AS400程序員培訓手冊6

CL、CMD

其實有關這一章,以及屏幕文件的,在網上已經有很多人寫過了,想了想,還是說一下吧。

5.1 CL 程序

5.1.1 基本認識

簡單的理解,CL 程序就是和RPG 相對應的,是控制語言(Control Language)。類型為

CLP、CLLE 的源代碼編譯出來的程序,都屬于CL 程序。

可能還是不夠直觀,這么說吧,我們在交互式命令行上輸入的命令,用程序的方式來執

行,這個執行的程序,就是CL 程序。

學過UNIX 的會比較好懂,CL 程序有點類似于SHELL,不過SHELL 是可以直接執行的,而且不用編譯;CL 程序需要編譯,而且要用CALL 的方式來執行。不過原理是接近的,都是在程序中直接調用命令行的語句。

所以說,CL 程序其實很好寫,只要會輸入命令,就可以寫CL 程序了。在編輯CL 程

序時,也可以用“命令 + F4”的方式來寫,不需要老老實實的整行輸入。

CL 程序不像RPGLE 程序,在編寫時,可以使用自由格式書寫;一行的內容如果太長

要,在最末尾處用“+”表示換行

舉個最簡單的例子,比如說新建個名為FHS01CL 的CLP 源程序,代碼如下:

PGM

WRKACTJOB

ENDPGM

編譯此程序,然后CALL 之,系統就會執行命令WRKACTJOB,查看當前的活動作業,效果與在交互式命令行下輸入WRKACTJOB 是一樣的。

當我們輸入F12,退出WRKACTJOB 時,系統就會繼續向下執行,發現是ENDPGM,表示程序結束了,于是判定執行完畢,退出至交互式畫面。

5.1.2 CL 程序的常用語法及命令:

一、程序的開始與結束:

PGM PARM(&A &B)/* 開始CL 程序 */

ENDPGM /* 結束CL 程序 */

CL 程序,和RPGLE 程序一樣,也可以有程序的入口參數,而且程序的入口參數

都是可傳遞的(也就是輸入的參數如果在程序中被修改過,那么原調用的程序中的相應

參數也會進行變化。不過CL 的入口參數只能為字符型,或數字型的單個字段,不能象

RPGLE 程序中那么多樣化(字段、結構、數組、指針)。

如果CL 程序沒有入口參數時,那么就可以不需要后面的PARM 語句,直接寫成PGM

即可。

寫CL 程序時,不妨多使用F4,看看系統的幫助,這樣就不用記那么多命令的參

數名。

二、變量及其定義

CL程序中的所有變量,都使用&做為前綴,這一點與RPGLE 程序不同。比如說

PGM PARM(&A &B)

就表示入口參數為A、B 這兩個變量

在CL 程序中使用到的變量,都必須使用DCL 語句來定義:

DCL VAR(&FLD01)TYPE(*CHAR)LEN(10)

DCL VAR(&FLD02)TYPE(*DEC)LEN(10 2)

上述語句表示:

定義變量FLD01,10 位長的字符型變量

定義變量FLD02,10 長,其中2 位小數的數字型變量

除了字符、數字之外,CL 程序還可以定義邏輯變量(*LGL),邏輯變量允許的值只

能為’1’或’0’。不過通常有字符與數字也就夠了。CL 程序的主要功能在于進行命令處理,而不是處理字符串以及數據庫

三、CL 常用命令:

CHGVAR--變量賦值

CHGVAR VAR(&FLD01)VALUE(‘ABCD’)

即是將變量FLD01 賦值成為’ABCD’(左對齊),同理,VALUE 的括號中也可

以填寫一個變量,即表示將此變量的值賦值到變量FLD01 中。

數字型變量的賦值同樣也是使用CHGVAR 語句。

當變量中只包含數字時(0—9),數字型變量與字符型變量可以使用CHGVAR

語句進行轉換,這一點與RPGLE 中的MOVE 語句比較類似。

IF--條件判斷語句

IF COND(&FLD01 *EQ '1')THEN(CHGVAR VAR(&FLD02)+

VALUE('0'))

當變量FLD01 等于’1’時,將變量FLD02 中的值更改為’0’

THEN 后面,即是當符合條件時,要執行的命令。寫起來其實沒有看上去那么

復雜,多用F4 就會發現CL 程序寫簡單。

就比如上例,先寫IF,然后按F4,在Condition 處填寫條件語句,然后在

Command 處填上CHGVAR,再按F4,再去填相應的處理語句,這樣寫,就比直

接把整句抄下來就簡單多了。

上面這種寫法,只能在符合條件時,執行一條CL 語句;如果要執行多條,就

必須寫做:

IF COND(&FLD01 *EQ '1')THEN(DO)

CHGVAR VAR(&FLD02)VALUE(‘0’)

其它執行語句

ENDDO 也就是THEN 后面,用DO,表示接下來的語句都是在這個IF 條件成立時才

執行(DO)的。

然后結束處用ENDDO,必須要有。ENDDO 在這里和循環沒有任何關系,表

示的是ENDIF 的意思,但是CL 語句里沒有ENDIF,只有ENDDO。

IF 語句中,表示判斷的關鍵字與RPGLE 中的Ifxx 操作碼類似,有

*EQ *GT *LT *GE *LE *NE

用來表示邏輯關系的關鍵字有

*AND, *OR, *NOT

GOTO--跳轉語句

GOTO 語句與RPGLE 中的GOTO 是一樣的,都是跳轉的意思。

FHSTAG:

GOTO CMDLBL(FHSTAG)

注意,這里定義標簽是用“:” 冒號

MONMSG--監控錯誤信息

我們使用CL 語句時,執行的命令可能會報出一些異常錯誤,從而導致整個程

序中斷,需要手工干預。MONMSG 命令可以監控我們預定的錯誤信息,使CL 程

序正常的向下運行。舉例而言,如果CL 程序中有如下語句:

CALL PGM(FHS01R)

MONMSG MSGID(CPF4131)

則表示當系統調用程序FHS01R 時,如果發現有CPF4131(聲明的文件重新編

譯過,但程序未重新編譯)的錯,那么CL 程序將不會異常中斷,僅僅只是不運行

程序FHS01R,然后繼續向下執行CL 程序

MONMSG 還可以用于在監控到錯誤信息之后,進行處理,如下:

CALL PGM(FHS01R)MONMSG MSGID(CPF4131)EXEC(CHGVAR VAR(&FLD01)+

VALUE('0'))

這句話就表示當發現有CPF4131 的錯誤之時,將變量FLD01 賦值成為’0’

如果要執行多句的話,和IF 語句的方法類似,也是使用DO 與ENDDO

MONMSG MSGID(CPF4131)EXEC(DO)

CHGVAR VAR(&FLD01)VALUE(‘0’)

其它處理語句

ENDDO

5.1.3 不常用的語法

%SST--取字符串

CHGVAR VAR(&FLD01)VALUE(%SST(&FLD02 3 1))

表示將字符變量FLD02,從第3 位開始,取1 位,左對齊賦值到變量FLD01 中。

%SST 的括號的參數中,第一個參數必須為字符型變量,第二個參數表示起始位,第三個參數表示要截取的長度。

*CAT--拼字符串

DCL VAR(&FLD01)TYPE(*CHAR)LEN(10)

CHGVAR VAR(&FLD01)VALUE('A' *CAT 'B')

即表示將10 位長的字符型變量賦值成為’AB ‘

‘A’,‘B’,也可以使用變量,如

CHGVAR VAR(&FLD01)VALUE(&FLD02 *CAT &FLD03)

要注意,*CAT 不能去掉字符串末尾的空,從效果上來看,有點類似于RPGLE 中的EVAL 操作碼,而不是CAT 操作碼

+、-、*、/--數學運算

數字型變量,可以進行數學運算 CHGVAR VAR(&FLD01)VALUE(&FLD01 + &FLD02)

即等同于RPGLE 程序中的 EVAL FLD01 = FLD01 + FLD0

2同理,-、*、/ 分別對應減、乘、除

不過數學運行常用于RPGLE 程序中,較少用在CL 控制里面,這里只是介紹一下。

讀取文件:(From Cuer:P1421)

DCL VAR(&FLD01)TYPE(*CHAR)LEN(2)

DCLF FILE(FHSLIB/PFFHS)

RCVF

CHGVAR VAR(&FLD01)VALUE(&FHS01)

以上這段CL 的意思,就是在CL 程序中讀取PFFHS 文件,然后將讀到的第一條記

錄賦值到CL 的臨時變量FLD01 中。

如果要將一個文件從頭讀到尾,則可以用如下語句來實現:

DCLF FILE(FHSLIB/PFFHS)

LOOP:

RCVF

MONMSG MSGID(CPF0864)EXEC(GOTO CMDLBL(EXIT))

讀取到每條記錄后的處理語句

GOTO CMDLBL(LOOP)

EXIT:

也就是說,信息CPF0864,即表示未讀取到記錄。

在CL 程序中聲明文件使用DCLF 語句,一個CL 文件中只能聲明一個文件,聲明

語句必須在CL 控制語句之前。

使用聲明的文件中的字段,同樣需要在字段名前加上“&” ;

CL 程序中,無法控制游標,無法對記錄進行定位操作。所以CL 程序對文件的操 作是比較弱的,通常我最多只用來讀取某些只含少量記錄的參數文件。

5.2 CMD

CMD 是用來生成命令的,執行后可以像其它系統命令一樣,直接輸入命令,或是F4,不需要像CLP 一樣,要CALL 一下。

其實CMD 本質上也是執行CLP 或RPGLE(在編譯時指定),用起來,無非就是好看點,直接一些,除此之外的意義,似乎也就沒什么了。

舉個例子,比如我們查看一個文件中的內容時,可以使用SQL 來查看,也可以使用命

令RUNQRY 命令來實現(RUNQRY QRYFILE(文件名))。但在我們要頻繁查看文件

時,這兩種方式似乎都不是很爽,也就是說要輸入的內容都不是最少的,那我們可以設計一

個CMD,譬如說叫SEE,希望實現的最終效果,是在命令行輸入“SEE 文件名”,就

可以查看PF 文件中的記錄。那么,我們按如下步驟來實現:

1.建立一個CLP 程序,比如叫SEECLP,代碼如下

PGM PARM(&FILENAME)

RUNQRY QRYFILE(&FILENAME)

ENDPGM

2.編譯此程序

3.建立一個CMD 程序(即源代碼的屬性為CMD),代碼如下:

CMD PROMPT(' 顯示文件記錄 ')

PARM KWD(NAME)TYPE(*CHAR)LEN(10)MIN(1)+

CHOICE(' 顯示文件記錄內容 ')+

PROMPT('Display file record')

4.編譯此CMD,用F4,可見如下畫面:

Create Command(CRTCMD)

Type choices, press Enter.Command............> SEE Name

Library...........> FHSLIB Name, *CURLIB

Program to process command...> SEE Name, *REXX

Library...........> *LIBL Name, *LIBL, *CURLIB

Source file..........> FHSFILE Name

Library...........> FHSLIB Name, *LIBL, *CURLIB

Source member.........> SEE Name, *CMD

Threadsafe...........*NO *YES, *NO, *COND

其中,藍色字體顯示的,就是我們需要輸入這個CMD 要調用的程序名(默認值與

CMD同名),這里我們將此項內容填為SEECLP,表示SEE 這個CMD,調用的是SEECLP

這個程序

5.編譯成功之后,我們在命令行執行“SEE 文件名”,就可以看到指定文件的記錄。也可以用SEE + F4 的方式來使用

6.要注意,CMD 中,PARM 表示的就是CMD 命令的參數,參數的個數、類型、長

度都必須與其調用的程序相匹配,但名稱可以與其調用的程序中的參數名稱不一

樣,而且名稱前面不能有“&”字符。

7.在PARM 參數中,MIN(1),表示該項參數必須有值(即最小的有效長度為1),當

參數無值時,將會自動出現SEE + F4 的效果,同時該項參數高亮顯示。試一試

就知道了

第二篇:《程序員崗前培訓手冊》

程序員崗前培訓手冊

北京應用技術大學

目錄(CONTENTS)

前言

面試是雙向選擇

軟件公司研發技術崗位掃描與崗位職責

如何快速融入技術團隊(程序員入崗的注意事項)優秀程序員應具有的品質與習慣 談談學習方法

外包軟件、商品軟件、項目軟件簡介

前言

同學們經過在北京應用技術大學兩年的學習,都滿懷憧憬地向往程序人生的開始,也對即將走上的工作崗位和環境充滿了期待,期待通過程序來證明自我的價值。程序員,相信在很多同學眼中是一個有趣、特別、高薪、充滿艱辛而又非常神秘的職業,因為手下那一行行跳動的代碼不僅實現了生動的功能,同時也表達著程序員對人生的理解和追求。當程序員實現了一個獨到的創意之后準備熄燈休息時,天已蒙蒙亮…..當程序員看著用戶熟練地操作自己的軟件解決一個個復雜事件時,臉上那寫滿成就的微笑…..的確在這個行業里出現了太多的英雄人物和企業,而每一個英雄的事跡和成就都足以讓我們熱血沸騰、摩拳擦掌……

在同學們即將步入程序員崗位之前,需要對軟件研發相關職位的職責范圍與工作特點有所了解,掌握一些入職的基本技巧和注意事項,檢查自己的技能與行為習慣,有的放矢,提高面試和就業的成功率。入職后能盡快地融入到技術團隊,近而快速成長,成為團隊技術骨干和最優秀的職員。在工作中養成積極而良好的行為習慣和職業素養,為自己的職業發展創造一個良好的開端。

本手冊從面試、技術崗位職責、如何快速融入技術團隊、優秀程序員的品質與習慣、學習方法、外包軟件/商業軟件/項目軟件簡介等幾個方面闡述了同學們在踏入工作崗位之前應該了解的知識和注意事項。

面試是雙向選擇

一般同學都會誤認為面試時應聘者處于弱勢,要接受招聘者的挑選,從而從心理上承受很大的壓力,而影響自己正常的發揮和才能展示。其實大可不必,因為面試是雙向的,選人和擇業是平等的。況且現在市面上的用人單位或招聘崗位也是良莠不齊,甚至還有一些騙子公司,這就要求同學們在應聘時擦亮眼睛,注意分辨。當然大多數公司都是良性的,他們要么是已具規模,各部門及崗位功能分工很明確,他們會根據業務的發展或作為人才儲備而有針對性的招聘相關技術人員,而有的公司可能是剛剛成立,業務與核心技術還未形成,他們需要招聘到能為他們提供解決方案或創意的技術人員,所以對于這些類型的公司,他們對人才的渴求也都不亞于同學們對工作崗位的渴求,若是聘到一個優秀的技術人員對業務或項目的推進將會使公司獲得更大的利益,或者使公司的發展少走彎路甚至能改變一個公司的命運。相反,如果招不到合適的人才或者使用一個較差的技術人才,不但不能推進項目的進展,還要花費幾個月的培養時間和費用,甚至阻礙業務開拓甚至項目擱淺。所以當同學們想得到一個工作崗位的同時,也要看到企業更需要一個優秀的員工,二者是平等的。在面試時,同學們在一種非常平和的心態下,充分發揮,盡可能地展示自己已經掌握的技能,展示學習能力和發展潛能;另一方面也要盡可能地提前了解公司的背景和業務以及應聘崗位的職能,從而加以辨別和選擇。一旦本次面試不能成功,表明要么崗位不適合你,要么你不適合崗位,或者因為你本次的表現不佳,這都是很正常的,一定不要有挫敗感,要及時總結面試時的表現方式以及溝通技巧,若感覺自己的確能夠勝任該崗位,只是因為自己的臨場發揮不佳而沒有展示出自己的實際水平,也可及時和招聘公司聯系,經詢問確認對方沒有找到合適人選的情況下,表明誠意,請求復試機會。總之,若本次失敗,一定不要影響下一次的面試,要積極總結,為一下次面試作準備。

正常運營的公司因業務的不斷發展,人才需要不斷的更新、補充和儲備,所以他們一直都需要人才,況且公司每次組織招聘都會花費一大筆費用,也希望能夠找到合適的人才,所以公司面試時一般不會出太吊鉆的問題來為難你,同學們也不要過分擔心。

另一方面,同學們在堅信“天生我才必有用”的同時,也要正確看待現在的就業形勢,對第一份工作也不要過于理想化,要擺正心態,堅持從基層做起,先就業再擇業,職場上“騎驢找馬”也未必不是一種現實的理性選擇。

總之,面試是雙向性的,是招聘單位與同學們相互展示、相互認識、互相挑選的一次溝通過程。同學們 在求職的過程中,要正確看待面試,放下思想包袱,充分重視,充分準備,從容應對。

軟件公司研發技術崗位掃描與崗位職責

一般中小型軟件公司設置的技術崗位有:研發總監、項目經理、需求分析人員、系統架構與分析人員、數據庫設計人員、程序員、項目助理與文檔專員、測試人員、技術支持(售前/售后)、美工或網站前臺人員等,這些職位的工作聯系非常密切,根據公司規模的大小,以上職位可由一人或多人兼任,比如一個小型的軟件公司可能只有一個人完成軟件的總體設計、架構、編碼、測試、文檔等工作。這些崗位的職責范圍大致是:

研發總監:全面負責研發及技術部門的整體工作。

項目經理:在整個項目開發過程中組織項目所需的各項資源,對項目的范圍、項目的質量、項目時間以及項目成本進行管理與控制。根據項目范圍、質量、時間與成本的綜合因素的考慮,進行項目的總體規劃與階段計劃,保證項目組目標明確且理解一致;在項目生命周期的各個階段,跟蹤、檢查項目組成員的工作質量;保證項目在預算成本范圍內按規定的質量和進度達到項目目標。

需求分析人員:項目前期與客戶方打交道最多的人,對于客戶來說,他可以代表整個項目組,對于項目組成員來說他的意見可以代表客戶方的意見,項目組內所有與客戶需求相關的事情必需得到他的認可。他的工作主要是:

1、在項目前期根據《需求調研計劃》對客戶進行需求調研。

2、收集整理客戶需求,負責編寫《用戶需求說明書》。

3、代表項目組與用戶溝通與項目需求有關的所有事項。

4、代表客戶與項目組成員溝通項目需求有關的所有事項。

5、負責《用戶需求說明書》得到用戶的認可與簽字。

6、負責將完成的項目模塊給客戶做演示,并收集對完成模塊的意見。

7、完成《需求變更說明書》,并得到用戶的認可與簽字。

8、協助項目組有關人員對需求進行理解。

系統架構與分析人員:是項目的總體設計師,組織構建新產品的開發與集成、新技術體系等,也可以理解為技術總監。是在技術上對所有重要事情做出決定的人。系統架構在整個軟件開發過程中都起著非常重要的作用,并隨著開發進程的推進而其職責或關注點不斷地變化。

1、在需求階段,負責理解和管理非功能性系統需求,比如軟件的可維護性、性能、復用性、可靠性、有效性和可測試性等。審查客戶和市場人員所提出的需求,確認開發團隊所提出的設計;組織開發團隊成員和開發過程的定義;協助需求分析師完成《用戶需求說明書》、《需求變更說明書》等。

2、在設計階段,負責對整個軟件架構、關鍵模塊、接口的設計。對系統進行分析與建模,完成《系統架構說明書》、《系統概要設計說明書》、《系統詳細設計說明書》。

3、編碼階段,成為程序員的顧問,負責重點代碼檢查,并且經常性地要舉行一些技術研討會、技術培訓班等;

4、測試及實施階段,隨著軟件開始測試、集成和交付,集成和測試支持將成為工作重點;

數據庫設計人員:根據《系統架構說明書》負責進行數據庫選型與建模。由于數據庫是整個系統運行的核心,數據庫設計的好差直接影響著整個系統的開發效率和系統運行的優劣。他是項目組中唯一能對數據庫進行直接操作的人,對數據庫結構的每一次改動都要得到他的認可。主要職責:

1、根據數據庫建模結果,繪制數據庫關系圖。進行數據庫建庫以及數據庫進行初始化操作。

2、對數據庫進行維護、備份、恢復、同步。

3、負責客戶數據的導入導出。

4、根據《系統詳細設計說明書》編寫對應的視圖、存儲過程、函數、觸發器等。

5、對項目組其它成員進行SQL方面的指導。

6、為測試建立相關測試數據。

程序員:負責系統的最終代碼實現。主要職責:

1、參與需求調研、項目可行性分析、技術可行性分析和需求分析。

2、協助完成《系統詳細設計說明書》,并根據《系統詳細設計說明書》進行編碼實現;

3、對自己代碼進行復查,并進行簡單的測試。

4、撰寫相關技術實現或功能描述文檔。

5、負責向項目經理及時反饋軟件開發中的情況,并根據實際情況提出改進建議。

6、參與軟件開發和維護過程中重大技術問題的解決。

項目助理或文檔專員:協助項目經理在項目日常管理和數據分析方面的工作,進行與項目有關的協調工作,編寫項目進度報表,參與組織項目協調會,組織項目非技術文檔的編寫、傳遞與歸檔,以及與市場人員或其他部門的日常溝通,協助項目資源協調工作。跟蹤項目進展。項目或軟件包的打包、發布以及授權鎖的制作等工作。

測試員:負責實施軟件測試。測試是整個項目系統中非常重要的一個環節,項目質量的保證,他的主要工作就是找到項目中存在的不合理、不合格的部份,并要求項目其它成員按其給定的項目質量完成項目。保證了系統功能實現是否與功能設計和需求定義一致。主要職責:

1、根據軟件項目規范編寫測試計劃,設計測試數據和測試用例。

2、采用合適的測試方法實施軟件測試,形成各階段的測試報告,并對軟件問題進行跟蹤分析和反饋,推動測試中發現問題及時合理地解決。

3、完成對產品的集成測試與系統測試,對產品的功能、性能及其他方面的測試負責。

4、協助程序員進行軟件代碼檢查,提出對軟件的進一步改進的要求。

技術支持人員:主要負責軟件產品或項目在技術層面上與客戶的交流,根據工作重點分為售前支持和售后支持。

? 售前支持:是銷售人員和開發人員的橋梁,協調銷售人員、用戶、開發人員的關系,制作產品功能演示PPT文檔或多媒體資料,將公司的技術實力向用戶展示,技術標書的撰寫,定期采集、分析和整理用戶的需求,配合銷售制訂產品銷售策略,從技術上支持市場銷售業務等。

? 售后支持:負責編寫《用戶手冊》、《操作手冊》,制作系統操作視頻教程等多媒體培訓教材;負責系統實施(包括系統安裝、用戶培訓、系統試運行等),協助用戶進行“用戶確認測試”和編寫《確認測試報告》;通過電話、網絡、及時通訊等多種渠道解答用戶在使用中的問題,提供售后服務。收集、整理用戶的建議等。

美工或網站前臺人員:負責完成軟件設計師安排的功能界面設計和簡單網站的設計。

1、負責對項目整體色彩的調配。

2、向系統分析師提出項目美化的建議。

3、為BS 項目提供一套或幾套CSS樣式表及HTML結構表

4、為CS項目提供符合項目內容的靜態、動態圖片。

5、并為程序員提供界面指導。

如何快速融入技術團隊

——程序員入崗的注意事項

同學們剛剛結束學校的集體生活,面對新的工作環境、新領導、新同事、新任務、新的制度、新的生活節奏,很多的變化需要你盡快適應,很多的事情需要你獨擋一面,而又有許多事情需要你與同事通力協作來完成…… 以下是新程序員入職后盡快融入技術團隊應注意的事項:

1、認真學習公司的發展背景與歷程、主營業務以及規章制度。

進入公司前可能對公司已經有了一些了解,入職后,相關人力資源管理部門會組織培訓,解讀公司文化,介紹公司發展背景、主要職能部門以及主要業務特點,學習公司考勤、人事、辦公等管理規定和規章制度。有些新入職的程序員或技術人員,認為這些不含技術成分沒有必要花精力去學習,其實這種認識是錯誤的,公司文化及各種制度是整個公司的靈魂,是公司正常經營活動保障和員工行為的一種約定,新職員只有對公司的發展背景和經營狀態有充分的了解,接受公司文化,高度認同公司的核心價值觀,嚴格遵守各種規章制度,才能自覺地規范自己的行為習慣,在工作學習中才有主動性,遇到工作壓力時也能坦然地接受,不會有抵觸心理,從而能更快地推動自己的工作。

2、積極學習業務知識、類庫及現有程序資源,把握學習的技術方向。

程序員入職后,若有一個成熟的開發團隊,一般都會有一個老職員來帶領學習,這一階段主要有三個方面的學習任務,第一是公司業務知識,因為程序員只有對業務知識熟悉了,才能更好的理解和把握功能需求,比如做通信方面的軟件,你要學習一些通信行業知識;若做財務軟件,你要了解一些財務知識。第二,現有的類庫是公司開發部門積累的程序資源,學習和使用它可以規范統一程序的風格,提高開發的速度,掌握并能使用這些資源,可使你盡快與老職員有程序上的共同語言。第三,學習并加強在此領域的編程技能,因為在學校學習的是通用的知識,掌握的是一種知識導入與學習的方法,那么在公司應用方面也許要求你某一個方面很精通,比如網站的前臺、數據庫、圖形處理、多媒體、網絡編程等某些方面的技能需要強化。案例:

小張(男)和小胡(女)是同一個大學畢業的應屆生,在2005年4月份同時進入公司做技術支持,當時兩人的工資都是每月1500元,而兩年后的今天小胡已是研發部的一個程序員,工資是每月4300元,而且是公司重點培養的對象之一。小張現在還是在做技術支持,工資是每月2600元,他們兩人可以說是起點相同,但兩年的發展卻讓他們有了明顯的差距,小胡比較愛學習,工作非常踏實,對業務知識也掌握得非常精通,而且在做技術支持工作的時候,業余時間學習編程,由于做技術支持與程序員交流比較多,小胡抓住了這個學習編程的機會,但她從不在公司上班時間學習程序,在做技術支持工作時,她上班時間鉆研業務知識、軟件需求、學習程序實現的思想,業余時間練習代碼。在做技術支持一年后,她通過了研發部的考核,進入研發部開始做編程。而小張與她對比就不同了,他只是做好本質工作,沒有潛心學習,對業務知識、軟件知識只是一般了解,工作上很業績平平,總體上不出色也沒出大的差錯。工資漲得當然也慢,小張和小胡的起點相同,但小胡比較主動學習,很明顯他們兩個在職場上的差距就拉開了。

3、展示進步,創新思考,體現價值。

入職之初,通過積極的學習與適應,應該說進步是非常快的,要及時的總結,并把工作學習的總結和進步程度及時向主管匯報(口頭、郵件、書面),階段工作總結應包括以下幾點:已經完成的工作、技術上的進步、業務上的進步、從學生到職員心態上的轉變、八小時之外的學習狀態等。這樣一方面可以疏理一下知識結構,把握自己的學習階段,一方面讓主管根據你的知識結構和技能狀態有針對性地給你分配合適的任務。

另外在工作當中也要注重思考,對工作進行適當的改進,并提出改進意見,這樣能更快是體現出你的進步和工作價值。

4、積極參加團隊活動,適應團隊文化,創造與團隊成員友好而積極的協作氛圍。

能盡快適應團隊文化,與同事友好溝通是任何崗位都需要的職業素質,只是在研發團隊里要顯得尤為重要,由于研發工作的重要與特殊性,若在軟件商品化和產品化的開發階段,不良的溝通協作可能導致項目的流產。另外,部分程序員寫程序久了都會很注重與機器或代碼交流,有的不容易與新職員交流,有的他們因有大量的工作任務而顧不上,有的是因為他們有太多的思想與創意,和一個新來的職員沒有共同語言,有的是人為設置“技術壁壘”(因擔心新職員威脅到自己的崗位,而不愿傳授一些知識)。那么新職員一定不要因為他們沒有主動與你交流而放棄交流,或者認為自己被冷落而與逐漸遠離團隊,而是要在適當的時間與他們主動交流,主動向他們請教,積極參加團隊的集體活動,創造與同事交流合作的良好氛圍。要盡可能地為團隊多做貢獻,不要因為多干一些工作或多加一點班,就有不良的情緒,從而影響正常的溝通與交流。另外,在研發團隊里的溝通與協作,還體現在代碼上,自己設計的功能模塊是否能為別人提供良好的說明和程序接口。總之,與同事友好愉快的協作,盡快融入研發團隊,是新入職的程序員技術快速進步和穩定職位的重要因素。

5、正確面對工作壓力,學會釋放“厭職”情緒。

許多同學進入一個新的工作環境,面對的是很多新事物,感覺工作節奏太快,工作壓力太大。其實新職員有工作壓力也是正常的,從職業生涯發展的角度來看,這種工作壓力是非常必要的。同學們在進入公司后,要勇于接受工作壓力,把這種壓力作為進入初職鍛煉的良好機會,樹立良好的心態,不要逃避,更不要產生“厭職”情緒,公司還正在培養你,你卻選擇退縮而自炒“魷魚”。工作中要學會積極與同學溝通,注意工作方法,釋放和減輕壓力。其實我發現一些新職員說工作壓力大,做事不順心,仔細分析之后可以發現他們感覺的工作壓力大與“不合群”有很大的關系。有些同學到公司后,一坐下就是八小時,語言和行為與同事格格不入導致他不敢言語不敢行動,下班時間到了,其實他不是工作學習本身的累,他們感到更累的是“心”。這些新職員在工作中總是希望別人主動接近自己,自己卻不會主動與人交流,時間長了,同事覺得他“不愛說話”,也就逐漸放棄了與他的交往,這時他又會感到被排擠,感到孤獨,心理壓力就會增大。另外技術上單打獨斗,不能利用別人的資源,因此完成相同的工作,付出的努力和壓力就要比其他同事大得多。所以新職員在入職之初,一定要正確看待工作上正常的工作壓力,學會與團隊成員友好相處,創造一種“如魚得水”的工作氛圍,那么真正技術上的壓力都不會成為問題的。

如果公司還沒有成熟的開發團隊,需要你一個人承擔開發項目,著手組建開發團隊,那么就要求你充分一切時間,利用網絡資源,有技術難點及時到網絡上尋求幫助,同時與相關部門人員密切合作,保持動態及時的溝通,及時報告工作進度,爭取盡快擬出解決方案或產品。

優秀程序員應具有的品質與習慣

? 善于理解與把握需求

程序員的勞動成果就是滿足需求的程序,那么在動手寫代碼之前,只有完整地理解一個模塊的需求才能做出好的程序,優秀的程序員在分析需求的基礎上,應該能抓住問題的關鍵技術,從而能夠建立合適的數據模型,盡量在代碼中少走“彎路”。? 善于學習與總結

當然善于學習,是對任何行業任何職業的最根本的要求,對于程序員,這種要求就更加高了。其實研發部門招聘程序員,其實并不一定注重你現在能做什么,而更注重的是你的學習能力、你的編程潛力,因為程序員是很容易被淘汰,很容易落伍的職業,一種技術可能僅僅在三兩年內具有領先性,若你不能跟進新的技術,不學習新的技能,那么不斷出現的新技術會使你顯得非常笨拙。善于總結,也是學習能力的一種體現,每次完成一個研發任務,完成一段代碼,都應當有目的的跟蹤該程序的應用狀況和用戶反饋,隨時總結,找到自己的不足,這樣逐步提高,才能成長起來。

? 規范化的編碼習慣

養成良好的編碼習慣,比如:變量命名清晰,語句嵌套明確,函數具有獨立功能,適當注釋等等,因為這些不但有助于代碼的移植和糾錯,也有助于不同人員之間的協作。? 良好的文檔習慣

良好的文檔是正規研發流程中非常重要的環節,作為代碼程序員,30%的工作時間寫技術文檔是很正常的,而作為高級程序員和系統分析員,這個比例還要高很多。缺乏文檔,一個軟件系統就缺乏生命力,在未來的查錯,升級以及模塊的復用時就都會遇到極大的麻煩。? 代碼復用性,模塊化思維能力

復用性設計,模塊化思維就是要程序員在完成任何一個功能模塊或函數的時候,要多想一些,不要局限在完成當前任務的簡單思路上,想想看該模塊是否可以脫離這個系統存在,是否可以通過簡單的修改參數的方式在其他系統和應用環境下直接引用,這樣就能極大避免重復性的開發工作,如果一個軟件研發單位和工作組能夠在每一次研發過程中都考慮到這些問題,那么程序員就不會在重復性的工作中耽誤太多時間,就會有更多時間和精力投入到創新的代碼工作中去。? 團隊精神與溝通協作能力

這是程序員應該具備的最基本的,也是最重要的安身立命之本。軟件或項目的各模塊功能需求的理解準確,一個功能實現的修定,是否會影響其他模塊等,沒有充分及時的協作對一個項目來說幾乎是不可想象的。我做了幾年開發,感覺溝通真的太重要了,其實軟件研發過程中最重要的不是技術問題,而是管理中的溝通問題,比如初級程序員或許是礙于面子或其他原因,不懂的問題也不想問,總是把問題掖著藏著,而高級程序員又不理解初級程序員的開發任務總是完不成,其實可能是高級程序員不了解初級程序員的真正困難,或者沒有把要實現的邏輯和思路講解清楚。合作起來總會有一些不透徹,要么一個問題討論多次依然是問題沒有結果,要么是有些問題根本不反映,大家都掖著藏著,報喜不報憂,待到問題暴露已無法挽回,嚴重的阻礙了項目的進度。所以我最好的建議就是,高級程序員應該把問題講到明白為止,初級程序員應該把問題問到明白為止,并且不僅僅是口頭上講明白、聽明白,還一定要形成文字,現在網絡非常方便,公司都會有企業郵箱,把問題的討論過程通過mail的形式記錄保存,明確確認,這樣障礙才能去除,項目才能得以順利進展。

案例1:

陳某是北京某重點大學自動化專業的畢業生,編程基礎知識非常扎實,在學校學習期間也有許多代碼積累,從技術上說應該是很有潛力的,但他性格有點孤僻,不太容易與同事溝通,當時錄用他時公司是看在他的編程基礎很好,以為在研發部大家多帶動他,應該會好些的。進公司有兩個多月了,一次在做某油田項目中負責其中一個小模塊的開發,在開發過程中我經常詢問他有沒什么問題,他每次都有些含糊地說沒有。可當項目交付的時候,發現他做的某一功能與當初功能定義不符,客戶就抓住這一點說與合同中需求描述不符,由此延期支付28萬的余款,使該項目后期維護起來非常被動。而導致這一結果就是陳某在做程序時有問題自己繞過去了,沒有及時與項目組成員交流,而獨自采用了他熟悉的一種解決辦法。項目匯報會剛結束,人事部門就通知陳某交接工作,到財務結算工資…..文摘:下面這故事《請按一下九層》我一直和我的同事們分享。是《讀者》中的一篇文章: 這是全市最忙的一部電梯,上下班高峰時期,和公共汽車差不多,人挨著人。上電梯前和公司的人力資源總監相遇,說笑間,電梯來了,我們隨人群一擁而進。每個人轉轉身子,做一小小的調整,找到了一種相對融洽的關系。這時,一只胳膊從人逢中穿過來,出現在我的鼻子前頭。我扭頭望去,一個小伙子隔著好幾個人,伸手企圖按電鈕。他夠得很辛苦,好幾個人剛剛站踏實的身子不得不前挺后撅,發生了一陣小小的騷動。

那個人力資源總監問道:“你要去哪一層?”“九層。”有人抬起一個手指頭立刻幫他按好了。沒有謝謝。

下午在樓道里又碰到那個人力資源總監。“還記得早上電梯里那個要去九層的小伙子嗎?”她問我。

“記得呀,是來應聘的吧?”九層,人力資源部所在地。“沒錯,挺好的小伙子,可我沒要他。”“為什么?”

“缺少合作精神。”她露出一副專業HR的神情,“開口請求正當的幫助對他來說是件很困難的事情,得到幫助也不懂得感激。這種人很難讓別人與他合作。”

我點頭稱是。如果那個小伙子坦然而自信地說一句“請按一下九層”,結果會怎樣呢?大家不但不會反感他的打擾,而且幫助他的人還會心生助人的快樂,最后他也能得到想要的工作。

這個故事表明,良好溝通不僅僅體現在禮貌地說聲“請”、“謝謝”,而是一個職員能夠創造愉快、高效、和諧工作氛圍的素質和習慣。

? 時刻修定自己的認識和行為與公司的核心價值觀(短期目標、長期目標)保持一致

公司或研發團隊在什么時段做什么樣的項目,或者根據項目進度的計劃,在什么時間做什么功能模塊,作為程序員要高度地與這些目標保持一致,不要在關鍵時刻“掉鏈子”,這是最重要的。

案例:

小張是公司里的轉正不久的程序員,很聰明,對新技術接受很快,缺點就是非常的貪玩,對項目組的事缺乏主動性和責任心,平時的工作中主管已經提醒過他多次要注意工作的責任心,但他都不太放在心上,對事依然是敷衍。一次在做上海鐵通的項目中,小張負責項目中的一個模塊,當軟件架構出來以后,需要出差上海為客戶現場演示和進一步確認需求,由于合同還沒有正式簽下來,所以此行的技術交流對公司能不能簽下這個項目至關重要,公司派由我和小張在內的項目組4人出差上海,臨行前我們多次開會研究方案,確保拿下這個項目,下午到了上海之后約好第二天上午與客戶見面,正當大家為第二天的交流捏一把汗,積極準備的時候,小張卻說是第一次到上海,要求先去外灘看夜景,在得到項目組的否定之后,小張竟一個人偷偷到外灘看夜景至到深夜才回到賓館。第二天的技術交流會上,小張負責的模塊問題最多,雖然最后整個項目的交流還算成功,公司總算簽下了這個項目,但小張也被辭退了。原因很簡單,小張一直沒有把公司的事放在心上,項目組出差第一目標是與客戶交流好,拿下項目,而小張出差上海的第一目標是看一下外灘。所以象小張這樣的技術上不管有多么出色,但總在公司的關鍵時刻“掉鏈子”,被公司辭退也是早晚的事。就在寫此案例的前幾天,在地鐵上我偶遇小張,談話中得知他被辭退后半年內又經歷了一家公司。而此刻他又在匆匆地找工作。

談談學習方法

說起學習的方法,其實每個人都有自己的學習方法,也許這種方法對我來說有用,但不見得就對所有的人有用。所以,不要盲目的跟著別人的學習方法學習,要思考屬于自己的學習方法。但以下幾個原則是要遵守的: ? 堅持學習。首先要有毅力,對編程的狂熱也可以在一定程度上起到幫助。學習編程應該說要經歷好奇——困難——容易——郁悶——成就感——困惑——輕松的幾個階段的循回,不管哪個階段都需要天天學習,堅持每天都要進步,不能半途而廢,培養一種堅持克服困難的毅力。案例: 記得開發團隊里有一個基礎不是太好的程序員,剛入職兩個多月,表現一般,有一天早上他眉飛色舞地在講述昨天電視中的一個情節,我聽到后就說了一句:“你還好意思說你看電視?”。他立刻明白了,就沒說什么。從此他的進步是可以說是突飛猛進的,代碼的質量和工作效率明顯上了一個臺階,對項目的推動也是有目共睹的。幾個月后的一次公司慶典上,他被評為“進步最快員工獎”,獎金3000元。獎后在他給我的Mail中發現了這句話:“你說我看電視的那句話改變了我的學習狀態….我現在是馬桶上、公交車上都在看書或筆記。”

? 堅持實踐。當你學到了一種新的技術或知識時,多實踐是鞏固學習的一種最好最有效的方法。這個實踐不是照著書上的例子做一遍,而是根據自己的能力,給自己出題,然后去完成它。只有這樣,你才能發現自己的不足,同時又增加了編程經驗。要成為合格的程序員,光會寫代碼是遠遠不夠的,更重要的是在實踐中思考創新。實踐的多少決定著“高手”和一般程序員界線,高手們并不是天才,他們是在無數個日日夜夜中磨煉出來的。成功能給我們帶來無比的喜悅,但實踐的過程卻是無比的枯燥乏味。

? 掌握編程思想。學一門語言,不能僅僅是語言,還要注重語言背后的思想方法,獲得提出問題,分析問題,解決問題的能力,不是為編程而學習,因為編程語言和我們日常所說的語言一樣,日常所說的語言是一種思想的表達,而編程語言是一種功能的實現。要學習它是如何來解決某一問題的,為什么要這樣去做,他總是要符合客觀事實的,存在某種邏輯,數據的組織,信息的傳遞,然后看該怎么樣用編程語言來表達自己的想法。

? 多問、多總結、多記筆記。“三人行必有我師”,也許在一次和別人不經意的談話中,就可以迸出靈感的火花。著名的交換蘋果理論說的是:“你有一個蘋果,我有一個蘋果,當我們互相交換蘋果后,我們仍然互得一個蘋果;你有一個想法,我有一個想法,當我們互相交換想法,我們則互得兩個想法”。遇到問題,上網查看一些技術論壇,看看別人對同一問題的看法,會給你很大的啟發。在這個網絡時代,資料到處都有,無論什么先進的技術,你可以問身邊的高手,問網上的同仁,只要查到資料,快的學上幾天慢的一兩個月也能學會,學會后總結出技術要點記下來,可寫在本子上也可寫在Blog上,編程技能的提高靠的是代碼的積累,把所有自己的代碼保存起來,并附有適當的筆記,這樣,到用到時才能信手拈來,才能獲得踏踏實實的進步。所以現在已沒有寫不出的程序了,寫不出不是因為不夠聰明,而是因為你沒有耐心和找 BUG 的細心。

? 不鉆“牛角尖”,只抓主要問題,一些不影響工作的難點只要會用就行,這也體現了OOP的思想,你只要知道一個技術能完成什么功能就可以,至于它是如何實現的可暫時放一放,有時回過頭來再看就不是什么難點了。當你遇到技術障礙的時候,不妨暫時遠離電腦,看看窗外的風景,聽聽輕音樂,和朋友聊聊天。當重新開始工作的時候,我會發現那些難題現在竟然可以迎刃而解。

外包軟件、商品軟件、項目軟件的操作模式簡介

軟件外包

就是一些發達國家的軟件公司將他們的一些非核心的軟件項目通過外包的形式交給人力資源成本相對較低的國家的公司開發,以達到降低軟件開發成本的目的。因為軟件開發的成本中70%是人力資源成本,所以,降低人力資源成本將有效地降低軟件開發的成本。軟件外包已經成為發達國家的軟件公司降低成本的一種重要的手段。軟件外包的大幅度增長為人力資源成本相對較低的印度和中國帶來了新的發展機會。企業與企業之間的外包就是:企業(A)為了專注核心競爭力業務和降低軟件項目成本,將軟件項目中的全部或部分工作發包給提供企業(B)完成; 商業軟件 商業軟件(又叫“商品軟件”)就是由商業公司在調研大多數行業用戶的需求上開發的軟件,該軟件基本上能滿足這些用戶的需求,而且它的功能不會因個別或少數用戶的要求而改動。隨著互聯網的興起和軟件授權銷售方式的普及,商品軟件的銷售可軟件公司直銷、代理銷售、專業下載網站銷售等多種渠道,軟件授權許可的銷售模式往往是根據使用商品軟件的用戶數和安裝該軟件的計算機數來收取許可費用。項目軟件 就是軟件公司專門為某個客戶開發的軟件系統,該系統由委托開發的客戶配合調研需求,“量體裁衣”,在關鍵階段雙方可派技術人員互相“滲透”,密切合作,共同完成系統的開發和實施以及運行。項目軟件與外包軟件的操作模式有相同性也有不同性。產品經理與項目經理

簡單地說,產品經理是做正確的事,其所領導的產品是否符合市場的需求,是否能給公司帶來利潤的。而項目經理是把事情做正確,把事情作得完美,在時間,成本和資源約束的條件下完成目標。項目經理要對某個產品進行開發的管理,負責開發的進度,開發過程中的協調等有關開發方面的問題,他最大的目標是時間第一、立項目標達成第一。并不會很尊重產品本身的市場需求以及業務邏輯的問題。

而產品經理是橫向管理的,也就是說他將負責某個產品或者某個產品線從商業計劃市場競爭開發需求推廣方案渠道策略等各個方面。產品經理一個產品線從頭到尾的重要參與人。

第三篇:RPG AS400程序員培訓手冊

2.8.4.4 O--R

ON-ERROR(On-Error)

沒用過

OPEN {(E)}(Open File for Processing)打開文件

Factory 1 Operation Factory 2 Result HI LO EQ

OPEN 文件名

OPEN 后面的目標,必須是在當前程序中已聲明的文件名(不是文件的記錄格式名),而且在OPEN 操作之后,在程序結束之前之前,必須有對應的CLOSE 操作。

使用OPEN 操作,文件在聲明時,必須使用USROPN 關鍵字(詳見D 行說明)。

ORxx(Or)邏輯判斷—或

Factory 1 Operation Factory 2 Result HI LO EQ

FLD01 IFGT FLD0

3FLD01 OREQ FLD0

2等價于

IF FLD01>FLD03 OR FLD01=FLD02

與IF、IFxx,AND、ANDxx 類似,RPGLE 的寫法OR,比RPG 的寫法ORxx 要靈活,而且可以用來表達一些復雜的邏輯關系。有鑒于此,所以通常IF 語句中,我會以OR 為主,基本不用ORxx。如果在編程序方面,公司/項目組無硬性要求,那我覺得還是少用ORxx 吧,總覺得這種寫法的邏輯關系看起來不直接,尤其是有很復雜的AND,OR 時。

OTHER(Otherwise Select)分支語句的判斷

與分支語句SELECT 一起使用,表示不符合上述所有條件時的操作,如下:

Factory 1 Operation Factory 2 Result HI LO EQ

SELECT

WHEN 條件判斷1 處理語句1

WHEN 條件判斷

2處理語句2

OTHER

處理語句

3ENDSL

在這個例子中,當滿足條件判斷1 時,運行處理語句1,運行結束后跳至ENDSL 處;

如果不滿足條件判斷1,則程序繼續向下執行,判斷是否滿足條件判斷2。當滿足條件判斷2 時,運行處理語句2,跳至ENDSL;當不滿足

當不滿足條件判斷2 時,程序繼續向下執下,當讀到OTHER 操作碼時,無條件運

行處理語句3(即當程序當前不滿足以上所以條件判斷時,則執行OTHER 之后的語句。

處理語句允許有很多句;

條件判斷可以寫得很復雜,也允許對不同的字段進行判斷;比如說C 語言也有分支語

句switch,但是這個語句只能對一個字段進行分支判斷,ILE 語言與它不同,允許對不同的字段進行判斷

就我目前掌握的測試情況,上述的SELECT—WHEN--OTHER—ENDSL,其實也可以

寫做:

IF 條件判斷

1處理語句1

ELSEIF 條件判斷2

處理語句2

ELSE

處理語句3

ENDIF 即WHEN 與ELSEIF 是類似的,這樣說,應該可以明白了吧。

總之,SELECT—ENDSL 是一個很好用的語法,尤其是在表示很多不同的分支處理時。

OUT {(E)}(Write a Data Area)

沒用過,講數據域的。

PARM(Identify Parameters)定義入口參數

Factory 1 Operation Factory 2 Result HI LO EQR

*ENTRY PLIST

PARM FLD01

關于具體內容講解,詳見前面所說“入口參數”一章。

允許做為入口參數的有:普通變量、結構變量、數組變量

關于PARM、PLIST,還有一種在Factory 1,Factory 2 也填寫變量或指示器的用

法,不過我不知道它具體表示什么意思,也不知道該怎么用。請用過的來補充。PLIST(Identify a Parameter List)同上

POST {(E)}(Post)

沒用過

READ {(N | E)}(Read a Record)讀取記錄

1.基本語法:

Factory 1 Operation Factory 2 Result HI LO EQ

READ 文件記錄格式名 45 46

READ后面跟的,必須是聲明的文件記錄格式名;

LO 指示器表示鎖表指示器,當在指定的時間(CHGPF,WAITRCD 項可看到),需要讀取的記錄仍被鎖,將會打開LO 指示器,即*IN45=’1’;

EQ指示器為是否讀到指示器。當未讀到仸何記錄時,打開EQ 指示器,即*IN46=’1’

2.當文件在程序中,是用只讀的方式聲明時,READ 操作并不會造成鎖表; 如果文件在程序中是用修改的方式聲明,READ 操作成功后,該記錄被鎖;直到執

行解鎖操作(UNLOCK,或UPDATE),或READ 該文件的其它記錄,才會解鎖

如果文件是用修改的方式聲明,但希望READ 操作不鎖表時,那么就用READ(N),即

Factory 1 Operation Factory 2 Result HI LO EQ

READ(N)文件記錄格式名 45 46

這樣讀文件,就不會鎖記錄,但是同時也不能修改記錄。如果需要修改記錄,那么 在修改之前(包括對文件字段賦值之前),還必須再對該記錄進行一次定位操作(比如

CHAIN、READ 語句均可)。也就是說,如果要修改記錄,必須先鎖住當前記錄(很合理吧)

3.當執行READ 操作時,程序是根據游標當前在文件中所指向的位置,順序讀取下

一條記錄。關于游標是如何指向,還不是一個很簡單的問題,所以將會在下一章“數

據庫相關知識”中具體講解。

4.執行READ 操作時,允許聲明的文件沒有鍵值。(即PF 文件)

READC {(E)}(Read Next Changed Record)

沒用過,讀下一次修改過的記錄?

READE {(N | E)}(Read Equal Key)讀取鍵值相等的記錄

語法與READ 操作碼大致一樣,這里不再重復,只說不同的:

假設程序中已聲明邏輯文件PFFHSL3(鍵值為FHS01+FHS02)

Factory 1 Operation Factory 2 Result HI LO EQ

FHSKEY KLIST

KFLD FLD0

1KFLD FLD02

FHSKEY SETLL FMTFHS DOW 1=1

FHSKEY READE FMTFHS 1

5IF *IN15=’1’

LEAVE

ENDIF

ENDDO

這段話的意思,就是定義組合鍵值FHSKEY,然后根據這個FHSKEY 在邏輯文件

PFFHSL3 中去定位,循環讀取PFFHSL3 中,FHS01、FHS03 與FLD01、FLD02 相等的記

錄。當讀取記錄結束,或鍵值不等時,退出循環(*IN15 是EQ 指示器)。如果將READE 操

作碼換成READ 操作碼的話(當然,Factory 1 處也就不能有值),就沒有“鍵值不等時退出

循環”這一層意思,只是讀不到記錄時就退出循環,但有時我們使用邏輯文件,僅僅是需要

它的排序,而不需要讀不到鍵值相等的記錄就退出循環。所以說,使用READ 操作碼,還

是READE 操作碼,需要根據實際的要求來決定。

以上的Factory 1 處填寫值的系統處理,當READE 操作碼在Factory 1 處未填寫值時,系統實際上是將當前的值與讀到的上一條記錄的關鍵字進行比較,而不是與SETLL 時的鍵

值做比較(讀第一條記錄不做比較!),如果鍵值不等時,置EQ 指示器為1。也就是說,如果沒有與FHSKEY 鍵值相同的錄,那么系統并不是直接找開EQ 指示器,而是會一直保

持正常地往下讀,直到找到與讀到的第一條記錄關鍵字不同的記錄,才會打開EQ 指示器,所以要注意。

READP {(N | E)}(Read Prior Record)讀取記錄—游標上移

簡單來說,READ、READE 操作時,游標在數據文件中,是下移的;即讀完第一條記

錄,游標指向第二條記錄;讀完第二條記錄,游標指向第三條記錄,依此類推,直至最后一 條記錄。但READP 則正好相反,游標是上移的,即讀完第三條記錄后,游標指向第二條記

錄;讀完第二條記錄后,游標指向第一條記錄,直至讀完第一條記錄。一般來說,用READ、READE 的概率會比READP、READPE 的概率高得多,不過在某些情況下,使用READP 操作,又的確會很省事,這個一時間想不起例子來,大家可在編

程序時多實踐。

READPE {(N | E)}(Read Prior Equal)

雖然我沒用過,但猜想它應該就是指游標上移,按鍵值去讀取文件。與READP 的關系,就類似于READE 與READ 的關系。

REALLOC {(E)}(Re-allocate Storage)

沒用過

REL {(E)}(Release)

沒用過

RESET {(E)}(Reset)

將數據結構賦值成為初始值。

注意是初始值,不是清空。如定義結構:

D FHSDS DS

D FHS01 10 INZ(’ABCD’)

D FHS02 5 INZ(’EFGH’)

那么,不管對該結構如何賦值,當執行語句: C RESET FHSDS

之后,FHS01 將會變成’ABCD,FHS02 將會變成’EFGH’,即恢復成為初始值。

RETURN {(H | M | R)}(Return to Caller)

RETURN 是程序結束。

在前面,“簡單的程序流程”中,我們講過,“SETON LR” 與RETURN 這兩句話一

起,做為程序的結束。這里,再詳細解釋一下兩者之間的區別,以及關系: 如果不寫RETURN,只寫“SETON LR”,程序執行完最后一句之后,將會再從第一

句開始執行,造成死循環。在簡單的程序流程這個例子中,程序原來只想修改讀到的第一條 記錄,而如果沒有RETURN 的話,將會把所有的記錄都修改掉,直到最后找不到可修改的記錄,然后系統報錯,異常中斷。(這種離奇的現象現在又測試不到了,可能是當時寫錯程 序了?把F 寫成了P?不管它,當是我寫錯了,總之RETURN 是表示程序結束,沒有

RETURN,主程序無可執行的語句時,它也會結束;如果RETURN 出現在主程序的中間,那么RETURN 后面的語句將不會執行)

如果只寫RETURN,不打開指示器*INLR,根據blogliou 所說 “程序不會強制將內存

中的數據寫到磁盤中。400 缺省的是BLOCK 輸出,即數據記錄滿一個BLOCK 塊時才會將

這一組記錄寫到磁盤上。那么如果這時BLOCK 沒滿,數據信息不會立刻寫到磁盤上。之后 有其它作業用到該文件,讀取的數據就不完整。”

但如果文件有唯一鍵字,或記錄日志,必須同步寫時,其實BLOCK 實際被忽略,也就 是此時不會有錯。目前我們用的是MIMIX 備份,客戶實際上將所有的文件都列入日志,這

時不寫也不會出現上述錯誤。但為避免一些潛在的問題,養成良好的編程風格,建議將 SETON LR 與RETURN 一同,做為程序結束的標志。當然,如果某個程序頻繁被調用,且 不涉及文 操作時,可考慮不打開指示器*INLR,僅用RETURN 作為結束,這樣程序不

會被PURGE 出內存,可提高調用效率。

如果沒寫RETURN,也沒有打開指示器*INLR,在編譯時,系統將會報40 級錯,說找

不到程序結束的語句,所以大可放心。ROLBK {(E)}(Roll Back)

1.基本語法

Factory 1 Operation Factory 2 Result

ROLBK

2.該操作碼無其它參數,就是指對事務處理進行回滾操作。3.ILE 程序中,ROLBK 操作可隨時進行,也允許在沒有聲明COMMIT 類型的文件的情況下,仍進行ROLBK 操作(對該進程這前的事務進行確認處理)f

4.關于日志的確認回滾操作,在后面會另設專門章節講述。

2.8.4.5 S--Z SCAN {(E)}(Scan Character String)掃描字符串

掃描字符或字符串Factory 1 在目標字符串Factory 2 中是否存在Factory 1 Operation Factory 2 Result HI LO EQ

FLD01 SCAN FLD02 N 26

FLD01 可以是字符,也可以是字符變量;可以是一位長,也可以是多位長。

當FLD01 在FLD02 中存在時,EQ 指示器打開,即*IN26=’1’,同時將FLD02 中的起始

位置,賦值給N;

當FLD01 在FLD02 中不存在時,EQ 指示器保持關閉狀態,即*IN26=’0’,同時N=0

允許從FLD02 中的指定位置開始檢查:

FLD01 SCAN FLD02:2 N 26

如上句,即表示從FLD02 的第2 位,開始掃描。

在實際使用中,比如說我們判斷某個字符是否為數字,就可以先定義一個0—9 的常量,然后將要判斷的字符去SCAN 一下這個常量

SELECT(Begin a Select Group)分支語句

在操作碼“OTHER”中講過,為方便讀者,列出簡單語法如下:

Factory 1 Operation Factory 2 Result HI LO EQ

SELECT

WHEN 條件判斷

1處理語句1

WHEN 條件判斷2 處理語句

2OTHER

處理語句

3ENDSL

要注意,SELECT 操作碼,必須有對應的ENDSL 操作碼,否則編譯無法通過。

SETGT {(E)}(Set Greater Than)定位操作—大于

舉個例子吧,假設文件中有一個字段,是標識順序號的,1、2、3、4。即該字段為1,表示第一條記錄,該字段為2,表示第2 條記錄。那么: Factory 1 Operation Factory 2 Result HI LO EQSETGT 文件記錄格式名

READ 文件記錄格式名

這個READ 操作,READ 到的,是第3 條記錄。也就是說,SETGT 操作碼,會將游標

定位到大于鍵值的第一條記錄前。

在實際使用中,如果我們是按邏輯文件讀取,而且讀了一條記錄之后,對其鍵值相同的 記錄都不需要再讀取時,就可以用SETGT,不過需要注意,Factory 1 項,需要是與鍵值相

同的變量,即如果文件是使用多個字段做為鍵值,那么我們也需要先定義一個組合鍵值的變

量,然后Factory 1 處填寫這個組合鍵值的變量名。

當聲明文件的鍵值有多項時,Factory 1 項的鍵值,允許小于文件的鍵值,但順序必須

一致。即聲明的文件如果鍵值為:FHS01、FHS02、FHS03,那么我們在程序中定義三個類

型與之相同的變量FLD01、FLD02、FLD03,以下寫法都是有效的FLDKEY KLIST

KFLD FLD0

1KFLD FLD0

2KFLD FLD03 FLDKEY SETGT 文件記錄格式名

FLDKEY KLIST

KFLD FLD01

KFLD FLD02

FLDKEY SETGT 文件記錄格式名

FLD01 SETLL 文件記錄格式名

SETLL {(E)}(Set Lower Limit)定位操作—小于

語法與SETGT 相同,含義與SETGT 不同。SETLL 操作碼,會將游標定位到與鍵值相

等的第一條記錄之前,仍是上例,如果是 2 SETLL 文件記錄格式名

READ 文件記錄格式名

那么READ 操作碼讀到的記錄,就是第2 條記錄,看到了吧,和SETGT 不同。

SETLL 操作碼還可以用來簡單判斷當前鍵值是否存在有記錄,以PFFHSL3 為例(鍵值

為FHS01、FHS02)

Factory 1 Operation Factory 2 Result HI LO EQ

FHSKEY KLIST

KFLD FLD0

1KFLD FLD0

2EVAL FLD01=’01’

EVAL FLD02=’02’

FHSKEY SETLL 文件記錄格式名 44

當文件中有相應記錄時,EQ 指示器打開,即*IN44=’1’

當文件中無相應記錄時,EQ 指示器關閉,即*IN44=’0’(與CHAIN 正好相反,要注意)

而在這種用法中,SETLL 與CHAIN 的區別在于,CHAIN 是定位讀取了記錄,而SETLL 僅僅只是判斷該記錄是否存在。所以用SETLL 操作,不能修改記錄,也無法取出記錄的值。

只能判斷記錄是否存在。如果要修改記錄,或取出記錄的值,還需要有一個讀取定位的操作,如READ,或READE、READP 等(最常用的,應該就是READ 操作)

SETOFF(Set Indicator Off)關閉指示器

Factory 1 Operation Factory 2 Result HI LO EQ

SETOFF 10 11 1

2等價于

EVAL *IN10=’0’

EVAL *IN11=’0’

EVAL *IN12=’0’

在SETOFF 這個操作碼中,指示器填在HI、LO、EQ 哪里都沒關系,都是表示要被關

閉的指示器

SETON(Set Indicator On)打開指示器

Factory 1 Operation Factory 2 Result HI LO EQ

SETOFF 10 11 1

2等價于

EVAL *IN10=’1’

EVAL *IN11=’1’

EVAL *IN12=’1’

在SETON 這個操作碼中,指示器填在HI、LO、EQ 哪里都沒關系,都是表示要被關閉的指示器

SHTDN(Shut Down)

沒用過

SORTA(Sort an Array)沒用過

SQRT {(H)}(Square Root)開方

Factory 1 Operation Factory 2 Result HI LO EQSQRT 3 N

這時,N=3(因為3 的平方為9)9、3 都可以是數字型變量,或者直接是數字 SUB {(H)}(Subtract)減法操作

Factory 1 Operation Factory 2 Result HI LO EQ

FLD01 SUB FLD02 FLD0

3SUB FLD02 FLD03

看過前面的ADD、MULT 操作碼,這里不用解釋也應該明白是什么意思了吧。那就不

多說了。

SUBDUR {(E)}(Subtract Duration)日期相減

1.減日期

Factory 1 Operation Factory 2 Result HI LO EQ

FLD01 SUBDUR N:*Y FLD02

表示將日期型變量FLD01 減去N 年,賦值到日期型變量FLD02 中;

N 可以是一個數字型變量,也可以就是一個數字,N 允許為負數 *Y,*M,*D(還有其它的參數值,可見ADDDUR,其中有詳細解釋)

2.判斷兩個日期型變量之間的天/月/年數

Factory 1 Operation Factory 2 Result HI LO EQ

FLD01 SUBDUR FLD02 N:*D

這時,N 做為一結果變量,表示日期型變量FLD01 與FLD02 之間的天數

SUBST {(P | E)}(Substring)取字符/字符串 Factory 1 Operation Factory 2 Result HI LO EQSUBST FLD01:3 FLD02

表示從字段FLD01 的第3 位開始,取2 位,左對齊賦值到字段FLD02 中。

要求字段FLD01 的長度必須大于或等于3+2 位,否則程序會報錯。

可以嘗試用%SUBST 語句,也是等價的,如下

EVAL FLD02=%SUBST(FLD01:3:2)

表示的是同樣的意思。

起始位數3,取的長度2,在兩種寫法之下,都可以使用數字型變量來表達。

相比較之下,%SUBST 還有一種用法,就是對字符的指定位置賦值,這個就厲害了:

EVAL %SUBST(FLD02:3:2)=’01’

看到了吧,這句話就是說,使字段FLD02 的第3、4 位(即從第三位開始,兩位長)等

于“01”

TAG(Tag)定義標簽,與GOTO 同用

Factory 1 Operation Factory 2 Result HI LO EQ

FHSTAG TAG

TEST {(D | T | Z | E)}(Test Date/Time/Timestamp)

沒用過

TESTB(Test Bit)

沒用過

TESTN(Test Numeric)

沒用過

TESTZ(Test Zone)

沒用過

TIME(Time of Day)--取當前系統時間 Factory 1 Operation Factory 2 Result HI LO EQ

TIME FLD01

FLD01 可以是時間型或數字型變量

UNLOCK {(E)}(Unlock a Data Area or Release a Record)解鎖

Factory 1 Operation Factory 2 Result HI LO EQ

UNLOCK 文件記錄格式名

UNLOCK 是解鎖操作,在某種程度上,可以將UNLOCK 視為ROLBK,將UPDATE

視為COMMIT。即如果鎖定某條記錄,并對其字段進行賦值之后,使用UPDATE 語句,將

會把修改后的結果保存下來,即修改文件,而UNLOCK 語句則不會修改文件,即否認了之 前對文件字段做的賦值修改。

從程序的執行效率上來講,UNLOCK 的執行效率是高于UPDATE 的,因為UPDATE

操作時,系統需要對文件的每一個字段進行確認處理(DEBUG 時可以看到),而UNLOCK 就

是簡單的解鎖而已。

UPDATE(Modify Existing Record)修改記錄

語法與UNLOCK 一樣。

這里需要說明一下,在執行UPDATE 的時候,必須先使用READ、CHAIN 等操作碼鎖

定一條記錄。如果未鎖住記錄,UPDATE 操作碼將會報錯。當執行了UNLOCK、UPDATE、以及ROLBK 語句時,等于是解鎖,此時再執行UPDATE 操作碼之前,必須再次鎖住記錄

操作;

WHEN {(M | R)}(When)分支判斷語句中的條件判斷

在操作碼“OTHER”,“SELECT”中都講過,仍列出簡單語法如下:

Factory 1 Operation Factory 2 Result HI LO EQ

SELECT

WHEN 條件判斷1 處理語句1

WHEN 條件判斷

2處理語句2

OTHER

處理語句

3ENDSL

WHENxx(When True Then Select)

上面的語法,是RPGLE 的語法,WHENxx 是RPG 的語法,也就是

SELECT

FLD01 WHENEQ FLD02

處理語句

1……..這樣的語法,在表達復雜的邏輯關系時,必須與ANDxx,ORxx 一起使用,所以我不

使用WHENxx 這個操作碼。

WRITE(Create New Records)寫記錄

常用的方式:

Factory 1 Operation Factory 2 Result HI LO EQ

CLEAR 文件記錄格式名

EVAL 文件字段1=xxxx

EVAL 文件字段2=xxxx

WRITE 文件記錄格式名

表示在文件中寫入一條新記錄。文件需要聲明為可寫的。

通常會在給文件字段賦值之前,作一次CLEAR 操作來進行初始化,以避免不必要的麻煩。XFOOT {(H)}(Sum the Elements of an Array)

沒用過,看幫助,是表示對數組字段的累加統計。

假設DIMDATA 定義為一個數字型的數組變量,FHS01 為一個足夠大的數字型變量

Factory 1 Operation Factory 2 Result HI LO EQ

XFOOT DIMDATA FHS01

就表示將數組DIMDATA 中的所有記錄的值都取出來,匯總相加,賦值到數字變量

FHS01 中

XLATE {(P | E)}(Translate)

將一個字符串中指定的字符,更換成另外的字符。

舉例:如MYCHAR1,MYCHAR2 都是兩個20 位長的字符型變量

C MOVEL 'ABCAAAC123' MYCHAR1

C 'A':'9' XLATE MYCHAR1 MYCHAR2

執行過這個語句之后,MYCHAR2 就等于”9BC999C123’,即將字符串MYCHAR1 中所

有的“A”都變成了“9”;

XLATE 也可能指定起始位置。如上句更改為:

C 'A':'9' XLATE MYCHAR1:4 MYCHAR2

則MYCHAR2 等于“ABC999C123”,指從第4 位開始(含第4 位),將“A”變成“9”

賦值。

Z-ADD {(H)}(Zero and Add)向數字型變量賦值

Factory 1 Operation Factory 2 Result HI LO EQ

Z-ADD FLD01 FLD02

將數字型變量FLD01,賦值到數字型變量FLD02 中。

Z-ADD、MOVE 雖然同是賦值操作碼,但Z-ADD 的用法就遠沒有MOVE 那么變化多

端,只能在數字型變量之間賦值。所以也沒有什么可說的了。zero 如果要對數字型變量賦初值,使用*ZERO

Z-ADD *ZERO FLD02

Z-SUB {(H)}(Zero and Subtract)用0 減

Factory 1 Operation Factory 2 Result HI LO EQ

Z-SUB FLD01 FLD02

等價于

0 SUB FLD01 FLD02

等價于

EVAL FLD02=FLD01*(-1)

*ALL

*ALL 是個很有意義的變量,舉例:

EVAL FLD01=*ALL’0’

表示將字符型變量FLD01 賦值為全’0’

CLOSE *ALL

就表示關閉所有文件,意義與上面是不同的%LEN

取字符串的長度,舉例:

(MYLEN 為數字型變量,FLD01 為字符型變量)

EVAL MYLEN = %LEN(FLD01)

這句話的意思,是指取字符串FLD01 的長度,不過通常這樣用是沒意義的,因為直接

用%LEN 操作碼,取到的是字符串的總長度,不是有效字符的長度,也就是說FLD01 長度

為2,那么MYLEN 就恒等于2,不會變。就算變量FLD01 中沒有值,取出的MYLEN 也等

于2.。所以,%LEN 通常會與%TRIM 或是%TRIMR 一起使用,語法在下面介紹。

%TRIM,%TRIMR

都是去字符串變量中的空字符意思,%TRIM 是去字符串左邊的空字符;%TRIMR 是去

字符串右邊的空格。

通常我們在寫程序中,都是默認字符串變量左對齊,所以我們使用%TRIMR 操作碼的概率應該高一點。舉例:

EVAL MYLEN = %LEN(%TRIMR(FLD01))

這時的MYLEN,就是指變量FLD01 中的有效長度(前提條件是FLD01 中如果有值,是左對齊)。如果FLD01 為空,那么MYFLEN 為0;如果FLD01 首位有值,第二位為空,那么MYLEN 為1;如果FLD01 兩位都不為空,那么MYLEN 就等于2。

如果字符串左對齊,那么就使用%TRIMR

還有一種用法,假設字符串FLD04 為4 位長的字符,FLD01,FLD02 都是2 位長的字

符,且FLD01 等于“A ”,FLD02 等于“BC”,那我們執行:

EVAL FLD04 = FLD01 + FLD01 + FLD02

FLD04 就等于“A A ”,也就是第二位與第四位都是空的,最后加的FLD02 其實無

效。

而如果執行

EVAL FLD04 = %TRIMR(FLD01)+ %TRIMR(FLD01)+ FLD02

則FLD04 就等于“AABC”,也就是說,在這里,%TRIMR(FLD01),是等價于單字符

“A”的MONITOR

監控程序信息。據說是可以屏蔽掉出錯信息,避免程序異常中斷,未經測試。

第四篇:程序員入門進階手冊

這篇文章,我主要是讓你成為更為專業的入門程序員。請注意,此時,你可能需要讀一些比較枯燥的書,但我想說,這些是非常非常重要的。你一定要堅持住。

編程技能

在系統地學習編程技能之前,我希望你能先看一下 “ The Key To Accelerating Your Coding Skills”,這篇文章會告訴你如何有效地快速提高自己的編程能力。然后接下來是下面幾大塊內容,但還只是入門級的。

編程技巧方面這個階段,你可以開始了解一下 Java 語言了,我個人覺得 Java 是世界上目前為止綜合排名最好的語言。你一定要學好這門語言。推薦《Java 核心技術(卷 1)》,除了讓你了解 Java 的語法,它還會讓你了解面向對象編程是個什么概念(如果你覺得這本書有點深,那么,你可以降低難度看更為基礎的《Head First Java》)。然后,既然開始學習Java 了,那就一定要學 Spring,推薦看看《Spring in Action》或是直接從最新的 Spring Boot 開始,推薦看看《Spring Boot 實戰》。關于 Spring 的這兩本書,里面可能會有很多你從來沒有聽說過的東西,比如,IoC 和 AOP 之類的東西,能看懂多少就看懂多少,沒事兒。?

操作系統。這里你可以看看《鳥哥的 Linux 私房菜》,這本書會讓你對計算機和操作系統,以及 Linux 有一個非常全面的了解,并能夠管理或是操作好一個 Linux 系統。當然,這本書有很多比較專業的知識,你可能會看不懂,沒關系,就暫時略過就好了。這本書的確并不適合初學者,你能看多少就看多少吧。

? 網絡協議你需要系統地了解一下數據庫設計中的那些東西,這里推薦慕課網的一個在線課程--“數據庫設計的那些事”。每個小課程不過 5-6 分鐘,全部不到 2 個小時,我相信你一定能跟下來。你需要搞清楚數據的那幾個范式,還有 SQL 語句的一些用法。當然,你還要學習和使用一下數據庫,這里推薦學習開源的 MySQL。你可以看官方文檔,也可以看一下這本書《MySQL 必知必會》。? 前端方面在你處理中文時有時會發現有亂碼出現,此時需要了解 ASCII 和 Unicode 這樣的字符編碼。這里推薦一篇文章Character encoding。還有 Github 上的這兩個 Awesome 倉庫:Awesome Unicode 和 Awesome Code Points。?

為什么轉成 Java 語言?

相信你可能會問,為什么之前學習的 Python 和 JavaScript 不接著學,而是直接切到 Java 語言上來,這樣會不會切得太快了。這是一個好問題,這里需要說明一下,為什么我會切到 Java 這個語言上來,主要是有以下幾方面考慮。1.Java 是所有語言里面綜合實力最強的,這也是為什么幾乎所有大型的互聯網或是分布式架構基本上都是 Java 技術棧。所以,這是一個工業級的編程語言(Python 和 JavaScript 還達不到這樣的水準)。

2.之所以,沒有用 Java 來做入門語言而是用了 Python,這是因為編程是一件比較費腦子的事,一開始學習時,興趣的培養很重要。Python 比較簡單,容易上手,能夠比較容易地提起興趣,而用 Java 則可能比較難。3.在你有了一些編程語言的基礎后,有了一些代碼的邏輯后,切到工業級的編程語言上來,更為專業地學習編程,是非常有幫助的。像 Python 和 JavaScript 這樣的動態語言用著是很爽,但是,只有像 C、C++ 和 Java 這樣的靜態語言才可以讓你真正地進階。

4.對于一個合格的程序員,掌握幾門語言是非常正常的事情。一方面,這會讓你對不同的語言進行比較,讓你有更多的思考。另一方面,這也是一種學習能力的培養,會讓你對于未來的新技術學習得更快。很多時候,一些程序員只在自己熟悉的技術而不是合適的技術上工作,這其實并不好,這會讓你的視野受限,而視野會決定你的高度。綜上所述,這就是在入門的時候我故意讓你多學幾門語言的原因。

編程工具

編程工具方面,你需要開始學習使用下面這些工具了。

? 編程的 IDE。傳統一點的,你可以使用 Eclipse。當然,我推薦你使用 Intellij IDEA。這兩個工具都可以開發各種語言,但是主要用在 Java。如果你想玩得更時髦一些的話,使用 Visual Studio Code 也不錯,這個工具潛力十足,用其開發 Python、JavaScript、Java、Go、C 和 C++ 都能得心應手(教程-本文發布時還基本沒怎么翻譯完)。

? 版本管理工具。版本管理工具是非常重要的編程工具。傳統的有 P4、SVN、CVS 等,但都會被 Git 取代,所以,你就只用學習Git 就好了。學習Git 的教程網上有很多,這里我推薦非常系統的 Pro Git 第二版(如 果你覺得 Pro Git 比較枯燥的話,備選猴子都能懂的 Git 入門),然后你要學會使用 GitHub。關于一些 Git 環境安裝和準備以及 GitHub 使用,你可以自行 Google(比如:這篇Github and Git 圖文教程 或是這篇Git 圖文教程及詳解)。

? 調試前端程序。你需要學會使用 Chrome 調試前端程序,Google 一下會有很多文章,你可以看看 超完整的 Chrome 瀏覽器客戶端調試大全。? 數據庫設計工具。你需要學會使用 MySQL WorkBench,這個工具很容易使用。相關的手冊,你可以看一下官方文檔。

實踐項目

這回我們需要設計一個投票系統的項目。業務上的需求如下:

? ? ? ? ? 用戶只有在登錄后,才可以生成投票表單。投票項可以單選,可以多選。

其它用戶投票后顯示當前投票結果(但是不能刷票)。投票有相應的時間,頁面上需要出現倒計時。

投票結果需要用不同顏色不同長度的橫條,并顯示百分比和人數。

技術上的需求如下:

這回要用 Java Spring Boot 來實現了,然后,后端不返回任何的 HTML,只返回 JSon 數據給前端。

? 由前端的 JQuery 來處理并操作相關的 HTML 動態生成在前端展示的頁面。

? 前端的頁面還要是響應式的,也就是可以在手機端和電腦端有不同的呈現。這個可以用 Bootstrap 來完成。?

如果你有興趣,還可以挑戰以下這些功能。

在微信中,通過微信授權后記錄用戶信息,以防止刷票。? 可以不用刷頁面,就可以動態地看到投票結果的變化。

? Google 一些畫圖表的 JavaScript 庫,然后把圖片表得風騷一些。?

小結 上面那些書和知識你要看完,還要能理解并掌握,我估計你最少也要花 1-2 年左右的時間。如果你能夠走到這里,把前面的那些知識都了解了,不用精通,能獨立地做出上面的那些實踐項目,那么,你就算是真正的入門了。

而且,你已經是一個 “ 全棧工程師 ” 的樣子了,在這里我要給你一個大大的贊。如果這個時候,你對編程還有很大的熱情,那么我要恭喜你了,你可能會是一個非常不錯的程序員。加油啊!

上面的那些技術已經算是比較專業的了。如果你已經大致掌握了,我相信你可以找到至少年薪 20 萬以上的工作了,而且你的知識面算是有不錯的廣度了。但是深度還不夠,這個時候,是一個比較關鍵點了。

你可能已經沉醉在沾沾自喜的驕傲的情緒中,那么你也可以就此止步,加入一些公司,在那里按部就班地完成一些功能性的開發,成為一個搬磚的碼農。你也可以開始選擇一個方向開始深入。

我給你的建議是選擇一個方向開始深入。因為你并不知道你未來會有多大的可能性,也不知道你會成為什么樣的人,所以為什么不再更努力一把呢?

后面,我們就開始非常專業的程序員之路了。這也是一般程序員和高級程序員的分水嶺了,能不能過去就看你的了。

第五篇:JAVA程序員面試題6

JAVA程序員面試題(6)

2008-06-12 10:43

1.客服端調用EJB對象的幾個基本步驟

設置JNDI服務工廠以及JNDI服務地址系統屬性,查找Home接口,從Home接口調用Create方法創建Remote接口,通過Remote接口調用其業務方法。

2.如何給weblogic指定大小的內存?

在啟動Weblogic的腳本中(位于所在Domian對應服務器目錄下的startServerName),增加set MEM_ARGS=-Xms32m-Xmx200m,可以調整最小內存為32M,最大200M

3.如何設定的weblogic的熱啟動模式(開發模式)與產品發布模式?

可以在管理控制臺中修改對應服務器的啟動模式為開發或產品模式之一。或者修改服務的啟動文件或者commenv文件,增加set PRODUCTION_MODE=true。

4.如何啟動時不需輸入用戶名與密碼?

修改服務啟動文件,增加 WLS_USER和WLS_PW項。也可以在boot.properties文件中增加加密過的用戶名和密碼.5.在weblogic管理制臺中對一個應用域(或者說是一個網站,Domain)進行jms及ejb或

連接池等相關信息進行配置后,實際保存在什么文件中?

保存在此Domain的config.xml文件中,它是服務器的核心配置文件。

6.說說weblogic中一個Domain的缺省目錄結構?比如要將一個簡單的helloWorld.jsp

放入何目錄下,然的在瀏覽器上就可打入 http://主機:端口號//helloword.jsp就可以看到運行結果了? 又比如這其中用到了一個自己寫的javaBean該如何辦?

Domain目錄服務器目錄applications,將應用目錄放在此目錄下將可以作為應用訪問,如果是Web應用,應用目錄需要滿足Web應用目錄要求,jsp文件可以直接放在應用目錄中,Javabean需要放在應用目錄的WEB-INF目錄的classes目錄中,設置服務器的缺省應用將可以實現在瀏覽器上無需輸入應用名。

7.在weblogic中發布ejb需涉及到哪些配置文件

不同類型的EJB涉及的配置文件不同,都涉及到的配置文件包括ejb-jar.xml,weblogic-ejb-jar.xmlCMP

weblogic-cmp-rdbms-jar.xml實體Bean一般還需要

8.如何在weblogic中進行ssl配置與客戶端的認證配置或說說j2ee(標準)進行ssl的配

缺省安裝中使用DemoIdentity.jks和DemoTrust.jks KeyStore實現SSL,需要配置服務器使用Enable SSL,配置其端口,在產品模式下需要從CA獲取私有密鑰和數字證書,創建identity和trust keystore,裝載獲得的密鑰和數字證書。可以配置此SSL連接是單向還是雙向的。

9.如何查看在weblogic中已經發布的EJB?

可以使用管理控制臺,在它的Deployment中可以查看所有已發布的EJB

10.CORBA是什么?用途是什么?

CORBA 標準是公共對象請求代理結構(Common Object Request Broker Architecture),由對象管理組織(Object Management Group,縮寫為 OMG)標準化。它的組成是接口定義語言(IDL), 語言綁定(binding:也譯為聯編)和允許應用程序間互操作的協議。其目的為:用不同的程序設計語言書寫在不同的進程中運行,為不同的操作系統開發。

11.說說你所熟悉或聽說過的j2ee中的幾種常用模式?及對設計模式的一些看法?

Session Facade Pattern:使用SessionBean訪問EntityBean Message Facade Pattern:實現異步調用 EJB Command Pattern:使用Command JavaBeans取代SessionBean,實現輕量級訪問 Data Transfer Object Factory:通過DTO Factory簡化EntityBean數據提供特性 Generic Attribute Access:通過AttibuteAccess接口簡化EntityBean數據提供特性 Business Interface:通過遠程(本地)接口和Bean類實現相同接口規范業務邏輯一致性EJB架構的設計好壞將直接影響系統的性能、可擴展性、可維護性、組件可重用性及開發效率。項目越復雜,項目隊伍越龐大則越能體現良好設計的重要性。

12.說說在weblogic中開發消息Bean時的persistent與non-persisten的差別

persistent方式的MDB可以保證消息傳遞的可靠性,也就是如果EJB容器出現問題而JMS服務器依然會將消息在此MDB可用的時候發送過來,而non-persistent方式的消息將被丟棄。

13.Servlet執行時一般實現哪幾個方法?

public void init(ServletConfig config)public ServletConfig getServletConfig()public String getServletInfo()

public void service(ServletRequest request,ServletResponse response)public void destroy()

14.j2ee常用的設計模式?說明工廠模式。

Java中的23種設計模式: Factory(工廠模式),Builder(建造模式),Factory Method(工廠方法模式),Prototype(原始模型模式),Singleton(單例模式),Facade(門面模式),Adapter(適配器模式),Bridge(橋梁模式),Composite(合成模式),Decorator(裝飾模式),Flyweight(享元模式),Proxy(代理模式),Command(命令模式),Interpreter(解釋器模式),Visitor(訪問者模式),Iterator(迭代子模式),Mediator(調停者模式),Memento(備忘錄模式),Observer(觀察者模式),State(狀態模式),Strategy(策略模式),Template Method(模板方法模式),Chain Of Responsibleity(責任鏈模式)工廠模式:工廠模式是一種經常被使用到的模式,根據工廠模式實現的類可以根據提供的數據生成一組類中某一個類的實例,通常這一組類有一個公共的抽象父類并且實現了相同的方法,但是這些方法針對不同的數據進行了不同的操作。首先需要定義一個基類,該類的子類通過不同的方法實現了基類中的方法。然后需要定義一個工廠類,工廠類可以根據條件生成不同的子類實例。當得到子類的實例后,開發人員可以調用基類中的方法而不必考慮到底返回的是哪一個子類的實例。

15.EJB需直接實現它的業務接口或Home接口嗎,請簡述理由。

遠程接口和Home接口不需要直接實現,他們的實現代碼是由服務器產生的,程序運行中對應實現類會作為對應接口類型的實例被使用

下載RPG AS400程序員培訓手冊6word格式文檔
下載RPG AS400程序員培訓手冊6.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    RPG AS400程序員培訓手冊9(優秀范文五篇)

    8 其它8.1 報表打印 在這里,簡單說一下報表。其實據說RPG 設計之初,主要就是為了解決報表問題。不過發展到現在,在我接觸過的系統中,覺得報表在RPG 編程之中反而退居其次,大部分......

    FastReport 4程序員手冊[全文5篇]

    FastReport 程序員手冊 一、使用TfrxReport 組件工作 1、加載并存儲報表 默認情況下,報表窗體同項目窗體構存儲在同一個DFM文件中。多數情況下,無須再操作,因而你就不必采用特......

    6員工手冊 2

    桐廬力美制筆廠 員 編制: 工 手 冊審核:生效日期:2012年 2 月 20 日 一、 手冊總則 1. 為統一規范公司所有員工的行為準則,明確企業與員工之間的權利和義務,根據《勞動法》及其......

    程序員培訓計劃

    程序員培訓計劃培訓目標: 了解xx公司的歷史和企業文化,規章制度等 了解xx公司產品主要應用和項目管理的基本知識掌握xx產品的基本業務流程 掌握xx技術開發的基本技能 培訓對象......

    培訓手冊

    成都燭龍科技有限公司 基層黨組織分類定級軟件支撐系統 培訓手冊 2012-5-10 1 準備工作.....................................................................................

    培訓手冊

    員工的必要培訓 一:確定培訓目標 1.服務技能培訓:培訓目標是幫助員工按照規范統一的服務準則為客戶提供各種服 務,提升員工與顧客之間的人際互動能力。培訓的內容主要是零售店......

    設計師六項全能手冊6

    第六節過道陽臺裝修知識 一、過道裝修 居室入口處的過道,常起門斗的作用,既是交通要道,又是更衣、換鞋和臨時擱臵物品的場所,是搬運大型家具的必經之路。在大型家具中沙發、餐桌......

    程序員內部培訓(合集五篇)

    1.前言 雖然題為培訓,但我還是想說一句,程序員其實不需要培訓,只需要指點。原因有三: 程序員的工作都必須去實踐,幾乎沒有純理論的領域。 由于互聯網的開放性,程序員能找到大量......

主站蜘蛛池模板: 国产精品色午夜免费视频| 无码av一区二区三区不卡| 中文成人无码精品久久久不卡| 国产成人久久婷婷精品流白浆| 亚洲偷自拍拍综合网| 电影内射视频免费观看| 国产美女亚洲精品久久久综合| 荡女精品导航| 日日噜噜噜夜夜爽爽狠狠| 92午夜少妇极品福利无码电影| 天天摸天天做天天爽| 国产香港明星裸体xxxx视频| 97久久超碰成人精品网页| 色婷婷久久久swag精品| 人妻少妇中文字幕乱码| 婷婷国产成人精品视频| 插我舔内射18免费视频| 亚洲va中文字幕无码毛片| 亚洲这里只有久热精品伊人| 亚洲一区二区av在线观看| 国产精品激情av久久久青桔| 国产成人啪精品视频免费软件| 激情偷乱人伦小说视频| 久久精品无码一区二区日韩av| 99精品视频69v精品视频| 久久国产亚洲高清观看| 国产品无码一区二区三区在线| 国产精品嫩草久久久久| 日本道色综合久久影院| 国产又黄又爽胸又大免费视频| 中文字幕精品久久久乱码乱码| 中文字幕日韩一区二区三区不卡| 老妇女性较大毛片| 日韩内射激情视频在线播放免费| 高清熟女国产一区二区三区| 欧美大香线蕉线伊人久久| 一边做一边喷17p亚洲乱妇50p| 国产精品自在线拍国产手机版| 国产精品成人嫩草影院| 影音先锋男人av鲁色资源网| 少妇人妻av毛片在线看|