home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / lansystk.zip / MPTSUTIL / APPLETS / CASENG6.CMD < prev    next >
OS/2 REXX Batch file  |  1998-05-08  |  37KB  |  1,267 lines

  1. /* Stripped by STRIPRX.EXE */
  2. parse arg cmdline
  3. glob.0logfile = "caseng6.log"
  4. CALL LINEOUT glob.0logfile,"CASENG6 invoked at" TIME() "on" DATE()
  5. CALL LINEOUT glob.0logfile,cmdline
  6. OPTIONS "ETMODE" 
  7. CALL LoadRexxUtil 
  8. YES = 0
  9. NO = 1
  10. CALL init 
  11. PARSE VAR cmdline parm1 .
  12. IF parm1 = "/?" | parm1 = "-?" THEN SIGNAL help
  13. irc = ParseCmdLine(cmdline) 
  14. IF irc = YES THEN 
  15. DO 
  16. CALL ReadParmFile glob.ParmFile 
  17. irc = ReadDatabase(glob.database)
  18. IF irc = YES THEN
  19. DO
  20. CALL BuildAliasTable 
  21. irc = ParseList(glob.listfile) 
  22. IF irc = YES THEN
  23. DO
  24. irc = BuildPrepFile() 
  25. IF glob.MayBeProblems <> 0 THEN
  26. CALL msgbox GetMsg(glob.0msg.PROBLEMS_TEXT),GetMsg(glob.0msg.PROBLEMS_TITLE),"OK","WARNING"
  27. END
  28. END
  29. END
  30. SIGNAL CommonExit
  31. init:
  32. E1MsgBase = 131
  33. E3MsgBase = 151
  34. E6MsgBase = 200
  35. glob.0msg.CANCEL_TEXT = E1MsgBase + 13
  36. glob.0msg.CANCEL_TITLE = E1MsgBase + 14
  37. glob.0msg.MISSINGLIST_TEXT = E6MsgBase + 0
  38. glob.0msg.MISSINGLIST_TITLE = E6MsgBase + 1
  39. glob.0msg.BADLISTELEM_TEXT = E6MsgBase + 2
  40. glob.0msg.NOLISTELEM_TITLE = E6MsgBase + 3
  41. glob.0msg.NOLISTELEM_TEXT = E6MsgBase + 4
  42. glob.0msg.COMMENT_TITLE = E6MsgBase + 5
  43. glob.0msg.COMMENT_GEN = E6MsgBase + 6
  44. glob.0msg.COMMENT_TIME = E6MsgBase + 7
  45. glob.0msg.COMMENT_PARMS = E6MsgBase + 8
  46. glob.0msg.COMMENT_APPLIST = E6MsgBase + 9
  47. glob.0msg.COMMENT_CONTENTS = E6MsgBase + 10
  48. glob.0msg.TOOMANYOS_TEXT = E6MsgBase + 11
  49. glob.0msg.TOOMANYOS_TITLE = E6MsgBase + 12
  50. glob.0msg.TOOMANYFIXES_TEXT = E6MsgBase + 13
  51. glob.0msg.CLProblem_TEXT = E6MsgBase + 14
  52. glob.0msg.CLProblem_TITLE = E6MsgBase + 15
  53. glob.0msg.Help_Text = E6MsgBase + 16
  54. glob.0msg.Help_Title = E6MsgBase + 17
  55. glob.0msg.DriveNotReady_Text = E6MsgBase + 18
  56. glob.0msg.DriveNotReady_Title = E6MsgBase + 19
  57. glob.0msg.NO_INSTCMD_Text = E6MsgBase + 20
  58. glob.0msg.DISKFULL_Text = E6MsgBase + 21
  59. glob.0msg.DISKIOERROR_Text = E6MsgBase + 22
  60. glob.0msg.DISKIOERROR_Title = E6MsgBase + 23
  61. glob.0msg.NO_MSCMD_Text = E6MsgBase + 24 
  62. glob.0msg.OSFIXMISMATCH_Title = E6MsgBase + 25
  63. glob.0msg.OSFIXMISMATCH_Text = E6MsgBase + 26
  64. glob.0msg.PROBLEMS_Text = E6MsgBase + 27
  65. glob.0msg.PROBLEMS_Title = E6MsgBase + 28
  66. glob.0msg.NOOSINSTALLED_Text = E6MsgBase + 29
  67. glob.ThisProgName = "CASSETUP"
  68. glob.ThisProgVer = "2.0"
  69. glob.Popup_Environment = "cmsgbox"
  70. glob.MsgFileName = "cassetup.msg"
  71. glob.0vars.DefaultHomeDrive = "X:"
  72. glob.0vars.Drives = "XYZSTUVW"
  73. glob.0vars.DefaultBootDrive = "C:"
  74. glob.0vars.DefaultMaintDrive = "C:"
  75. glob.0vars.DefaultMaintDir = "service"
  76. glob.0rc.MB_OK = 1
  77. glob.0rc.MB_CANCEL = 2
  78. glob.0rc.MB_ABORT = 3
  79. glob.0rc.MB_RETRY = 4
  80. glob.0rc.MB_IGNORE = 5
  81. glob.0rc.MB_YES = 6
  82. glob.0rc.MB_NO = 7
  83. glob.0rc.MB_ENTER = 8
  84. glob.0cmdline = cmdline
  85. glob.MayBeProblems = 0
  86. RETURN
  87. ParseCmdLine: PROCEDURE EXPOSE glob. YES NO
  88. PARSE ARG cmdline
  89. glob.listfile = ""
  90. glob.target = ""
  91. glob.database = ""
  92. glob.parmfile = ""
  93. DO WHILE cmdline <> ""
  94. PARSE VAR cmdline ThisOne cmdline
  95. PARSE VALUE STRIP(ThisOne,'b') WITH tag"="value
  96. tag = TRANSLATE(STRIP(tag,'b'))
  97. value = STRIP(value)
  98. SELECT
  99. WHEN tag = "/T" THEN glob.target = value
  100. WHEN tag = "/P" THEN glob.listfile = value
  101. WHEN tag = "/D" THEN glob.database = value
  102. WHEN tag = "/R" then glob.parmfile = value
  103. OTHERWISE nop
  104. END 
  105. END
  106. BadParm = "/P" 
  107. IF glob.listfile = "" THEN
  108. DO
  109. BadValue = "No Value"
  110. SIGNAL BadCL
  111. END
  112. ELSE
  113. IF STREAM(glob.listfile,'C','QUERY EXISTS') = "" THEN
  114. DO
  115. BadValue = glob.listfile
  116. SIGNAL BadCL
  117. END
  118. IF glob.target = "" THEN 
  119. glob.target = "stdout"
  120. BadParm = "/D" 
  121. IF glob.database = "" THEN
  122. DO
  123. BadValue = "No Value"
  124. SIGNAL BadCL
  125. END
  126. ELSE
  127. IF STREAM(glob.database,'C','QUERY EXISTS') = "" THEN
  128. DO
  129. BadValue = glob.database
  130. SIGNAL BadCL
  131. END
  132. BadParm = "/R" 
  133. IF glob.parmfile <> "" THEN
  134. IF STREAM(glob.parmfile,'C','QUERY EXISTS') = "" THEN
  135. DO
  136. BadValue = glob.parmfile
  137. SIGNAL BadCL
  138. END
  139. RETURN YES
  140. ReadDatabase: PROCEDURE EXPOSE glob. YES NO
  141. parse arg dbfile
  142. appno = 0
  143. aliasno = 0
  144. glob.servername = ""
  145. glob.SERVERPATH = ""
  146. glob.SRVIFSFLAG = 0 
  147. glob.cmdpath = ""
  148. glob.lcupath = "" 
  149. glob.lcualias = ""
  150. glob.lcualias.0drive = ""
  151. glob.logalias = ""
  152. glob.logalias.0drive = ""
  153. glob.exealias = ""
  154. glob.exealias.0drive = ""
  155. glob.dllalias = ""
  156. glob.dllalias.0drive = ""
  157. glob.cmdalias = ""
  158. glob.cmdalias.0drive = ""
  159. glob.rspalias = ""
  160. glob.rspalias.0drive = ""
  161. state = STARTING
  162. DO WHILE LINES(dbfile) > 0 & state <> DONE
  163. line = STRIP(LINEIN(dbfile),'b')
  164. if left(line,1) = "*" | line = "" then
  165. iterate 
  166. parse var line key"="val
  167. key = strip(key,"b")
  168. val = strip(val,"b")
  169. parse upper var key key
  170. SELECT 
  171. WHEN state = STARTING THEN 
  172. DO
  173. SELECT 
  174. WHEN key = "SERVER." THEN state = IN_SERVER
  175. OTHERWISE nop
  176. END
  177. END
  178. WHEN state = IN_SERVER THEN 
  179. DO
  180. SELECT
  181. WHEN key = "SRVIFS." THEN state = IN_SRVIFS 
  182. WHEN key = "SRVAPP." THEN 
  183. DO
  184. appno = appno + 1 
  185. glob.0app.appno.verified = NO
  186. glob.0app.appno.appname = ""
  187. glob.0app.appno.appnick = ""
  188. glob.0app.appno.profile = ""
  189. glob.0app.appno.images = ""
  190. glob.0app.appno.work = ""
  191. glob.0app.appno.dll = ""
  192. glob.0app.appno.log = ""
  193. glob.0app.appno.resp = ""
  194. glob.0app.appno.imgalias = ""
  195. glob.0app.appno.progtype = ""
  196. glob.0app.appno.imgalias.0drive = ""
  197. glob.0app.appno.package = 1
  198. glob.0app.appno.fixto = ""
  199. glob.0app.appno.maintsysreq = 0
  200. state = IN_APP
  201. END
  202. WHEN key = "ALIAS." THEN 
  203. DO
  204. aliasno = aliasno + 1
  205. glob.0alias.aliasno.aliasname = ""
  206. glob.0alias.aliasno.aliaspath = ""
  207. glob.0alias.aliasno.aliasdrive = ""
  208. state = "IN_ALIAS"
  209. END
  210. WHEN key = "SRVNAME" THEN
  211. glob.ServerName = val
  212. WHEN key = "ENDSERVER." THEN
  213. state = DONE 
  214. OTHERWISE nop
  215. END
  216. END
  217. WHEN state = IN_APP THEN 
  218. DO
  219. SELECT 
  220. WHEN key = "APPNAME" THEN glob.0app.appno.appname = val
  221. WHEN key = "APPNICK" THEN glob.0app.appno.appnick = TRANSLATE(val)
  222. WHEN key = "APPDIR" THEN glob.0app.appno.images = val
  223. WHEN key = "APPWRKDIR" THEN glob.0app.appno.work = val
  224. WHEN key = "APPPRO" THEN glob.0app.appno.profile = val
  225. WHEN key = "APPDLLDIR" THEN glob.0app.appno.dll = val
  226. WHEN key = "APPLOGDIR" THEN glob.0app.appno.log = val
  227. WHEN key = "APPRSPDIR" THEN glob.0app.appno.resp = val
  228. WHEN key = "APPALIAS" THEN glob.0app.appno.imgalias = val
  229. WHEN key = "APPPROGTYPE" THEN glob.0app.appno.progtype = val
  230. WHEN key = "APPFIXTO" THEN glob.0app.appno.fixto = val
  231. WHEN key = "APPPACKAGE" THEN glob.0app.appno.package = val
  232. WHEN key = "APPMAINTSYS" THEN glob.0app.appno.maintsysreq = val
  233. WHEN key = "ENDSRVAPP." THEN
  234. DO
  235. state = IN_SERVER
  236. IF glob.0app.appno.dll = "" THEN
  237. glob.0app.appno.dll = glob.0app.appno.work
  238. END
  239. OTHERWISE nop
  240. END
  241. END
  242. WHEN state = IN_ALIAS THEN
  243. DO
  244. SELECT
  245. WHEN key = "ALIASNAME" THEN glob.0alias.aliasno.aliasname = TRANSLATE(val)
  246. WHEN key = "ALIASPATH" THEN glob.0alias.aliasno.aliaspath = TRANSLATE(val)
  247. WHEN key = "ALIASDRIVE" THEN glob.0alias.aliasno.aliasdrive = TRANSLATE(val)
  248. WHEN key = "ENDALIAS." THEN state = "IN_SERVER"
  249. OTHERWISE nop
  250. END
  251. END
  252. WHEN state = IN_SRVIFS THEN
  253. DO
  254. SELECT
  255. WHEN key = "ENDSRVIFS." THEN state = IN_SERVER
  256. WHEN key = "SERVERPATH" THEN glob.SERVERPATH = val
  257. WHEN key = "SRVIFSFLAG" THEN glob.SRVIFSFLAG = val 
  258. WHEN key = "CMDDIR" THEN glob.cmdpath = val
  259. WHEN key = "LCUPATH" THEN glob.lcupath = val 
  260. WHEN key = "LCUALIAS" THEN glob.lcualias = val
  261. WHEN key = "LOGALIAS" THEN glob.logalias = val
  262. WHEN key = "WRKALIAS" THEN glob.wrkalias = val
  263. WHEN key = "DLLALIAS" THEN glob.dllalias = val
  264. WHEN key = "RSPALIAS" THEN glob.rspalias = val
  265. WHEN key = "CMDALIAS" THEN glob.cmdalias = val
  266. OTHERWISE nop
  267. END
  268. END
  269. END 
  270. END 
  271. glob.0app.0 = appno
  272. glob.0alias.0 = aliasno
  273. CALL STREAM dbfile,'c','CLOSE'
  274. IF glob.SRVIFSFLAG <> 1 THEN 
  275. DO
  276. CALL msgbox GetMsg(glob.0msg.BADLISTELEM_TEXT,"SRVIFS"),GetMsg(glob.0msg.NOLISTELEM_TITLE),"OK","ERROR"
  277. RETURN NO
  278. END
  279. RETURN YES
  280. BuildAliasTable: PROCEDURE EXPOSE glob. YES NO
  281. IF glob.lcualias = "" THEN CALL LINEOUT glob.0logfile,"Error no lcu alias" 
  282. IF glob.logalias = "" THEN CALL LINEOUT glob.0logfile,"Error no log alias" 
  283. IF glob.wrkalias = "" THEN CALL LINEOUT glob.0logfile,"Error no work alias" 
  284. IF glob.dllalias = "" THEN CALL LINEOUT glob.0logfile,"Error no DLL alias" 
  285. IF glob.rspalias = "" THEN CALL LINEOUT glob.0logfile,"Error no response file alias" 
  286. IF glob.cmdalias = "" THEN CALL LINEOUT glob.0logfile,"Error no command alias" 
  287. DO i = 1 to glob.0app.0
  288. IF glob.0app.i.IMGALIAS = "" THEN
  289. CALL LINEOUT glob.0logfile,"Error no application image alias" 
  290. END
  291. glob.0UniqAlias.0 = 0
  292. glob.lcualias.0drive = AddAlias(glob.lcualias)
  293. glob.logalias.0drive = AddAlias(glob.logalias)
  294. glob.wrkalias.0drive = AddAlias(glob.wrkalias)
  295. glob.dllalias.0drive = AddAlias(glob.dllalias)
  296. glob.rspalias.0drive = AddAlias(glob.rspalias)
  297. glob.cmdalias.0drive = AddAlias(glob.cmdalias)
  298. DO i = 1 to glob.0app.0
  299. IF glob.0app.i.imgalias <> "" THEN
  300. glob.0app.i.imgalias.0drive = AddAlias(glob.0app.i.imgalias)
  301. END
  302. glob.ThinString = TheAliasThatHas(glob.lcualias.0drive)
  303. IF glob.dllalias.0drive <> glob.lcualias.0drive THEN
  304. glob.ThinString = Glob.ThinString" "TheAliasThatHas(glob.dllalias.0drive)
  305. IF glob.logalias.0drive <> glob.lcualias.0drive & glob.logalias.0drive <> glob.dllalias.0drive THEN
  306. glob.ThinString = glob.ThinString" "TheAliasThatHas(glob.logalias.0drive)
  307. IF glob.cmdalias.0drive <> glob.lcualias.0drive & glob.cmdalias.0drive <> glob.dllalias.0drive & glob.cmdalias.0drive <> glob.logalias.0drive THEN 
  308. glob.ThinString = glob.ThinString" "TheAliasThatHas(glob.cmdalias.0drive) 
  309. RETURN
  310. AddAlias: PROCEDURE EXPOSE glob. YES NO
  311. parse arg alias
  312. alias = TRANSLATE(alias)
  313. DO i = 1 to glob.0UniqAlias.0
  314. IF glob.0UniqAlias.i = alias THEN 
  315. RETURN glob.0UniqAlias.i.0Drive 
  316. END
  317. i = FindAliasIndex(alias)
  318. IF i =0 THEN
  319. RETURN SUBSTR(glob.0vars.Drives,1,1)
  320. DO k = 1 to glob.0UniqAlias.0
  321. j = glob.0UniqAlias.0index
  322. IF glob.0alias.j.aliaspath = glob.0alias.i.aliaspath & glob.0alias.j.aliasro = glob.0alias.i.aliasro THEN
  323. RETURN glob.0UniqAlias.k.0drive
  324. END
  325. glob.0UniqAlias.0 = k
  326. glob.0UniqAlias.k = alias
  327. glob.0UniqAlias.k.0index = i
  328. glob.0UniqAlias.k.0drive = SUBSTR(glob.0vars.Drives,k,1)
  329. RETURN glob.0UniqAlias.k.0Drive
  330. FindAliasIndex: PROCEDURE EXPOSE glob. YES NO
  331. parse arg alias
  332. alias = TRANSLATE(alias)
  333. DO i = 1 to glob.0alias.0
  334. IF glob.0alias.i.aliasname = alias THEN RETURN i
  335. END
  336. RETURN 0
  337. TheAliasThatHas: PROCEDURE EXPOSE glob. YES NO
  338. parse arg drive
  339. DO i = 1 to glob.0UniqAlias.0
  340. IF glob.0UniqAlias.i.0Drive = drive THEN LEAVE
  341. END
  342. IF i > glob.0UniqAlias.0 THEN
  343. do 
  344. CALL LINEOUT glob.0logfile,"Error no uniq alias found" 
  345. RETURN glob.0UniqAlias.1 
  346. end 
  347. ELSE
  348. RETURN glob.0UniqAlias.i
  349. ParseList: PROCEDURE EXPOSE glob. YES NO
  350. parse arg filename
  351. glob.TheOS = 0 
  352. glob.TheOSFix = 0 
  353. glob.TheTransport = 0 
  354. glob.TheTransportFix = 0 
  355. glob.MaintSysReq = 0 
  356. glob.TheOSWillBeInstalled = 0 
  357. glob.TheOSFixWillBeInstalled = 0
  358. glob.TheTransportWillBeInstalled = 0
  359. glob.OnlyAppsWillBeInstalled = 1
  360. glob.0list.0 = 0
  361. DO WHILE LINES(filename) > 0
  362. line = STRIP(LINEIN(filename),'b')
  363. IF line = "" | LEFT(line,1) = "*" THEN ITERATE 
  364. PARSE VAR line lappname','target_override
  365. IF VerifyListElement(STRIP(lappname,'b'),YES) = NO THEN
  366. RETURN NO
  367. i = glob.0list.0
  368. glob.0list.i.tgt = STRIP(target_override,'b')
  369. END
  370. glob.NumAppsSelected = glob.0list.0
  371. IF glob.NumAppsSelected = 0 THEN
  372. DO
  373. CALL msgbox GetMsg(glob.0msg.NOLISTELEM_TEXT),GetMsg(glob.0msg.NOLISTELEM_TITLE),"OK","ERROR"
  374. RETURN NO
  375. END
  376. CALL STREAM filename,'c','close'
  377. IF glob.TheOS = 0 & glob.TheOSFix = 0 THEN
  378. DO
  379. IF glob.0parm.LvlOfOS = "" THEN
  380. DO
  381. glob.0parm.LvlOfOS = "" 
  382. DO i = 1 to glob.0app.0
  383. IF glob.0app.i.PROGTYPE = 1 & glob.0app.i.PACKAGE = 1 THEN
  384. glob.0parm.LvlOFOS = glob.0app.i.APPNICK
  385. END
  386. IF glob.0parm.LvlOfOS = "" & glob.MaintSysReq = 1 THEN 
  387. glob.0parm.LvlOfOS = "OS/2"
  388. END
  389. IF glob.0parm.LvlOfOS <> "" THEN 
  390. IF VerifyListElement(glob.0parm.LvlOfOS,NO) = NO THEN
  391. RETURN NO
  392. i = glob.0list.0
  393. glob.0list.i.tgt = ""
  394. END
  395. ELSE
  396. IF glob.TheOS = 0 & glob.TheOSFix <> 0 THEN
  397. DO
  398. i = glob.TheOSFix
  399. j = glob.0list.i.DBindex
  400. IF VerifyListElement(glob.0app.j.FIXTO,NO) THEN 
  401. RETURN NO
  402. i = glob.0list.0
  403. glob.0list.i.tgt = ""
  404. END
  405. ELSE 
  406. IF glob.TheOS <> 0 & glob.TheOSFix <> 0 THEN
  407. DO
  408. i = glob.TheOS
  409. j = glob.TheOSFix
  410. ix = glob.0list.i.DBindex
  411. jx = glob.0list.j.DBindex
  412. IF TRANSLATE(glob.0app.jx.FIXTO) <> TRANSLATE(glob.0app.ix.appnick) THEN 
  413. DO
  414. CALL MsgBox GetMsg(glob.0msg.OSFIXMISMATCH_Text),GetMsg(glob.0msg.OSFIXMISMATCH_Title),"OK","ERROR"
  415. RETURN NO
  416. END
  417. END 
  418. IF glob.MaintSysReq = 0 THEN 
  419. RETURN YES 
  420. IF glob.TheTransport = 0 THEN 
  421. DO
  422. DO i = 1 to glob.0app.0 
  423. IF glob.0app.i.PROGTYPE = 2 THEN LEAVE
  424. END
  425. IF i <= glob.0app.0 THEN
  426. DO
  427. CALL VerifyListElement glob.0app.i.appnick,NO
  428. i = glob.0list.0
  429. glob.0list.i.tgt = ""
  430. END
  431. ELSE 
  432. IF glob.MaintSysReq = 1 THEN 
  433. DO
  434. CALL msgbox GetMsg(glob.0msg.BADLISTELEM_TEXT,"MPTS"),GetMsg(glob.0msg.NOLISTELEM_TITLE),"OK","ERROR"
  435. RETURN NO
  436. END
  437. END
  438. RETURN YES
  439. ReadParmFile: PROCEDURE EXPOSE glob. YES NO
  440. parse arg TheParmfile
  441. glob.0parm.BootD = "Y" 
  442. glob.0parm.BootDrive = glob.0vars.DefaultBootDrive 
  443. glob.0parm.MaintDrive = glob.0vars.DefaultMaintDrive 
  444. glob.0parm.LvlOfOS = "" 
  445. glob.0parm.oslofos = ""
  446. glob.0parm.FixLvl = "" 
  447. glob.MaintDrive = glob.0parm.MaintDrive 
  448. IF TheParmfile = "" THEN RETURN 
  449. parmlist = "BOOTD BOOTDRIVE MAINTDRIVE OSLOFOS FIXLVL"
  450. DO WHILE LINES(TheParmfile) > 0
  451. line = STRIP(linein(TheParmfile),'b')
  452. PARSE var line key"="val
  453. key = TRANSLATE(STRIP(key,'b'))
  454. IF WORDPOS(key, parmlist) > 0 THEN
  455. glob.0parm.key = STRIP(val,'b')
  456. END
  457. CALL STREAM TheParmfile,'c','close'
  458. glob.0parm.LvlOfOs = glob.0parm.oslofos 
  459. glob.MaintDrive = LEFT(glob.0parm.MaintDrive,1)":" 
  460. RETURN
  461. VerifyListElement: PROCEDURE EXPOSE glob. YES NO
  462. parse arg lappname,installable
  463. lappname = STRIP(lappname,'b')
  464. j = AppIndexInDatabase(lappname)
  465. IF j = 0 THEN
  466. DO
  467. CALL msgbox GetMsg(glob.0msg.BADLISTELEM_TEXT,lappname),GetMsg(glob.0msg.NOLISTELEM_TITLE),"OK","ERROR"
  468. RETURN NO
  469. END
  470. i = glob.0list.0 + 1
  471. glob.0list.i = lappname
  472. glob.0list.i.DBIndex = j
  473. glob.0list.0 = i
  474. irc = ReadProfile(glob.0app.j.profile,i)
  475. IF irc <> YES THEN LEAVE
  476. type = glob.0APP.j.PROGTYPE
  477. IF type <> 4 & installable = YES THEN
  478. glob.OnlyAppsWillBeInstalled = 0
  479. IF type = 1 THEN 
  480. DO
  481. IF glob.0APP.j.PACKAGE = 1 THEN 
  482. DO
  483. IF glob.TheOS <> 0 THEN
  484. DO
  485. msgno = glob.0msg.TOOMANYOS_TEXT
  486. ix = glob.TheOS
  487. parm1 = glob.0list.ix
  488. msg = GetMsg(msgno,parm1,glob.0list.i)
  489. title = GetMsg(glob.0msg.TOOMANYOS_TITLE)
  490. CALL MsgBox msg,title,"OK","ERROR"
  491. RETURN NO
  492. END
  493. ELSE
  494. DO
  495. glob.TheOS = i
  496. IF installable = YES THEN
  497. glob.TheOSWillBeInstalled = 1
  498. END
  499. END
  500. ELSE
  501. DO
  502. IF glob.TheOSFix <> 0 THEN
  503. DO
  504. ix = glob.TheOSFix
  505. msg = GetMsg(glob.0msg.TOOMANYFIXES_TEXT,glob.0list.ix,glob.0list.i)
  506. title = GetMsg(glob.0msg.TOOMANYOS_TITLE)
  507. CALL MsgBox msg,title,"OK","ERROR"
  508. END
  509. ELSE
  510. DO
  511. glob.TheOSFix = i
  512. IF installable = YES THEN
  513. glob.TheOSFixWillBeInstalled = 1
  514. END
  515. END
  516. END 
  517. j = glob.0LIST.i.DBindex
  518. IF type = 2 THEN 
  519. IF glob.0APP.j.PACKAGE = 1 THEN 
  520. IF glob.TheTransport <> 0 THEN
  521. DO
  522. msgno = glob.0msg.TOOMANYTRANSPORTS_TEXT
  523. ix = glob.TheTransport
  524. parm1 = glob.0list.ix
  525. msg = GetMsg(msgno,parm1,glob.0list,i)
  526. title = GetMsg(glob.0msg.TOOMANYOS_TITLE)
  527. CALL MsgBox msg,title,"OK","ERROR"
  528. RETURN NO
  529. END
  530. ELSE
  531. DO
  532. glob.TheTransport = i
  533. IF installable = YES THEN
  534. glob.TheTransportWillBeInstalled = 1
  535. END
  536. ELSE
  537. IF glob.TheTransportFix <> 0 THEN
  538. DO
  539. ix = glob.TheTransportFix
  540. msg = GetMsg(glob.0msg.TOOMANYFIXES_TEXT,glob.0list.ix,glob.0list.i)
  541. title = GetMsg(glob.0msg.TOOMANYOS_TITLE)
  542. CALL MsgBox,msg,title,"OK","ERROR"
  543. END
  544. ELSE
  545. glob.TheTransportFix = i
  546. j = glob.0LIST.i.DBindex
  547. IF installable = YES THEN
  548. IF glob.0APP.j.MAINTSYSREQ = 1 THEN
  549. glob.MAINTSYSREQ = 1
  550. RETURN YES
  551. ReadProfile: PROCEDURE EXPOSE glob. YES
  552. parse arg profname,appindex
  553. findlist = "APPNAME APPNICK PACKAGE FIXTO PROGTYPE INSTCMD INSTCMDM MAINTSYSREQ MAINTSYSBUILD DEFRESPFILE"
  554. glob.0list.appindex.APPNAME = ""
  555. glob.0list.appindex.APPNICK = ""
  556. glob.0list.appindex.PACKAGE = 1
  557. glob.0list.appindex.FIXTO = ""
  558. glob.0list.appindex.PROGTYPE = 4
  559. glob.0list.appindex.INSTCMD = ""
  560. glob.0list.appindex.INSTCMDM = ""
  561. glob.0list.appindex.MAINTSYSREQ = 0
  562. glob.0list.appindex.MAINTSYSBUILD = ""
  563. glob.0list.appindex.DEFRESPFILE = ""
  564. glob.0list.appindex.MSCMD.0 = 0
  565. DO WHILE LINES(profname) > 0
  566. line = STRIP(linein(profname),'b')
  567. PARSE var line key"="val
  568. key = TRANSLATE(STRIP(key,'b'))
  569. IF WORDPOS(key, findlist) > 0 | LEFT(key,6) = "MSCMD." THEN
  570. glob.0list.appindex.key = STRIP(val,'b')
  571. END
  572. CALL STREAM profname,'c','close'
  573. IF glob.0list.appindex.INSTCMD = "" THEN
  574. DO
  575. glob.0list.appindex.INSTCMD = GetMsg(glob.0msg.NO_INSTCMD_Text)
  576. glob.MayBeProblems = 1
  577. END
  578. DO i = 1 to glob.0list.appindex.MSCMD.0 
  579. IF glob.0list.appindex.MSCMD.i = "" | glob.0list.appindex.MSCMD.i = "GLOB.0LIST."appindex".MSCMD."i THEN
  580. DO
  581. glob.0list.appindex.MSCMD.i = GetMsg(glob.0msg.NO_MSCMD_TEXT,"MSCMD."i)
  582. glob.MayBeProblems = 1 
  583. END
  584. END
  585. RETURN YES
  586. BuildPrepFile: PROCEDURE EXPOSE glob. YES NO
  587. irc = CheckAvailabilityOfTarget(glob.target)
  588. IF irc = YES THEN
  589. IF glob.target <> "stdout" THEN
  590. IF STREAM(glob.target,'c','query exists') <> "" THEN
  591. CALL SysFileDelete(glob.target)
  592. IF irc = YES THEN
  593. irc = BuildComments()
  594. IF irc = YES THEN
  595. irc = BuildVars()
  596. IF irc = YES THEN
  597. irc = BuildSrvAttch()
  598. IF irc = YES THEN
  599. irc = BuildProg()
  600. IF irc = YES THEN
  601. irc = BuildUtility()
  602. IF irc = YES THEN
  603. irc = BuildInstall()
  604. CALL STREAM glob.target,'c','close'
  605. RETURN irc
  606. CheckAvailabilityOfTarget: PROCEDURE EXPOSE glob. YES NO
  607. parse arg tgt
  608. IF tgt = "stdout" THEN RETURN YES
  609. IF SUBSTR(tgt,2,1) <> ":" THEN
  610. drive = LEFT(DIRECTORY(),1)
  611. ELSE
  612. drive = LEFT(tgt,1)
  613. driveinfo = SysDriveInfo(drive)
  614. DO WHILE driveinfo = ""
  615. brc = msgbox(GetMsg(glob.0msg.DriveNotReady_Text,drive),GetMsg(glob.0msg.DriveNotReady_Title),"WARNING","OKCANCEL")
  616. IF circ = glob.0rc.MB_CANCEL THEN
  617. RETURN NO
  618. driveinfo = SysDriveInfo(drive)
  619. END
  620. RETURN YES
  621. BuildComments: PROCEDURE EXPOSE glob. YES NO
  622. rm = 69
  623. o = glob.target
  624. cline.1 = GetMsg(glob.0msg.COMMENT_TITLE)
  625. cline.2 = GetMsg(glob.0msg.COMMENT_GEN,glob.ThisProgName,glob.ThisProgVer)
  626. cline.3 = "               "GetMsg(glob.0msg.COMMENT_TIME,TIME(),DATE())
  627. cline.4 = " "
  628. cline.5 = GetMsg(glob.0msg.COMMENT_PARMS,"CASENG6")
  629. cline.0 = 5
  630. cmdline = glob.0cmdline
  631. DO WHILE cmdline <> ""
  632. PARSE VAR cmdline ThisParm cmdline
  633. i = cline.0 + 1
  634. cline.i = ThisParm
  635. cline.0 = i
  636. END
  637. i = cline.0 + 1
  638. cline.i = " "
  639. i = i + 1
  640. cline.i = GetMsg(glob.0msg.COMMENT_APPLIST,glob.listfile)
  641. i = i + 1
  642. cline.i = GetMsg(glob.0msg.COMMENT_CONTENTS)
  643. cline.0 = i
  644. DO WHILE LINES(glob.listfile) > 0
  645. i = cline.0 + 1
  646. cline.i = LINEIN(glob.listfile)
  647. cline.0 = i
  648. END
  649. CALL STREAM glob.listfile,'c','close'
  650. DO i = 1 to cline.0
  651. CALL E6LnOut o,OVERLAY("*/","/* "cline.i" ",MAX(rm, LENGTH(cline.i)+4))
  652. END
  653. CALL E6LnOut o," "
  654. RETURN YES
  655. BuildVars: PROCEDURE EXPOSE glob. YES NO
  656. rm = 50
  657. o = glob.target
  658. CALL E6LnOut o," "
  659. CALL E6LnOut o,":vars"
  660. line = "homedrive = "glob.0vars.DefaultHomeDrive
  661. comment = "THINIFS /D parameter"
  662. CALL E6LnOut o,FmtLine(line,comment)
  663. DO i = 1 to glob.0UniqAlias.0
  664. line = "d"i "= "glob.0UniqAlias.i.0Drive":"
  665. comment = "Drive for alias" glob.0UniqAlias.i
  666. CALL E6LnOut o,FmtLine(line, comment)
  667. END
  668. line = "bootdrive = "STRIP(glob.0parm.BootDrive,'t',":")":" 
  669. comment = "boot drive"
  670. CALL E6LnOut o,FmtLine(line,comment)
  671. line = "maintdrive = "glob.MaintDrive 
  672. comment = "Maintenance Sys Drive"
  673. CALL E6LnOut o,FmtLine(line,comment)
  674. line = 'maint_dir = "maintdrive"\'glob.0vars.DefaultMaintDir
  675. comment = "Maintenance Sys Dir"
  676. CALL E6LnOut o,FmtLine(line,comment)
  677. line = "srvifs_server1 ="glob.ServerName
  678. comment = "SRVIFS server name"
  679. CALL E6LnOut o,FmtLine(line,comment)
  680. i = glob.TheOS
  681. j = glob.0list.i.DBIndex
  682. IF glob.0app.j.work = "GLOB.0APP."j".WORK" THEN 
  683. line = "exepath = "GetMsg(glob.0msg.NOOSINSTALLED_Text)
  684. ELSE
  685. line = "exepath = "bldpath(glob.wrkalias.0drive":",glob.0app.j.work)
  686. comment = "SETBOOT path"
  687. CALL E6LnOut o,FmtLine(line,comment)
  688. line = "lcupath = "bldpath(glob.lcualias.0drive":",glob.lcupath"\img\lcu") 
  689. comment = "access to LCU commands"
  690. CALL E6LnOut o,FmtLine(line,comment)
  691. line = "srvifspath = "bldpath(glob.lcualias.0drive":",glob.lcupath"\img\srvifs") 
  692. comment = "access to SRVIFS commands"
  693. CALL E6LnOut o,FmtLine(line,comment)
  694. line = "cmdpath = "bldpath(glob.CMDALIAS.0drive":",glob.cmdpath)
  695. comment = "path to this command file"
  696. CALL E6LnOut o,FmtLine(line,comment)
  697. IF glob.TheOS = 0 THEN 
  698. line = "rexxpath = "bldpath(glob.lcualias.0drive":","dll")
  699. ELSE 
  700. DO
  701. i = glob.TheOS
  702. j = glob.0list.i.DBIndex
  703. IF glob.0app.j.dll = "GLOB.0APP."j".DLL" THEN 
  704. line = "rexxpath = "GetMsg(glob.0msg.NOOSINSTALLED_Text)
  705. ELSE
  706. line = "rexxpath = "bldpath(glob.DLLALIAS.0drive":",glob.0app.j.dll)
  707. END
  708. comment = "where REXX DLLs are"
  709. CALL E6LnOut o,FmtLine(line,comment)
  710. line = 'ifsdir = "bootdrive"\srvifsrq'
  711. comment = "where SRVIFS will be installed"
  712. CALL E6LnOut o,FmtLine(line,comment)
  713. DO i = 1 to glob.0list.0
  714. j = glob.0list.i.DBIndex
  715. CALL E6LnOut o," "
  716. line = glob.0app.j.appnick"_images = "
  717. line = line || bldpath(glob.0app.j.imgalias.0drive":",glob.0app.j.images)
  718. comment = "image directory for "glob.0app.j.appnick
  719. CALL E6LnOut o,FmtLine(line,comment)
  720. line = glob.0app.j.appnick"_exepath = "
  721. line = line || bldpath(glob.wrkalias.0drive":",glob.0app.j.work)
  722. comment = "exe dir for "glob.0app.j.appnick
  723. CALL E6LnOut o,FmtLine(line,comment)
  724. line = glob.0app.j.appnick"_logpath = "
  725. line = line || bldpath(glob.logalias.0drive":",glob.0app.j.log)
  726. comment = "log dir for "glob.0app.j.appnick
  727. CALL E6LnOut o,FmtLine(line,comment)
  728. line = glob.0app.j.appnick"_rsppath = "
  729. line = line || bldpath(glob.rspalias.0drive":",glob.0app.j.resp)
  730. comment = "resp file dir for "glob.0app.j.appnick
  731. CALL E6LnOut o,FmtLine(line,comment)
  732. line = glob.0app.j.appnick"_dllpath = "
  733. line = line || bldpath(glob.dllalias.0drive":",glob.0app.j.dll)
  734. comment = "dll dir for "glob.0app.j.appnick
  735. CALL E6LnOut o,FmtLine(line,comment)
  736. line = "" 
  737. IF glob.0list.i.tgt <> "" THEN
  738. line = glob.0app.j.appnick"_target = "glob.0list.i.tgt
  739. IF line <> "" THEN 
  740. DO
  741. comment = "install target override"
  742. CALL E6LnOut o,FmtLine(line,comment)
  743. END 
  744. END
  745. CALL E6LnOut o,":endvars"
  746. RETURN 0
  747. FmtLine: PROCEDURE
  748. parse arg ln,cmt
  749. RETURN OVERLAY("/* "cmt "*/",ln,MAX(50,LENGTH(ln) + 2))
  750. BuildSrvAttch: PROCEDURE EXPOSE glob. YES NO srvifs_server1 
  751. IF glob.0alias.0 = 0 THEN RETURN YES
  752. o =glob.target
  753. CALL E6LnOut o," "
  754. CALL E6LnOut o,"/* SRVATTACHES */"
  755. CALL E6LnOut o,":srvattch"
  756. DO i = 1 to glob.0UniqAlias.0
  757. IF WORDPOS(glob.0UniqAlias.i,glob.ThinString) = 0 THEN
  758. CALL E6LnOut o,'"d'i'"  \\"srvifs_server1"\'||glob.0UniqAlias.i 
  759. END
  760. CALL E6LnOut o,":endsrvattch"
  761. RETURN YES
  762. BuildProg: PROCEDURE EXPOSE glob. YES NO
  763. o = glob.target
  764. CALL E6LnOut o," "
  765. DO i = 1 to glob.NumAppsSelected
  766. CALL MakeProg i
  767. END
  768. IF glob.MaintSysReq = 1 THEN
  769. DO
  770. IF glob.TheOSFix <> 0 THEN 
  771. CALL MakeMSProg glob.TheOSFix
  772. IF glob.TheOSWillBeInstalled THEN
  773. IF glob.TheTransportWillBeInstalled = 0 THEN
  774. CALL MakeProg glob.TheTransport
  775. IF glob.TheTransportFix <> 0 THEN
  776. CALL MakeMSProg glob.TheTransportFix
  777. END
  778. RETURN YES
  779. BuildUtility: PROCEDURE EXPOSE glob. YES NO
  780. CALL E6LnOut glob.target," "
  781. IF glob.MaintSysReq THEN
  782. DO
  783. CALL MakeMSUtil glob.TheOS 
  784. CALL MakeMSUtil glob.TheTransport 
  785. END
  786. CALL MakeLCUUtil
  787. CALL MakeSRVIFSUtil
  788. RETURN YES
  789. BuildInstall: PROCEDURE EXPOSE glob. YES NO
  790. o = glob.target
  791. CALL E6LnOut o," "
  792. CALL E6LnOut o,":install keywords"
  793. IF glob.TheOSWillBeInstalled THEN
  794. DO
  795. i = glob.TheOS
  796. j = glob.0LIST.i.DBIndex
  797. IF glob.0APP.j.MAINTSYSREQ = 1 THEN
  798. CALL MakeSEMAINTInstall
  799. CALL MakeSEINSTInstall
  800. END
  801. IF glob.TheOSFixWillBeInstalled THEN
  802. DO
  803. i = glob.TheOSFix
  804. j = glob.0LIST.i.DBIndex
  805. IF glob.0APP.j.MAINTSYSREQ = 1 THEN
  806. CALL MakeSEMAINTInstall
  807. CALL E6LnOut o,glob.0list.i
  808. END
  809. IF glob.TheTransportWillBeInstalled & glob.TheOSWillBeInstalled = 0 THEN
  810. DO
  811. i = glob.TheTransport
  812. j = glob.0LIST.i.DBIndex
  813. IF glob.0APP.j.MAINTSYSREQ = 1 THEN
  814. CALL MakeSEMAINTInstall
  815. CALL MakeTransportInstall
  816. END
  817. CALL MakeAppInstalls
  818. CALL MakeFixInstalls
  819. CALL E6LnOut o,"ifsdel+casdelet"
  820. CALL E6LnOut o,":endinstall"
  821. RETURN YES
  822. MakeAppInstalls: PROCEDURE EXPOSE glob. YES NO
  823. o = glob.target
  824. list = ""
  825. DO i = 1 to glob.0list.0
  826. j = glob.0LIST.i.DBIndex
  827. IF glob.0APP.j.PROGTYPE = 4 & glob.0APP.j.PACKAGE = 1 THEN
  828. list = list||j" "
  829. END
  830. IF list <> "" & glob.OnlyAppsWillBeInstalled THEN
  831. DO
  832. CALL E6LnOut o,"userline=if BootDriveIsFixedDisk() == YES then iterate"
  833. line = "+"
  834. line = AddLCUToLine(line)
  835. CALL E6LnOut o,line
  836. END
  837. DO WHILE list <> ""
  838. PARSE VAR list ThisItem list
  839. ThisItem = STRIP(ThisItem,'b')
  840. IF glob.0APP.ThisItem.MaintSysReq = 1 THEN
  841. CALL MakeSEMAINTInstall
  842. CALL E6LnOut o,glob.0APP.ThisItem.APPNICK
  843. END
  844. RETURN
  845. MakeSEMAINTInstall: PROCEDURE EXPOSE glob. YES NO
  846. o = glob.target
  847. line = ""
  848. line = AddMSToLine(line,glob.TheOS)
  849. line = AddMSToLine(line,glob.TheOSFix)
  850. line = AddMSToLIne(line,glob.TheTransport)
  851. line = AddMSToLine(line,TheTransportFix)
  852. line = AddLCUtoLine(line)
  853. CALL E6LnOut o,line
  854. RETURN
  855. MakeSEINSTinstall: PROCEDURE EXPOSE YES NO glob.
  856. o = glob.target
  857. i = glob.TheOS
  858. j = glob.TheTransport
  859. ix = glob.0LIST.i.DBindex
  860. jx = glob.0LIST.j.DBindex
  861. line = glob.0APP.ix.APPNICK
  862. line = line"+"glob.0APP.jx.APPNICK"_maint"
  863. line = AddLCUtoLine(line)
  864. CALL E6LnOut o,line
  865. RETURN
  866. MakeFixInstalls: PROCEDURE EXPOSE glob. YES NO
  867. o = glob.target
  868. mlist = ""
  869. nmlist = ""
  870. DO i = 1 to glob.0list.0
  871. DO
  872. j = glob.0list.i.DBindex
  873. IF glob.0app.j.PACKAGE = 2 & glob.0app.j.PROGTYPE <> 1 THEN
  874. IF glob.0APP.j.MAINTSYSREQ = 1 THEN
  875. mlist = mlist || glob.0app.j.appnick" "
  876. ELSE
  877. nmlist = nmlist || glob.0app.j.appnick" "
  878. END
  879. END
  880. IF mlist <> "" THEN
  881. DO
  882. CALL MakeSEMAINTInstall
  883. line = ""
  884. DO WHILE mlist <> ""
  885. PARSE VAR mlist ThisItem mlist
  886. ThisItem = STRIP(ThisItem,'b')
  887. IF line = "" THEN
  888. line = ThisItem
  889. ELSE
  890. line = line"+"ThisItem
  891. END
  892. CALL E6LnOut o,line
  893. END
  894. IF nmlist <> "" THEN
  895. DO WHILE nmlist <> ""
  896. PARSE VAR nmlist ThisItem nmlist
  897. ThisItem = STRIP(ThisItem,'b')
  898. CALL E6LnOut o,ThisItem
  899. END
  900. RETURN
  901. MakeTransportInstall: PROCEDURE EXPOSE glob. YES NO
  902. o = glob.target
  903. CALL E6LnOut o,"userline=if BootDriveIsFixedDisk() = YES then iterate"
  904. line = "+"
  905. j = glob.TheTransport 
  906. jx = glob.0LIST.j.DBindex
  907. line = line||glob.0APP.jx.APPNICK"_maint"
  908. IF glob.NumAppsSelected = 1 THEN
  909. line = line"+"casdelet
  910. IF glob.NumAppsSelected > 1 THEN
  911. line = AddLCUToLine(line)
  912. line = line ||"+" 
  913. CALL E6LnOut o,line
  914. IF glob.NumAppsSelected > 1 THEN
  915. CALL E6LnOut o,"userline=CALL RebootAndGoToState(2)"
  916. ELSE
  917. CALL E6LnOut o,"userline=CALL reboot"
  918. i = glob.TheTransport
  919. j = glob.0LIST.i.DBIndex
  920. CALL E6LnOut o,glob.0app.j.appnick
  921. RETURN
  922. ADDLCUToLine: PROCEDURE EXPOSE glob. YES NO
  923. parse arg line
  924. IF line <> "" & RIGHT(line,1) <> "+" THEN
  925. line = line || "+"
  926. DO i = 1 to glob.0UniqAlias.0
  927. IF WORDPOS(glob.0UniqAlias.i,glob.ThinString) <> 0 THEN
  928. line = line || "thinifs"i || "+"
  929. END
  930. line = line || "casinstl"
  931. RETURN line
  932. MakeProg: PROCEDURE EXPOSE glob. YES NO o
  933. parse arg i
  934. TheFile = glob.target
  935. TheCmd = glob.0list.i.INSTCMD
  936. j = glob.0list.i.DBIndex
  937. TheShortName = glob.0APP.j.appnick
  938. TheLongName = glob.0APP.j.appname
  939. CALL WriteProg
  940. IF glob.0list.i.INSTCMDM <> "" THEN
  941. DO
  942. TheCmd = glob.0list.i.INSTCMDM
  943. TheShortName = TheShortName"_maint"
  944. TheLongName = TheLongName" (under maint sys)"
  945. CALL WriteProg
  946. END
  947. RETURN
  948. MakeMSProg: PROCEDURE EXPOSE glob. YES NO o
  949. parse arg i
  950. CALL MakeTranslateTable i
  951. TheCmdList = glob.0list.i.MAINTSYSBUILD
  952. DO WHILE TheCmdList <> ""
  953. PARSE VAR TheCmdList j TheCmdList
  954. j = STRIP(j,'b')
  955. TheShortName = glob.0list.i.MSCMD.j.0CmdName
  956. TheLongName = TheShortName
  957. TheFile = glob.Target
  958. j = glob.0list.i.DBIndex
  959. TheCmd = StringReplace(glob.0list.i.MSCMD.j)
  960. CALL E6LnOut o,":prog" TheShortName
  961. CALL E6LnOut o,"name = "TheLongName
  962. PARSE VAR TheCmd ThisPart"/"TheCmd
  963. CALL E6LnOut o,"invoke = "ThisPart
  964. DO WHILE TheCmd <> ""
  965. PARSE VAR TheCmd ThisPart"/"TheCmd
  966. CALL E6LnOut o,"                             /"ThisPart
  967. END
  968. CALL E6LnOut ":endprog"
  969. CALL E6LnOut o," "
  970. END
  971. RETURN
  972. WriteProg:
  973. CALL MakeTranslateTable i
  974. j = glob.0LIST.i.DBIndex
  975. IF glob.0APP.j.progtype <> 1 THEN
  976. IF glob.0APP.j.package = 2 THEN
  977. IF POS("FSERVICE",TRANSLATE(TheCmd)) <> 0 THEN
  978. TheCmd = FixSlashT(TheCmd)
  979. TheCmd = StringReplace(TheCmd)
  980. CALL E6LnOut o,":prog" TheShortName 
  981. CALL E6LnOut o,"name = "TheLongName 
  982. PARSE VAR TheCmd ThisPart"/"TheCmd
  983. CALL E6LnOut o,"invoke = "ThisPart
  984. DO WHILE TheCmd <> ""
  985. PARSE VAR TheCmd ThisPart"/"TheCmd
  986. CALL E6LnOut o,"                             /"ThisPart
  987. END
  988. IF glob.0list.i.defrespfile <> "" THEN
  989. DO
  990. CALL E6LnOut o,'rspdir = "'glob.0app.j.appnick'_rsppath"'
  991. CALL E6LnOut o,'default = 'glob.0list.i.defrespfile
  992. END
  993. CALL E6LnOut o,":endprog"
  994. CALL E6LnOut o," "
  995. RETURN
  996. MakeLCUUtil: PROCEDURE EXPOSE glob. YES NO
  997. TheShortName = "casinstl"
  998. TheLongName = "LAN CID Utility"
  999. TheCmd = '"lcupath"\casinstl /cmd:"cmdpath" '
  1000. TheCmd = TheCmd || '/tu:"bootdrive" '
  1001. TheCmd = TheCmd || '/pl:"rexxpath" '
  1002. TheCmd = TheCmd || '/pa:"lcupath" '
  1003. TheCmd = TheCmd || '/l1:'glob.lcualias.0Drive':\'
  1004. IF glob.lcupath <> "" THEN 
  1005. TheCmd = TheCmd || STRIP(glob.lcupath,'b','\') || "\"
  1006. TheCmd = TheCmd || 'LOG\lcu\"client".log ' 
  1007. TheCmd = TheCmd || '/l2:'glob.lcualias.0Drive':\'
  1008. IF glob.lcupath <> "" THEN 
  1009. TheCmd = TheCmd || STRIP(glob.lcupath,'b','\') || "\"
  1010. TheCmd = TheCmd || 'LOG\lcu\srvifs_req.log ' 
  1011. TheCmd = TheCmd || '/req:"client"'
  1012. CALL MakeUtility TheShortName,TheLongName,TheCmd
  1013. TheShortName = "casdelet"
  1014. TheLongName = "LAN CID Utility Delete"
  1015. TheCmd = '"lcupath"\casdelet /pl:"rexxpath" '
  1016. TheCmd = TheCmd || '/tu:"bootdrive"'
  1017. CALL MakeUtility TheShortName,TheLongName,TheCmd
  1018. RETURN
  1019. MakeSRVIFSUtil: PROCEDURE EXPOSE glob. YES NO
  1020. i = 0
  1021. DO WORDS(glob.ThinString)
  1022. i = i + 1
  1023. TheShortName = "thinifs"i
  1024. ThisAlias = WORD(glob.ThinString,i)
  1025. TheLongName = "SRVIFS for alias" ThisAlias
  1026. TheCmd = '"SRVIFSpath"\thinifs /S:"SRVIFSpath" '
  1027. TheCmd = TheCmd || '/t:"ifsdir" '
  1028. TheCmd = TheCmd || '/tu:"bootdrive"\ '
  1029. TheCmd = TheCmd || '/l1:'glob.lcualias.0Drive':\'
  1030. IF glob.lcupath <> "" THEN 
  1031. TheCmd = TheCmd || STRIP(glob.lcupath,'b','\') || "\"
  1032. TheCmd = TheCmd || 'LOG\srvifs\"client".log ' 
  1033. TheCmd = TheCmd || '/req:* '
  1034. TheCmd = TheCmd || '/srv:\\"srvifs_server1"\'ThisAlias' '
  1035. TheCmd = TheCmd || '/d:"d'
  1036. DO j = 1 to glob.0UniqAlias.0
  1037. IF ThisAlias = glob.0UniqAlias.j THEN 
  1038. LEAVE
  1039. END
  1040. TheCmd = TheCmd || j'"'
  1041. CALL MakeUtility TheShortName,TheLongName,TheCmd
  1042. END
  1043. TheShortName = ifsdel
  1044. TheLongName = "SRVIFS Delete"
  1045. TheCmd = '"SRVIFSpath"\ifsdel /t:"ifsdir" /tu:"bootdrive"'
  1046. CALL MakeUtility TheShortName,TheLongName,TheCmd
  1047. RETURN
  1048. MakeMSUtil: PROCEDURE EXPOSE glob. YES NO
  1049. parse arg i 
  1050. o = glob.target
  1051. TheCmdList = glob.0list.i.MAINTSYSBUILD
  1052. CALL MakeTranslateTable i
  1053. ix = glob.0LIST.i.DBIndex
  1054. DO WHILE TheCmdList <> ""
  1055. PARSE VAR TheCmdList j TheCmdList
  1056. j = STRIP(j,'b')
  1057. CALL E6LnOut o,":utility" glob.0list.i.MSCMD.j.0CmdName
  1058. CALL E6LnOut o,"name = "glob.0list.i.MSCMD.j.0CmdName
  1059. TheCmd = StringReplace(glob.0list.i.MSCMD.j)
  1060. PARSE VAR TheCmd ThisPart"/"TheCmd
  1061. CALL E6LnOut o,"invoke = "ThisPart
  1062. DO WHILE TheCmd <> ""
  1063. PARSE VAR TheCmd ThisPart"/"TheCmd
  1064. CALL E6LnOut o,"                            /"ThisPart
  1065. END
  1066. IF glob.0list.i.MSCMD.j.0defrespfile <> "GLOB.0LIST."i".MSCMD."j".0DEFRESPFILE" THEN
  1067. DO
  1068. CALL E6LnOut o,'rspdir = "'glob.0app.ix.appnick'_rsppath"'
  1069. CALL E6LnOut o,'default = 'glob.0list.i.MSCMD.j.0defrespfile
  1070. END
  1071. CALL E6LnOut o,":endutility"
  1072. CALL E6LnOut o," "
  1073. END
  1074. RETURN
  1075. MakeUtility: PROCEDURE EXPOSE glob. YES NO
  1076. parse arg TheShortName,TheLongName,TheCmd
  1077. o = glob.target
  1078. TheCmd = StringReplace(TheCmd)
  1079. CALL E6LnOut o,":utility" TheShortName
  1080. CALL E6LnOut o,"name = "TheLongName
  1081. PARSE VAR TheCmd ThisPart"/"TheCmd
  1082. CALL E6LnOut o,"invoke = "ThisPart
  1083. DO WHILE TheCmd <> ""
  1084. PARSE VAR TheCmd ThisPart "/"TheCmd
  1085. CALL E6LnOut o,"                             /"ThisPart
  1086. END
  1087. CALL E6LnOut o,":endutility"
  1088. CALL E6LnOut o," "
  1089. RETURN
  1090. AddMStoLine: PROCEDURE EXPOSE glob. YES NO
  1091. parse arg line,i
  1092. cmds = glob.0list.i.MAINTSYSBUILD
  1093. IF POS('.',cmds) = 0 THEN
  1094. DO WHILE cmds <> ""
  1095. PARSE VAR cmds ThisCmd cmds
  1096. ThisCmd = STRIP(ThisCmd,'b')
  1097. IF line <> "" & RIGHT(line,1) <> "+" THEN
  1098. line = line || "+"
  1099. line = line || glob.0list.i.MSCmd.ThisCmd.0CmdName
  1100. END
  1101. RETURN line
  1102. MakeTranslateTable: PROCEDURE EXPOSE glob. YES NO
  1103. parse arg i
  1104. j = glob.0list.i.DBIndex
  1105. glob.mat.0 = 12 
  1106. glob.mat.1.0tag = "$T" 
  1107. glob.mat.1.0rep = glob.0list.i.tgt
  1108. glob.mat.2.0tag = "$S" 
  1109. glob.mat.2.0rep = '"'glob.0app.j.APPNICK'_images"'
  1110. glob.mat.3.0tag = "$W" 
  1111. glob.mat.3.0rep = '"'glob.0app.j.APPNICK'_exepath"'
  1112. glob.mat.4.0tag = "$D" 
  1113. glob.mat.4.0rep = '"'glob.0app.j.APPNICK'_dllpath"'
  1114. glob.mat.5.0tag = "$L" 
  1115. glob.mat.5.0rep = '"'glob.0app.j.APPNICK'_logpath"'
  1116. glob.mat.6.0tag = "$R" 
  1117. glob.mat.6.0rep = '"'glob.0app.j.APPNICK'_rsppath"'
  1118. glob.mat.7.0tag = "$B" 
  1119. glob.mat.7.0rep = '"bootdrive"'
  1120. glob.mat.8.0tag = "$M" 
  1121. glob.mat.8.0rep = '"maint_dir"'
  1122. glob.mat.9.0tag = "$V" 
  1123. glob.mat.9.0rep = '"srvifs_server1"'
  1124. glob.mat.10.0tag = "$F" 
  1125. glob.mat.10.0rep = glob.fixpath
  1126. glob.mat.11.0tag = "$C" 
  1127. glob.mat.11.0rep = '"client"'
  1128. glob.mat.12.0tag = "$O"
  1129. glob.mat.12.0rep = '"bootdrive"'
  1130. RETURN
  1131. FindDrive: PROCEDURE EXPOSE glob. YES NO
  1132. parse arg alias
  1133. alias = TRANSLATE(alias)
  1134. DO i = 1 to glob.0UniqAlias.0
  1135. IF alias = glob.0UniqAlias.i.aliasname THEN
  1136. RETURN SUBSTR(glob.0vars.SubsequentDrives,i,1)":"
  1137. END
  1138. RETURN glob.0vars.DefaultHomedrive
  1139. BldPath: PROCEDURE EXPOSE glob. YES NO
  1140. parse arg FrontPart,BackPart
  1141. val = STRIP(FrontPart,"t","\")"\"STRIP(BackPart,"L","\")
  1142. RETURN val
  1143. StringReplace: PROCEDURE EXPOSE glob.
  1144. parse arg TheString
  1145. Do i = 1 to glob.mat.0
  1146. len = LENGTH(glob.mat.i.0tag) - 1
  1147. n = POS(glob.mat.i.0tag,TheString)
  1148. DO WHILE n > 0
  1149. NewString = SUBSTR(TheString,1,n-1)||glob.mat.i.0rep||SUBSTR(TheString,n+len+1)
  1150. TheString = NewString
  1151. n = POS(glob.mat.i.0tag,TheString)
  1152. END
  1153. END
  1154. RETURN TheString
  1155. LoadRexxUtil: PROCEDURE EXPOSE glob.
  1156. irc = RxFuncAdd("SysLoadFuncs","REXXUTIL","SysLoadFuncs")
  1157. irc = RxFuncQuery("SysLoadFuncs")
  1158. IF irc <> 0 THEN SIGNAL No_RexxUtils
  1159. irc = SysLoadFuncs()
  1160. RETURN
  1161. AppIndexInDatabase: PROCEDURE EXPOSE glob.
  1162. PARSE UPPER ARG ThisApp
  1163. DO i = 1 to glob.0app.0
  1164. IF ThisApp = glob.0app.i.appnick THEN
  1165. LEAVE
  1166. END
  1167. IF i > glob.0app.0 THEN
  1168. RETURN 0
  1169. RETURN i
  1170. FixSlashT: PROCEDURE EXPOSE glob. YES NO
  1171. parse arg TheCmd
  1172. n = POS("/T:",TRANSLATE(TheCmd))
  1173. IF glob.AlreadyHaveSlashT <> 1 THEN 
  1174. IF n = 0 THEN 
  1175. TheCmd = TheCmd || " /T:$M" 
  1176. ELSE 
  1177. NOP 
  1178. ELSE 
  1179. IF n = 0 THEN 
  1180. NOP 
  1181. ELSE 
  1182. DO WHILE n <= LENGTH(TheCmd) & SUBSTR(TheCmd,n,1) <> " "
  1183. TheCmd = OVERLAY(" ",TheCmd,n)
  1184. n = n + 1
  1185. END
  1186. glob.AlreadyHaveSlashT = 1
  1187. RETURN TheCmd
  1188. GetMsg: PROCEDURE EXPOSE glob.
  1189. parse arg msgno,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9
  1190. TheMsg = SysGetMessage(msgno,glob.MsgFileName,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9)
  1191. IF glob.Popup_Environment = "cmsgbox" THEN
  1192. DO
  1193. CRLF = D2C(13)||D2C(10)
  1194. n = POS(CRLF,TheMsg)
  1195. DO WHILE n > 0
  1196. TheMsg = OVERLAY(" ~",TheMsg,n,2)
  1197. n = POS(CRLF,TheMsg)
  1198. END
  1199. END
  1200. RETURN TheMsg
  1201. msgbox: PROCEDURE EXPOSE glob.
  1202. PARSE ARG message,title,buttons,icon
  1203. done = 0
  1204. DO WHILE done = 0
  1205. done = 1
  1206. IF glob.Popup_Environment = "cmsgbox" THEN
  1207. DO
  1208. message = TRANSLATE(message,"'",'"')
  1209. title = TRANSLATE(title,"'",'"')
  1210. ADDRESS CMD "@cmsgbox" '"'message'"' '"'title'"' buttons icon
  1211. irc = rc
  1212. END
  1213. ELSE
  1214. irc = RxMessageBox(message,title,buttons,icon)
  1215. IF irc = glob.0rc.MB_CANCEL THEN
  1216. DO
  1217. circ = msgbox(GetMsg(glob.0msg.Cancel_Text),GetMsg(glob.0msg.Cancel_Title),"YESNO","WARNING")
  1218. IF circ = glob.0rc.MB_NO THEN
  1219. done = 0
  1220. END
  1221. END
  1222. RETURN irc
  1223. PathConcat: PROCEDURE
  1224. i = 1
  1225. path = ""
  1226. DO FOREVER
  1227. part = STRIP(ARG(i),'t','\')
  1228. IF part = "" THEN LEAVE
  1229. IF i > 1 THEN part.i = STRIP(part.i,'b','\')
  1230. path = path || "\" || part
  1231. i = i + 1
  1232. END
  1233. RETURN path
  1234. E6LnOut: PROCEDURE EXPOSE glob. YES NO
  1235. parse arg o,line
  1236. DO WHILE LINEOUT(o,line) <> 0
  1237. statstring = STREAM(o,'DESCRIPTION')
  1238. PARSE var statstring stat":"info
  1239. IF stat = "ERROR" & info = "112" THEN
  1240. msg = GetMsg(glob.0msg.DISKFULL_Text,o)
  1241. ELSE
  1242. msg = GetMsg(glob.0msg.DISKIOERROR_Text,o)
  1243. mb = msgbox(msg,GetMsg(glob.0msg.DISKIOERROR_Title),"OKCANCEL","ERROR")
  1244. IF mb <> glob.0rc.MB_OK THEN
  1245. DO
  1246. irc = NO
  1247. SIGNAL CommonExit
  1248. END
  1249. END
  1250. RETURN
  1251. BadCL:
  1252. Msg = GetMsg(glob.0msg.CLProblem_Text,BadParm,BadValue)
  1253. CALL msgbox Msg,GetMsg(glob.0msg.CLProblem_Title),"OK","ERROR"
  1254. irc = NO
  1255. SIGNAL CommonExit
  1256. help:
  1257. CALL msgbox GetMsg(glob.0msg.HELP_TEXT),GetMsg(glob.0msg.HELP_TITLE),"OK","ERROR"
  1258. irc = NO
  1259. SIGNAL CommonExit
  1260. BadApp:
  1261. CALL msgbox GetMsg(glob.0msg.BADLISTELEM_TEXT,TheAppName),GetMsg(glob.0msg.NOLISTELEM_TITLE),"OK","ERROR"
  1262. irc = NO
  1263. SIGNAL CommonExit
  1264. CommonExit:
  1265. CALL STREAM glob.0logfile,'c','close'
  1266. EXIT irc
  1267.