home *** CD-ROM | disk | FTP | other *** search
/ ftp.robelle3000.ai 2017 / ftp.robelle3000.ai.tar / ftp.robelle3000.ai / newsletter / 1997 / w1997-04.txt < prev    next >
Text File  |  1997-08-05  |  23KB  |  581 lines

  1. What's Up, DOCumentation?
  2.  
  3.  
  4.  
  5.        Robelle Consulting Ltd.
  6.        Unit 201, 15399-102A Ave.
  7.        Surrey, B.C.  Canada  V3R 7K1
  8.        Toll-free:    1-888-ROBELLE
  9.                     (1-888-762-3553)
  10.        Phone:       (604) 582-1700
  11.        Fax:         (604) 582-1799
  12.        E-mail: support@robelle.com
  13.        Web: www.robelle.com
  14.  
  15. Date:  August 1997
  16.  
  17. From:  Robert M. Green, CEO
  18.        David J. Greer, President
  19.        Hans Hendriks, Editor pro tem
  20.  
  21. To:    Users of Robelle Software
  22.  
  23. Re:    News of the HP 3000 and of HP-UX, 1997 #4
  24.  
  25.    What You Will Find in This News Memo:
  26.  
  27.    HP World
  28.    Debut of Qedit for Windows
  29.    Year 2000 Video Conference
  30.    SmartDate from Robelle: Part of the Year 2000 Cure
  31.    Character Set Confusion
  32.    New Schedule for Suprtool Training 
  33.    Suprtool DEFINEs
  34.    Selecting a Range of Non-Collating Dates
  35.    Compatibility with MPE/iX 5.5
  36.    Looper: Qedit's Best Command File
  37.  
  38.  
  39. HP World 
  40. =========
  41.  
  42. It's August, which means that it is HP World month at Robelle. HP World is 
  43. the premier event organized by Interex, the International Association of 
  44. Hewlett Packard Computing Professionals. This year's conference runs from 
  45. August 25 - 29 at the Navy pier in Chicago, Illinois, and as always, it looks 
  46. like there will be more to see and learn than any mortal can possibly absorb 
  47. in the few days of the conference. (See http://www.hpworld.com for details.)
  48.  
  49. Attached to this newsletter is an information sheet showing what we at 
  50. Robelle have planned for this conference. Visit our booth for a personal 
  51. demonstration of Qedit for Windows, or pick up a schedule of the papers and 
  52. tutorials we'll be presenting this year. We'll also be celebrating our 20th 
  53. birthday, so be sure to enter our prize draw and enjoy some birthday cake.
  54.  
  55. Our technical presentations this year include Bob Green's paper on some of 
  56. the design decisions made for Qedit for Windows, Neil Armstrong's 
  57. Introduction to HP-UX for MPE Users, Francois Desrochers' tutorial on 
  58. creating Web pages with Suprtool, the Suprtool Developers' Forum, as well as 
  59. David Greer's collaboration with Alfredo Rego in How Messy is My Database. 
  60. David will also be a panelist in the Application Development in a Multi-
  61. Platform Environment discussion. Mike Shumko will be presenting an updated 
  62. version of our Ensuring Data Integrity Using Suprtool tutorial.
  63.  
  64. Trade Shows: A Behind the Scenes Look 
  65.  
  66. Anyone who has ever attended an Interex or HP World vendor show area and has 
  67. never been involved with setting up a booth for an attending company may 
  68. wonder what is involved. It looks like magic as workers and company staff 
  69. assemble the booth in a matter of hours. What you are watching is the 
  70. culmination of approximately one full year of planning.
  71.  
  72. At the Chicago show this year, we will have to choose a booth for the 1998 
  73. show in San Diego. This year's conference is where the planning for the next 
  74. year begins. Once we get back to the office we review what we liked about the 
  75. equipment, our presentations, booth layout, staffing levels, etc., and also 
  76. what we didn't like. All this information gets fed into the planning loop for 
  77. next year as part of the iterative process.
  78.  
  79. One of the next things we do is plan our presentations for next year. All of 
  80. this information gets passed to Interex, which either accepts or rejects our 
  81. submissions. The support staff attending the show is chosen based partly on 
  82. the selections made by Interex.
  83.  
  84. The other parts of planning include shipping support materials, such as 
  85. manuals, copies of papers and tutorials, supplies, promotions, etc.  If we're 
  86. going to have a contest, the forms and prizes have to be prepared and 
  87. purchased, plus our pre-show mailings need to mention the contest so that 
  88. people know about it.
  89.  
  90. When we are in a new city, we can't count on all the things we take for 
  91. granted at home and in the office. The items we may miss can be as simple as 
  92. felt pens, wrapping paper, tape, ruler, scissors, etc. That's why planning 
  93. for every possibility before we leave is so important. Just as when we go on 
  94. vacation, we may know there is something we missed, but we just don't know 
  95. what it is until we get there.
  96.  
  97. This year we distributed the conference workload as follows: two staff 
  98. members working out the technical details for the show, one person in charge 
  99. of papers and tutorials, two people working on shipping, two people on 
  100. promotions, and two people working on all the other details. This is a major 
  101. team effort. Our booth number this year is #1519--hope to see you there!
  102. [Marie Reimer]
  103.  
  104.  
  105. Debut of Qedit for Windows
  106. ==========================
  107.  
  108. "When will Qedit for Windows be ready?" We're hearing this question 
  109. frequently these days at Robelle. Here's a quick update.
  110.  
  111. Qedit for Windows (QWIN) alpha test tapes were sent out at the end of June
  112. -- many thanks to our alpha testers! By the time you receive this edition 
  113. of What's Up DOCumentation?, we should be into our second round of alpha 
  114. testing. We are still enhancing QWIN's functions and features, but our #1 
  115. priority is exterminating any last bugs in the alpha versions.  We plan to 
  116. make QWIN as robust and reliable as our other products!
  117.  
  118. We will be unveiling QWIN at HP World in Chicago, August 25 - 29. And for 
  119. those attending this year, we look forward to giving you a personal QWIN 
  120. demo. Also, be sure to catch Bob Green's presentation, Converting Qedit to 
  121. the Client/Server Model.
  122.  
  123. We're not quite ready to send out evaluation copies of QWIN, but we are 
  124. certainly getting close. Our sales department is keeping a running list of 
  125. people who have expressed interest. And as soon as QWIN is officially 
  126. released, we will be contacting you to arrange a demo.
  127.  
  128. For more information on QWIN, visit our QWIN Web page at 
  129. http://www.robelle.com/products/qeditwin.html
  130. [Nicky Gunther]
  131.  
  132.  
  133. Year 2000 Video Conference
  134. ==========================
  135.  
  136. Marie attended the "Cure2000" video conference hosted by HP at their 
  137. Richmond, B.C. office in June. For this presentation George Stachnick was an 
  138. excellent host, and attendees each received a copy of the HP White Paper 
  139. entitled Cure2000 for the HP3000, which is full of recommendations, products, 
  140. and services to help in the conversion process.
  141.  
  142. HP expects that there are 150 billion lines of code written and being used by 
  143. HP computers. If companies start converting today to become compliant, it 
  144. will cost them $1-2 per line of code, and the cost increases as time runs 
  145. out.
  146.  
  147. The status of the HP operating systems was laid out as follows:
  148.  
  149. - MPE V 3.0 and 4.0 are ready and the patches are available by calling the 
  150.   Response Center.
  151. - MPE/iX 5.5 with Xpress 4 is year-2000 compliant.
  152. - MPE/iX 6.0 will be available in the first half of 1998.
  153.  
  154. The follow-up video conference scheduled for September will provide more 
  155. information about the availability of these developments.
  156.  
  157. Also detailed were the changes HP has made to its own software such as the 
  158. various new date handling intrinsics.  Pre-release versions of these are 
  159. available from the Jazz Web site at jazz.external.hp.com.
  160.  
  161. HP is urging customers to contact all their solution vendors directly to 
  162. ascertain the state of year-2000 readiness in their applications.  Included 
  163. in the handout was a list of on-line resources. Some of the most 
  164. comprehensive sites are the Year 2000 Information Center at www.year2000.com 
  165. and the HP sites at www.hp.com/go/year2000. Also worth a visit is Robelle's 
  166. site of frequently asked questions: www.robelle.com/faq/year2000.html
  167. [Marie Reimer and Robyn Rennie]
  168.  
  169.  
  170. SmartDate from Robelle: Part of the Year 2000 Cure
  171. ===================================================
  172.  
  173. If you're currently working on your year 2000 conversion or are planning to 
  174. start soon, consider using SmartDate from Robelle.
  175.  
  176. How does SmartDate help with year-2000 conversions?
  177.  
  178. One of the problems with converting a program to make it year-2000 compliant 
  179. is dealing with the differences between dates in external, human-readable 
  180. format, and dates in internal, computer-friendly format. SmartDate helps by 
  181. providing a number of features that allow users to enter dates in convenient 
  182. formats. SmartDate easily converts those dates into whatever format the data 
  183. structures require.
  184.  
  185. For example, users may be accustomed to entering dates in month-day-year 
  186. format, specifying only two digits for the year, and not typing a leading 
  187. zero on a day or month that has only one digit. But you may have converted 
  188. the database to store dates in an I2 field (4-byte integer) as 8-digit values 
  189. in century-year-month-day format.
  190.  
  191. SmartDate can do all this in one call:
  192.  
  193. - accept free-format input
  194. - verify that a valid date was entered
  195. - apply a 2-digit to 4-digit cutoff rule on the year
  196. - convert to CCYYMMDD format for the program
  197.  
  198. An example of the year cutoff rule would be, "any 2-digit years between 80 
  199. and 99 should be interpreted as 19xx, and 2-digit years between 00 and 79 
  200. should be interpreted to be 20xx."  In SmartDate this would be a "cutoff" 
  201. value of 80.
  202.  
  203. Sample COBOL source code:
  204.  
  205.     accept input-date
  206.     move RdtXnMMDDCCYY to rdt-from-type
  207.     move RdtI32CCYYMMDD to rdt-to-type
  208.     add RdtYearCutoff to rdt-from-type
  209.     move 80 to rdt-aux-result
  210.     call "RDTCONVERT" using input-date , output-date, rdt-control
  211.     if rdt-status <> 0 then
  212.         call "RDTERROR" using rdt-control, msg-buffer, msg-buf-length
  213.         display msg-buffer.
  214.  
  215. SmartDate can also format dates for human-readable output, so that they look 
  216. good on reports. For example,
  217.  
  218.     Jul 14, 1997
  219.     Mon, Jul 14, 1997
  220.     JUL14 97
  221.  
  222. SmartDate accepts dates in any of 24 formats, including 3 free-form formats, 
  223. converting them to any of 28 formats. SmartDate handles years from 1583 to 
  224. 2583 and knows about leap years (yes, 2000 is a leap year).
  225.  
  226. Visit our Web site or call us to receive your free 30-day SmartDate trial 
  227. package.
  228. [Mike Shumko]
  229.  
  230.  
  231. Character Set Confusion
  232. =======================
  233.  
  234. One perennial issue in the lives of computer folks is that of character sets. 
  235. This came up again recently in the HP3000-L Internet discussion list, where 
  236. the following question appeared:
  237.  
  238. Date:        Mon, 23 Jun 1997 21:04:20 -0400
  239. Subject:     How to use FTP transfer French characters from HP3000 to NT 
  240.                 server?
  241.  
  242. We have a MPE file on HP3000 which has some info in French. When I use FTP to 
  243. transfer it from HP3000 to NT server. Those French characters changed. For 
  244. example, the 3rd character of "QUEBEC" should be a prime on top of "E". But 
  245. it changed to two "." on top of "U" after file transfer.
  246.  
  247. I tried to set FTP into ASCII, BINARY and BYTESTREAM mode. It doesn't help. 
  248. And I tried to send this file to HP9000 UNIX server and then send it from 
  249. UNIX to NT server. It doesn't help too.
  250.  
  251. But if I use Reflection to transfer this file, all those French characters 
  252. transferred correctly. But I don't want to use Reflection to do it because 
  253. Reflection transfer cannot write into a MPE job. That file changes everyday. 
  254. I don't want to do this transfer manually every day.
  255.  
  256. If anybody has experiences in special characters transfer with FTP, please 
  257. give me some suggestions.
  258.  
  259. David Greer replied to this as follows:
  260.  
  261. I don't have a specific answer to the question, but I can give some 
  262. background on the problem.  Characters on MPE (and HP-UX) are stored using 
  263. the HP Roman-8 character set.  Characters on Windows NT are generally stored 
  264. as UNICODE (or the MS Windows character set).
  265.  
  266. Characters in both character sets are represented as a digit number.  Every 
  267. number corresponds to an individual letter and visa-versa (at least as far as 
  268. Latin-ISO-1 characters are concerned).  For the ASCII characters (letters, 
  269. numbers, and North American special symbols), the numeric representation is 
  270. the same in both HP's Roman-8 character set, UNICODE, and the MS Windows 
  271. character set.
  272.  
  273. But for Latin-ISO-1 characters with a numeric value greater than 127, there 
  274. are differences between these character sets.  When you transfer a file with 
  275. FTP, the numeric values are correctly transferred to Windows NT.  But on MPE 
  276. lower-e-accent is represented by the numeric value 197, and in Windows NT the 
  277. value 197 is a capital-A with a circle above it.
  278.  
  279. So why does the transfer work with Reflection?  The reason is that Reflection 
  280. is aware of these character differences and does a good job of doing the 
  281. necessary translations as part of the file transfer.
  282.  
  283. My guess is that you won't be able to use FTP to transfer the file and get 
  284. character translation.  You could use FTP, if you were willing to write 
  285. either:
  286.  
  287. 1.  A program on MPE that pre-translated the file before transferring it with 
  288.     FTP, or
  289. 2.  A program on Windows NT that post-translated the file after transferring 
  290.     it with FTP.
  291.  
  292. For more information about character sets see our SMUG Book entry: 
  293. http://www.robelle.com/smugbook/char.html
  294. [David Greer]
  295.  
  296.  
  297. New Schedule for Suprtool Training
  298. ===================================
  299.  
  300. Here is Robelle's new schedule of in-house courses for Suprtool in 1997-98:
  301.  
  302.     October 16 - 17, 1997
  303.     January 23 - 24, 1998
  304.     May 28 - 29, 1998
  305.     October 15 - 16, 1998
  306.  
  307. For more information about the schedule or to arrange a private session at 
  308. your site, call Rosemary Van Poelgeest or Fran Glasgow at 1-888-ROBELLE.
  309.  
  310.  
  311. Robelle Products: Problems, Solutions and Suggestions
  312. ------------------------------------------------------
  313. Suprtool DEFINEs
  314. =================
  315.  
  316. A recent question on the Robelle-L mailing list prompted a discussion of 
  317. Suprtool's Define command:
  318.  
  319. Question:
  320.  
  321. I have an I1 item in a set and I need to check the value of the first digit 
  322. of each number in each entry.  The maximum number for the item is 9999.
  323.  
  324. I have tried to convert the I1 to a byte field then test the value using the 
  325. offset.  Campus-bldg is the I1 item.
  326.  
  327.     def a,campus-bldg,6,byte
  328.     def b,a[2],1
  329.     if b = ("2","3,"4")
  330.     ext campus-bldg
  331.     output campbldg
  332.  
  333. I'm getting junk for some reason even if I output as ASCII.
  334.  
  335. Answer:
  336.  
  337. What is not obvious at first is that Define commands are just redefinitions 
  338. of the input record. Defines do not create new storage, and they do not 
  339. convert data from one format to another. If you are a COBOL programmer, think 
  340. of the REDEFINES clause. Therefore your Define commands told Suprtool this:
  341.  
  342.     def a,campus-bldg,6,byte
  343.  
  344. Hey, Suprtool, I want to give the six bytes of my input record, starting at 
  345. the same position as campus-bldg, a name of A. If campus-bldg started at byte 
  346. 37 of the input record (for a length of 2 bytes because it is an I1), the 
  347. field A will also start at byte 37, but will go for a length of 6. The thing 
  348. called A will have all 16 bits of campus-bldg plus the next 4 bytes. This 
  349. definitely won't work. 
  350.  
  351.     def b,a[2],1
  352.  
  353. Now you're telling Suprtool to treat the second byte of A (which is the 
  354. second byte or rightmost eight bits of campus-bldg) as a field called B. This 
  355. still doesn't work.
  356.  
  357. The standard answer to the generic question, "How do I test a single digit of 
  358. a binary number" is, "You need to use two passes." Let's see how to do this 
  359. the standard way, then let's see some one-pass solutions for this specific 
  360. case.
  361.  
  362. Two passes:
  363.  
  364.     get <dataset>
  365.     extract <all the desired fields including campus-bldg>
  366.     output <filename>,ascii
  367.     xeq
  368.     input <filename>
  369.     define a,<position of the thousands digit in the ascii-field
  370.               campus-bldg>,1,byte
  371.     if a = "2","3","4"
  372.     ...
  373.  
  374. The downside of this approach is that all the numeric fields that you 
  375. extracted are now in ASCII format. The resulting file may not be compatible 
  376. with whatever program is supposed to read the output.
  377.  
  378. Three(!) passes:
  379.  
  380.     get <dataset>
  381.     define a,1,<length of whole record in bytes>,byte
  382.     extract a
  383.     extract campus-bldg
  384.     output <filename>,ascii
  385.     xeq
  386.     input <filename>
  387.     define b,<position of the thousands digit in the ascii-field
  388.               campus-bldg>,1,byte
  389.     if b = "2","3","4"
  390.     extract a
  391.     output <filename2>
  392.     input <filename2>=<dataset>
  393.     ...
  394.  
  395. With this approach the output record produced by the second pass still has 
  396. all the input fields in their original format. The input filename=dataset 
  397. syntax tells Suprtool to trust you that the input file has the same layout as 
  398. the dataset. That way you can use all the dataset's fieldnames when reading 
  399. the file.
  400.  
  401. One pass (style A):
  402.  
  403. Assuming that I understand correctly that you have an I1 field whose values 
  404. never exceed 9999, and you want to select records if the thousands digit is a 
  405. 2, 3, or 4, you could just do this:
  406.  
  407.     input <dataset>
  408.     if campus-bldg >= 2000 and campus-bldg <=4999
  409.     ...
  410.  
  411. This works only because we are testing the high-order or most-significant 
  412. digit. This wouldn't work if we were trying to test for one of the other 
  413. digits.
  414.  
  415. One pass (style B):
  416.  
  417.     input <dataset>
  418.     if campus-bldg / 1000 = 2,3,4
  419.     ...
  420.  
  421. Again, this works only for testing the most significant digit.
  422. [Mike Shumko]
  423.  
  424.  
  425. Selecting a Range of Non-Collating Dates
  426. =========================================
  427.  
  428. Almost all of Suprtool's date selection functionality relies on converting a 
  429. date value to a numeric constant, and using that for selection against the 
  430. (numeric) date field. For example,
  431.  
  432.     > item sale-date,date,yymmdd
  433.     > if sale-date = $today
  434.  
  435. is logically identical to entering
  436.  
  437.     > if sale-date = 970805
  438.  
  439. assuming, of course, that today is 5 August 1997. Notice that Suprtool 
  440. converts the selection criteria to match the data format, rather than 
  441. reformatting each data record to do the comparison.
  442.  
  443. This works well for all date formats when testing for equivalence, but fails 
  444. for range testing in non-collating date formats. For example, if a date is 
  445. stored in MMDDYY format, any December date will always have a higher numeric 
  446. value than any January date, irrespective of the year value.
  447.  
  448. If you try to do a range selection on a non-collating date field, Suprtool 
  449. will return an error:
  450.  
  451.     >item purch-date,date,mmddyy
  452.     >if purch-date < $today
  453.     Error:  Invalid date format for the comparison
  454.  
  455. Question: So how can I select a range of non-collating dates?
  456. Answer:   By testing for equivalence to each date that falls in the range.
  457.  
  458. Question: How can I test for all those values?
  459. Answer:   Load a table of qualified date values.
  460.  
  461. Question: How can I get the qualified values?
  462. Answer:   With Suprtool, of course!
  463.  
  464. First, create a file of all unique date values in the dataset and include a 
  465. new field with the date value in Display format:
  466.  
  467.     >base store.db.sales,1,password
  468.     >get d-sales
  469.     >sort purch-date        {purch-date is in MMDDYYYY format}
  470.     >define new-date,1,8,display
  471.     >extract purch-date, new-date = purch-date
  472.     >output datefil1,link
  473.     >duplicate none keys    {only 1 record per unique field}
  474.     >xeq
  475.  
  476. You now have a file with the date field represented twice, once in original 
  477. format, and once in Display format. Now convert the Display field to a 
  478. collating date format:
  479.  
  480.     >input datefil1
  481.     >define year,new-date[5],4,display
  482.     >define monthday,new-date[1],4,display
  483.     >extract year, monthday, purch-date
  484.     >output datefil2,link
  485.     >xeq
  486.  
  487. Now that we have the date values in a collating format, we can select the 
  488. range of dates we require:
  489.  
  490.     >input datefil2
  491.     >define colldate,1,8,display
  492.     >item colldate,date,YYYYMMDD
  493.     >if colldate >= $date(*-1/*/01) &
  494.         and colldate <= $date(*-1/*/last)
  495.     >extract purch-date
  496.     >sort purch-date
  497.     >output datefil3,link
  498.  
  499. We can now use datefil3 to load a table of valid dates:
  500.  
  501.     >get d-sales
  502.     >table datetabl,purch-date,sorted,datefil3
  503.     >if $lookup(datetabl,purch-date)
  504.     ...
  505.  
  506. If you need to do this on a regular basis, it makes sense to create a 
  507. permanent "translation file", rather than regenerating it each time.
  508. [Hans Hendriks]
  509.  
  510.  
  511. Compatibility with MPE/iX 5.5
  512. ==============================
  513.  
  514. One of the most frequently asked questions is: What version of Qedit and 
  515. Suprtool do I need for MPE/iX 5.5?
  516.  
  517. We recommend Qedit version 4.4 or later, and Suprtool version 3.8 or later. 
  518. Remember that when you upgrade your operating system you may need to stream 
  519. some Robelle jobs to integrate Qedit or Suprtool into the new system. For 
  520. example, stream Qcompxl.Qeditjob.Robelle to let your native mode compilers 
  521. read Qedit-format source files, or re-install the Speed Demon or Suprtool2 
  522. routines if you need them in SL.Pub.Sys. See the installation section of your 
  523. user manuals for details.
  524.  
  525.  
  526. Looper: Qedit's Best Command File
  527. ==================================
  528.  
  529. We occasionally get customers asking how to change or delete lines based on 
  530. the existence of a string in a neighboring line. This usually means setting 
  531. up a command file that does While loop processing. You can find a great 
  532. example of a command file called Looper in the Qedit manual under the While 
  533. command, but here is a variation that came up recently.
  534.  
  535. The customer wanted to print any lines in which the first 3 characters were 
  536. the same as the previous line's. HPVariables can be used to store the value 
  537. of each line for comparison to the next, but how can you set a variable to 
  538. the contents of the line? We created the command file Qsetvar.Cmd to accept a 
  539. variable name as a parameter, then prompt for the variable's value:
  540.  
  541. Qsetvar.Cmd:
  542.  
  543.     parm varname
  544.     input !varname
  545.     setvar !varname rtrim(!varname)
  546.  
  547. This way, the contents of a line can be saved in the Hold file, and the 
  548. contents of the Hold file can be passed to the command file by means of I/O 
  549. redirection:
  550.  
  551.     qsetvar myvar < hold
  552.  
  553. Our second command file saves the contents of each line, compares it to the 
  554. next, then saves the contents of that line for comparison to the subsequent 
  555. line, and so on:
  556.  
  557.     /set window (up)         {ignore case for strings}
  558.     setjcw cierror = 0         {initialize variables to predictable values}
  559.     setvar prev,"#"
  560.     setvar curr," "
  561.     continue
  562.     /set right 3         {edit only columns 1 to 3 of each line}
  563.     /list first                 {go to top of file}
  564.     while cierror=0 do
  565.     /holdq *                 {copy current line to Hold file}
  566.     /qsetvar  curr < hold    (set variable "curr" to whatever is in Hold}
  567.     if prev = curr  then     {compare current line to previous}
  568.     /list * lp                 {if same, send to printer}
  569.     endif
  570.     setvar  prev,curr         {update value of prev}
  571.     /lq*+1                 {move forward one line}
  572.     endwhile
  573.  
  574. [Paul Gobes]
  575.  
  576. Qedit, Suprtool, SmartDate, and Xpress are trademarks of Robelle Consulting 
  577. Ltd. Windows is a trademark of Microsoft Corporation. Other product and 
  578. company names mentioned herein may be the trademarks of their respective 
  579. owners.
  580.  
  581.