製品としてのライブラリーの配布や導入後になんらかのコマンドの実行などの操作を伴うような場合、やはりこの時代ではインストーラが必要である。
PC のインストーラに慣れきったユーザーにたとえテープ配布であっても、「RSTLIB xxxx, xxxxx を実行してください。」と依頼するのはスマートなやり方ではない。
インストーラによって次々とインストールを示すカラー画面が表示されれば製品らしさがあるし、製品に対する信頼性も増すというものである。
テープでの配布を日常的に行っていた諸氏に非常にスマートなインストーラの作成方法を紹介する。
実は OS/400にはテープからのインストーラへの仕組みが提供されている。
それは
コマンド入力画面から LODRUN TAP01 というように実行すれば、TAP01 に保管されている QINSTAPP という名前のプログラムが QTEMP に復元されて実行される
というものである。
以下のサンプルは実際に Chicago の 導入に使用されていたものである。
参考までに現在の Chicago は CD-R から iSeries400へアップロードするインストーラとしての「HitPack」があるので、現在ではこのテープからのインストーラは使用されていない。
試供版も含めて PC から iSeries400 へのインストーラが用意されているのも、現在でもなお弊社製品だけであると思われる。
製品の導入をユーザーに FTP などの操作を強いるのは時代背景に合っていない。
なお、このサンプルは現在導入中のプロセスを iSeries400上での POPUP表示を行っている。
【 画面DDSソース 】
0001.00 A*%%TS SD 19981009 100412 QTR REL-V2R3M0 5738-PW1 0002.00 A*-----------------------------------------------* 0003.00 A* QINSTAPPFM 0004.00 A* 0005.00 A* 導入画面 0006.00 A* RSTDSP=NO DFRWRT=YES 0007.00 A*-----------------------------------------------* 0008.00 A*%%EC 0009.00 A DSPSIZ(24 80 *DS3) 0010.00 A MSGLOC(24) 0011.00 A PRINT 0012.00 A* IGCCNV(CF18 24) 0013.00 A R DSPHEAD 0014.00 A*%%TS SD 19981008 161642 QTR REL-V2R3M0 5738-PW1 0015.00 A TEXT(' 初期画面 ') 0016.00 A CF03(03 ' 終了 ') 0017.00 A SETOF(99) 0018.00 A BLINK 0019.00 A OVERLAY 0020.00 A 23 2'F3= 終了 ' 0021.00 A COLOR(BLU) 0022.00 A 1 18'PANEL-WORKER FOR' 0023.00 A 3 18' ' 0024.00 A DSPATR(RI) 0025.00 A COLOR(YLW) 0026.00 A 4 18' ' 0027.00 A DSPATR(RI) 0028.00 A COLOR(YLW) 0029.00 A 5 18' ' 0030.00 A DSPATR(RI) 0031.00 A COLOR(YLW) 0032.00 A 6 18' ' 0033.00 A DSPATR(RI) 0034.00 A COLOR(YLW) 0035.00 A 7 18' ' 0036.00 A DSPATR(RI) 0037.00 A COLOR(YLW) 0038.00 A 8 18' ' 0039.00 A DSPATR(RI) 0040.00 A COLOR(YLW) 0041.00 A 3 26' ' 0042.00 A DSPATR(RI) 0043.00 A 4 26' ' 0044.00 A DSPATR(RI) 0045.00 A 5 26' ' 0046.00 A DSPATR(RI) 0047.00 A 6 26' ' 0048.00 A DSPATR(RI) 0049.00 A 7 26' ' 0050.00 A DSPATR(RI) 0051.00 A 8 26' ' 0052.00 A DSPATR(RI) 0053.00 A 7 30' ' 0054.00 A DSPATR(RI) 0055.00 A 8 30' ' 0056.00 A DSPATR(RI) 0057.00 A 4 33' ' 0058.00 A DSPATR(RI) 0059.00 A COLOR(BLU) 0060.00 A 6 33' ' 0061.00 A DSPATR(RI) 0062.00 A COLOR(BLU) 0063.00 A 7 33' ' 0064.00 A DSPATR(RI) 0065.00 A COLOR(BLU) 0066.00 A 8 33' ' 0067.00 A DSPATR(RI) 0068.00 A COLOR(BLU) 0069.00 A 5 36' ' 0070.00 A DSPATR(RI) 0071.00 A COLOR(RED) 0072.00 A 6 36' ' 0073.00 A DSPATR(RI) 0074.00 A COLOR(RED) 0075.00 A 7 36' ' 0076.00 A DSPATR(RI) 0077.00 A COLOR(RED) 0078.00 A 8 36' ' 0079.00 A DSPATR(RI) 0080.00 A COLOR(RED) 0081.00 A 5 43' ' 0082.00 A DSPATR(RI) 0083.00 A COLOR(YLW) 0084.00 A 6 46' ' 0085.00 A DSPATR(RI) 0086.00 A COLOR(YLW) 0087.00 A 7 43' ' 0088.00 A DSPATR(RI) 0089.00 A COLOR(YLW) 0090.00 A 8 43' ' 0091.00 A DSPATR(RI) 0092.00 A COLOR(YLW) 0093.00 A 8 46' ' 0094.00 A DSPATR(RI) 0095.00 A COLOR(YLW) 0096.00 A 9 43' ' 0097.00 A DSPATR(RI) 0098.00 A COLOR(YLW) 0099.00 A 5 51' ' 0100.00 A DSPATR(RI) 0101.00 A COLOR(PNK) 0102.00 A 6 51' ' 0103.00 A DSPATR(RI) 0104.00 A COLOR(PNK) 0105.00 A 7 51' ' 0106.00 A DSPATR(RI) 0107.00 A COLOR(PNK) 0108.00 A 6 55' ' 0109.00 A DSPATR(RI) 0110.00 A COLOR(PNK) 0111.00 A 8 55' ' 0112.00 A DSPATR(RI) 0113.00 A COLOR(PNK) 0114.00 A 9 55' ' 0115.00 A DSPATR(RI) 0116.00 A COLOR(PNK) 0117.00 A 10 51' ' 0118.00 A DSPATR(RI) 0119.00 A COLOR(PNK) 0120.00 A 5 57' ' 0121.00 A DSPATR(RI) 0122.00 A COLOR(YLW) 0123.00 A 6 57' ' 0124.00 A DSPATR(RI) 0125.00 A COLOR(YLW) 0126.00 A 7 57' ' 0127.00 A DSPATR(RI) 0128.00 A COLOR(YLW) 0129.00 A 6 61' ' 0130.00 A DSPATR(RI) 0131.00 A COLOR(YLW) 0132.00 A 7 61' ' 0133.00 A DSPATR(RI) 0134.00 A COLOR(YLW) 0135.00 A 8 57' ' 0136.00 A DSPATR(RI) 0137.00 A COLOR(YLW) 0138.00 A 9 57' ' 0139.00 A DSPATR(RI) 0140.00 A COLOR(YLW) 0141.00 A 8 61' ' 0142.00 A DSPATR(RI) 0143.00 A COLOR(YLW) 0144.00 A 11 31' の導入 ' 0145.00 A 12 17' 0146.00 A ' 0147.00 A DSPATR(UL) 0148.00 A 14 19' この度は PANEL-WORKER CHI 0149.00 A ' SOSI A 15 19' お買い上げ頂き誠にありが 0151.00 A います。 ' SOSI A 17 19' 実行キーを押して導入を開 0153.00 A ださい。 ' 0154.00 A COLOR(BLU) 0155.00 A 18 17' 0156.00 A ' 0157.00 A DSPATR(UL) 0158.00 A 11 18'VER. 3.1' 0159.00 A DSPATR(HI) 0160.00 A 24 47'(C) COPYRIGHT OFFICE QUATT 0161.00 A DSPATR(HI) 0162.00 A 10 18'STANDARD EDITION' 0163.00 A DSPATR(HI) 0164.00 A R WINDOW 0165.00 A*%%TS SD 19981009 100412 QTR REL-V2R3M0 5738-PW1 0166.00 A WINDOW(8 16 4 46) 0167.00 A OVERLAY 0168.00 A PROTECT 0169.00 A CLRL(*NO) 0170.00 A 1 3' お待ちください。 ' 0171.00 A 3 3' ライブラリー :' 0172.00 A LIB 10 +1 0173.00 A DSPATR(HI) 0174.00 A +1' を復元中です ' 0175.00 A R DUMMY ASSUME 0176.00 A FRCDTA 0177.00 A PUTOVR 0178.00 A DMY 2 O 1 2DSPATR(ND)
【 CLPソース 】
0001.00 PGM PARM(&DEV) 0002.00 /*---------------------------------------------------------*/ 0003.00 /* QINSTAPP : 導入プログラム */ 0004.00 /*---------------------------------------------------------*/ 0005.00 DCL VAR(&MSG) TYPE(*CHAR) LEN(80) 0006.00 DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(80) 0007.00 DCL VAR(&MSGID) TYPE(*CHAR) LEN(7) 0008.00 DCL VAR(&MSGF) TYPE(*CHAR) LEN(10) 0009.00 DCL VAR(&MSGFLIB) TYPE(*CHAR) LEN(10) 0010.00 DCL VAR(&DEV) TYPE(*CHAR) LEN(10) 0011.00 DCL VAR(&USER) TYPE(*CHAR) LEN(10) 0012.00 DCLF FILE(QTEMP/QINSTAPPFM) 0013.00 DCL VAR(&SEV) TYPE(*DEC) LEN(2 0) 0014.00 MONMSG MSGID(CPF0000) 0015.00 0016.00 RSTOBJ OBJ(QINSTAPPFM) SAVLIB(QTEMP) DEV(&DEV) + 0017.00 ENDOPT(*LEAVE) MBROPT(*ALL) ALWOBJDIF(*ALL) 0018.00 MONMSG CPF3800 0019.00 SNDRCVF RCDFMT(DSPHEAD) WAIT(*YES) 0020.00 IF COND(&IN03 *EQ '1') THEN(DO) 0021.00 SNDPGMMSG MSG('PANEL-WORKER FOR + 0022.00 CHAICAGO の導入は取消されました。 ') + 0023.00 MSGTYPE(*COMP) 0024.00 RETURN 0025.00 ENDDO 0026.00 /*( 権限の確認 )*/ 0027.00 RTVJOBA USER(&USER) 0028.00 IF COND(&USER *NE 'QSECOFR') THEN(DO) 0029.00 SNDPGMMSG + 0030.00 MSG(' 導入するには QSECOFR で実行してくだ + 0031.00 さい。 ') 0032.00 RETURN 0033.00 ENDDO 0034.00 /*( 導入の開始 )*/ 0035.00 CHGJOB STSMSG(*NORMAL) 0036.00 CHGVAR VAR(&LIB) VALUE('PANELWKR ') 0037.00 SNDRCVF RCDFMT(WINDOW) WAIT(*NO) 0038.00 RSTLIB SAVLIB(PANELV31) DEV(&DEV) ENDOPT(*LEAVE) + 0039.00 MBROPT(*ALL) ALWOBJDIF(*ALL) RSTLIB(PANELWKR) 0040.00 MONMSG CPF3800 0041.00 RCVMSG MSGTYPE(*LAST) RMV(*NO) MSGDTA(&MSGDTA) + 0042.00 MSGID(&MSGID) MSGF(&MSGF) MSGFLIB(&MSGFLIB) 0043.00 /*---( 作業進行中の xョネーニ゙ 出力 )------------------------------------*/ 0044.00 SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + 0045.00 MSGDTA(&MSGDTA) TOPGMQ(*EXT) + 0046.00 MSGTYPE(*STATUS) 0047.00 CHGVAR VAR(&LIB) VALUE('QTRSRC ') 0048.00 SNDRCVF RCDFMT(WINDOW) WAIT(*NO) 0049.00 RSTLIB SAVLIB(QTRSRC) DEV(&DEV) ENDOPT(*LEAVE) + 0050.00 MBROPT(*ALL) ALWOBJDIF(*ALL) 0051.00 MONMSG CPF3800 0052.00 RCVMSG MSGTYPE(*LAST) RMV(*NO) MSGDTA(&MSGDTA) + 0053.00 MSGID(&MSGID) MSGF(&MSGF) MSGFLIB(&MSGFLIB) 0054.00 /*---( 作業進行中の xョネーニ゙ 出力 )------------------------------------*/ 0055.00 RMVMSG CLEAR(*ALL) 0056.00 SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + 0057.00 MSGDTA(&MSGDTA) MSGTYPE(*DIAG) 0058.00 CHGVAR VAR(&LIB) VALUE('QTROBJ ') 0059.00 SNDRCVF RCDFMT(WINDOW) WAIT(*NO) 0060.00 RSTLIB SAVLIB(QTROBJ) DEV(&DEV) ENDOPT(*LEAVE) + 0061.00 MBROPT(*ALL) ALWOBJDIF(*ALL) 0062.00 MONMSG CPF3800 0063.00 RCVMSG MSGTYPE(*LAST) RMV(*NO) MSGDTA(&MSGDTA) + 0064.00 MSGID(&MSGID) MSGF(&MSGF) MSGFLIB(&MSGFLIB) 0065.00 /*---( 作業進行中の xョネーニ゙ 出力 )------------------------------------*/ 0066.00 SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + 0067.00 MSGDTA(&MSGDTA) TOPGMQ(*EXT) + 0068.00 MSGTYPE(*STATUS) 0069.00 CHGVAR VAR(&LIB) VALUE('QTRFIL ') 0070.00 SNDRCVF RCDFMT(WINDOW) WAIT(*NO) 0071.00 RSTLIB SAVLIB(QTRFIL) DEV(&DEV) ENDOPT(*UNLOAD) + 0072.00 MBROPT(*ALL) ALWOBJDIF(*ALL) 0073.00 MONMSG CPF3800 0074.00 RCVMSG MSGTYPE(*LAST) RMV(*NO) MSGDTA(&MSGDTA) + 0075.00 MSGID(&MSGID) MSGF(&MSGF) MSGFLIB(&MSGFLIB) 0076.00 /*---( 作業進行中の xョネーニ゙ 出力 )------------------------------------*/ 0077.00 SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + 0078.00 MSGDTA(&MSGDTA) TOPGMQ(*EXT) + 0079.00 MSGTYPE(*STATUS) 0080.00 SNDPGMMSG + 0081.00 MSG(' 導入は正常に完了しました。テープをは + 0082.00 ずしてください。 ') MSGTYPE(*COMP) 0083.00 RETURN 0084.00 0085.00 ERROR: RCVMSG RMV(*NO) MSG(&MSG) SEV(&SEV) 0086.00 IF COND(&MSG *NE ' ') THEN(DO) 0087.00 IF COND(&SEV *GE 30) THEN(DO) 0088.00 SNDPGMMSG MSG(&MSG) MSGTYPE(*DIAG) 0089.00 ENDDO 0090.00 GOTO ERROR 0091.00 ENDDO 0092.00 ENDPGM