<script>on enterkeyif not(the visible of msg) and (the blindtyping is false) thenset the hilite of bg btn "Go!" to truewait 20set the hilite of bg btn "Go!" to falsesend mouseUp to bg btn "Go!"elsepass enterkeyend ifend enterkey</script>
</card>
card_4900.xml
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE card PUBLIC "-//Apple, Inc.//DTD card V 2.0//EN" "" >
<script>on mouseUpDFMainCardend mouseUpon mousewithinHCBalloon "Click here to return to The Delimiter FixerΓÇÖs main card.", 20,10, 5end mousewithin</script>
</part>
<part>
<id>4</id>
<type>field</type>
<visible> <false /> </visible>
<dontWrap> <false /> </dontWrap>
<dontSearch> <false /> </dontSearch>
<sharedText> <false /> </sharedText>
<fixedLineHeight> <false /> </fixedLineHeight>
<autoTab> <false /> </autoTab>
<lockText> <false /> </lockText>
<rect>
<left>61</left>
<top>138</top>
<right>255</right>
<bottom>230</bottom>
</rect>
<style>shadow</style>
<autoSelect> <false /> </autoSelect>
<showLines> <false /> </showLines>
<wideMargins> <true /> </wideMargins>
<multipleLines> <false /> </multipleLines>
<reservedFamily> 0 </reservedFamily>
<titleWidth>0</titleWidth>
<icon>0</icon>
<textAlign>left</textAlign>
<font>Helvetica</font>
<textSize>10</textSize>
<textStyle>plain</textStyle>
<textHeight>13</textHeight>
<name>PopUp</name>
<script></script>
</part>
<part>
<id>6</id>
<type>button</type>
<visible> <true /> </visible>
<reserved5> 0 </reserved5>
<reserved4> 0 </reserved4>
<reserved3> 0 </reserved3>
<reserved2> 0 </reserved2>
<reserved1> 0 </reserved1>
<enabled> <true /> </enabled>
<rect>
<left>185</left>
<top>29</top>
<right>220</right>
<bottom>62</bottom>
</rect>
<style>transparent</style>
<showName> <false /> </showName>
<highlight> <false /> </highlight>
<autoHighlight> <true /> </autoHighlight>
<sharedHighlight> <true /> </sharedHighlight>
<family>0</family>
<titleWidth>0</titleWidth>
<icon>24694</icon>
<textAlign>center</textAlign>
<font>Chicago</font>
<textSize>12</textSize>
<textStyle>plain</textStyle>
<name>Help</name>
<script>on mouseUplock screenset the visible of cd fld help to not(visible of cd fld help)unlock screen with dissolve fastend mouseUpon mousewithinHCBalloon the short name of me & return & return &¬"Click here for help with using this stack’s documentation.", 20,10, 5end mousewithin</script>
</part>
<part>
<id>7</id>
<type>button</type>
<visible> <true /> </visible>
<reserved5> 0 </reserved5>
<reserved4> 0 </reserved4>
<reserved3> 0 </reserved3>
<reserved2> 0 </reserved2>
<reserved1> 0 </reserved1>
<enabled> <true /> </enabled>
<rect>
<left>149</left>
<top>29</top>
<right>184</right>
<bottom>62</bottom>
</rect>
<style>transparent</style>
<showName> <false /> </showName>
<highlight> <false /> </highlight>
<autoHighlight> <true /> </autoHighlight>
<sharedHighlight> <true /> </sharedHighlight>
<family>0</family>
<titleWidth>0</titleWidth>
<icon>1007</icon>
<textAlign>center</textAlign>
<font>Chicago</font>
<textSize>12</textSize>
<textStyle>plain</textStyle>
<name>Print</name>
<script>on mouseUpglobal DFPrintFieldput "Intro" into DFPrintFieldset the PrintTextFont to Palatinodomenu "Print Report..."end mouseUpon mousewithinHCBalloon the short name of me & return & return &¬"Click here to print a copy of this documentation in its entirety. The" && ¬"“Print Report…” dialog box will be opened.", 20,10, 5end mousewithin</script>
</part>
<part>
<id>8</id>
<type>field</type>
<visible> <false /> </visible>
<dontWrap> <false /> </dontWrap>
<dontSearch> <false /> </dontSearch>
<sharedText> <false /> </sharedText>
<fixedLineHeight> <false /> </fixedLineHeight>
<autoTab> <false /> </autoTab>
<lockText> <true /> </lockText>
<rect>
<left>0</left>
<top>62</top>
<right>256</right>
<bottom>288</bottom>
</rect>
<style>shadow</style>
<autoSelect> <false /> </autoSelect>
<showLines> <false /> </showLines>
<wideMargins> <false /> </wideMargins>
<multipleLines> <false /> </multipleLines>
<reservedFamily> 0 </reservedFamily>
<titleWidth>0</titleWidth>
<icon>0</icon>
<textAlign>center</textAlign>
<font>Helvetica</font>
<textSize>12</textSize>
<textStyle>plain</textStyle>
<textHeight>16</textHeight>
<name>Help</name>
<script>on mouseuphide meend mouseup</script>
</part>
<part>
<id>9</id>
<type>button</type>
<visible> <true /> </visible>
<reserved5> 0 </reserved5>
<reserved4> 0 </reserved4>
<reserved3> 0 </reserved3>
<reserved2> 0 </reserved2>
<reserved1> 0 </reserved1>
<enabled> <true /> </enabled>
<rect>
<left>118</left>
<top>41</top>
<right>137</right>
<bottom>53</bottom>
</rect>
<style>transparent</style>
<showName> <false /> </showName>
<highlight> <false /> </highlight>
<autoHighlight> <false /> </autoHighlight>
<sharedHighlight> <true /> </sharedHighlight>
<family>0</family>
<titleWidth>0</titleWidth>
<icon>11893</icon>
<textAlign>center</textAlign>
<font>Chicago</font>
<textSize>12</textSize>
<textStyle>plain</textStyle>
<name></name>
<script>on mouseDownsend mouseDown to hittest(the mouseLoc, "btn")end mouseDown</script>
</part>
<content>
<layer>background</layer>
<id>2</id>
<text><span class="style3">About The Delimiter Fixer</span><span class="style1">The Delimiter Fixer is a utility to convert variable-length fields of information to fixed-length fields of information. You might find yourself asking how such a thing could possibly be useful. Well, that's a good question.See, a friend of mine has his own business. As you might guess, any friend of mine is a computer freak inclined towards the Macintosh, so naturally he has his business' entire mailing list in a computerized database. This is incredibly handy for sorting, printing labels, and other common tasks.So one day this friend comes to me and explains that he needs to get his entire mailing list into fixed-field format, and would I happen to know anything about it? My reaction was reflexive after years of mainframe statistical processing: ΓÇ£John, </span><span class="style5">why</span><span class="style1"> do you need to do this?ΓÇ¥ John smiled and casually handed me PS FORM 5603 (rev May 1989): ΓÇ£</span><span class="style8">Diskette Processing Request FormΓÇöZIP+4 Coding, Carrier Route Identification, Address Standardization.</span><span class="style1">ΓÇ¥ ΓÇ£This is why!ΓÇ¥ he said, still grinning.It seems that if you give the good ΓÇÖole US Postal Service a mailing list in a fixed field format on a (ahem) non-Macintosh disk, they will correct and standardize the entire list for youΓÇöfree! Well, not quite free. You do have to struggle through PS FORM 5603 and scrounge up a disk mailer and some stamps. But John saw a window of opportunity here; he could greatly increase the accuracy of his mailings through this service.ΓÇ£Well, you could write a little program to do it,ΓÇ¥ I said. ΓÇ£It would be pretty trivial.ΓÇ¥ And John just sort of shrugged. He's one of the masses for whom HyperCard has not opened up the sphere of programming. ΓÇ£Just how trivial?ΓÇ¥ he asked, still grinning. ΓÇ£And what about some features?ΓÇ¥Sigh. And so The Delimiter Fixer was born.</span><span class="style3">ΓÇó When To Use The Delimiter Fixer</span><span class="style1">The Delimiter Fixer is designed to be used in converting between variable-length and fixed-field data formats. What are these formats anyway?First, let's get some terminology straight. A </span><span class="style5">record</span><span class="style1"> is a particular case in a database. Typically, these records are the lowest common denominators of the data to be represented. So, in a mailing list, the records are usually individual people; in a manufacturing plant's database, they might represent individual sprockets or cogs. Now, you might know any number of things about these indivudal people, sprockets, or cogs, and these items of information are called </span><span class="style5">fields</span><span class="style1">. A field is an item of information for which you have an entry in every record (or case) in your database. So, for that mailing list, likely </span><span class="style5">fields</span><span class="style1"> would be names, street addresses, states and ZIP codes; for those cogs, fields might be diameters, materials, and dates of manufacture.</span><span class="style14">ΓÇó Fixed Field Format:</span><span class="style1"> Data in a fixed field format has been around since the days before punch cards. Basically, the idea is that every record occupies one </span><span class="style5">line</span><span class="style1"> and every character occupies one </span><span class="style5">column</span><span class="style1"> in that line (like on a typewriter where every character takes up the same amount of space on a line). If one follows this school of thought, one can then keep track of the individual fields in a record simply by noting the columns in which each field begins and ends. Of course, for this to be useful, each field must begin and end in the same column for every record, so in that mailing list a person's name would always occupy the first (say) 30 columns, and the next field would commence on column 31. So, fixed field format can be thought of as a giant grid in your data, where the horizontal lines are the individual records and the vertical lines denote the column boundaries of your fields.</span><span class="style14">ΓÇó Variable-length format:</span><span class="style1"> The problem with fixed-field format is easy to see. Going back to that mailing list, say you've alotted 35 columns for the name of the individual in question. If a person's name is "Ike Smith" you've got, count'em, 26 blank spaces after this person's name taking up precious space on your disk! On the other hand, "Boliver Ognatious Patrick Shagnasty" will lose the last letter of his last name. Ugh! Can't something be done?The solution is a variable-length format. In this format, some arbitrary character is chosen as a marker denoting the end of a field. These markers (called </span><span class="style5">delimiters</span><span class="style1">) are usually uncommon characters that are unlikely to appear in the fields themselves (such as tabs, commas, colons, and semi-colons). Therefore, in your mailing list, "Ike Smith" would require 9 characters plus a delimiter (10 characters total) to storeΓÇöa savings of over 60%! Another advantage of variable length format is that if someone on your list has a name longer than 35 characters, nothing gets truncated and you don't receive a rude letter complaining that you can never get that name right. All in all, variable-length records offer a good solution to the problems of the fixed-field format; they don't create lots of empty space and they don't mutilate your data.</span><span class="style3">ΓÇó The Dilemma</span><span class="style1">The problem with all this is that, while most microcomputer applications use a variable-length format, many mainframe applications (which were first put into service years and years ago) can only process a fixed-field format. The US Postal Service would seem to be a good example of the above. Other examples come to mind, including many statistical packages and government records. However, the existence of this stack proves that (to my knowledge anyway) there is no publically available utility to do this sort of conversion. Well, here you go. Enter The Delimiter Fixer.</span><span class="style3">ΓÇó About IBM (MS-DOS) Disks</span><span class="style1">In case you're looking to take advantage of PS FORM 5603 and having your mailing list corrected by them's-in-the-know, let me bring up another consideration. The Postal Service (and likely many other services and organizations as well) aren't content with merely receiving your data in a fixed field format; no, they'll want it on an IBM-compatible (MS-DOS) disk as well! What, you don't own an IBM compatible computer? Spend too much money on your Mac to have one of each? Tsk tsk.Well, fear not (or, at least, don't fear too much). While The Delimiter Fixer cannot put your newly converted data on an MS-DOS disk, a program called </span><span class="style5">Apple File Exchange</span><span class="style1"> (which should have been shipped with your Macintosh) </span><span class="style4">can</span><span class="style1"> put your data on an MS-DOS disk for you. See your Macintosh documentation for full information; the following notes are just that: notes.ΓÇó Use the most recent version of Apple File Exchange that you possible can (v. 1.1.4 recommended). Earlier versions of AFE may not know how to read and write IBM disks.ΓÇó You must own either a) an 1.44 Mb SuperDrive (FDHD), or b) an Apple 5.25" disk drive (yes, they </span><span class="style4">do</span><span class="style1"> make them!). A standard 800K disk drive (installed in the Macintosh 512, 512ke, Plus, many SE's and some early Mac II's) does </span><span class="style4">not</span><span class="style1"> have the necessary hardware to read and write to MS-DOS disks. If you don't have the necessary hardware, I don't know what to tell youΓÇöeither find someone who does or be prepared to fork over some hard-earned cash.However, if your hardware and software check out, you should be able to prepare an IBM-compatable disk full of fixed-field information right there on your Macintosh. Ain't that the greatest thing since... well, since squeezable ketsup, anyway.</span></text>
</content>
<content>
<layer>background</layer>
<id>3</id>
<text><span class="style3">◊ Welcome to The Delimiter Fixer!</span><span class="style1"></span><span class="style5">The Delimiter Fixer</span><span class="style1"> is a HyperCard utility designed to convert textual data from variable length fields to fixed field format. While this may seem a fairly obscure function, it can be extremely useful for converting data from any number of applications to a format more compatable with mainframe applications. What's more, surprisingly few database products for the Macintosh seem to provide such a feature. Providing a free utility seemed to be a good way to spend a few hours :-).More details about The Delimiter Fixer can be found in the enclosed documentation—click on </span><span class="style5">Table of Contents...</span><span class="style1">, above, for a list of topics. </span><span class="style3">◊ Copyright and Distribution Notice:</span><span class="style1">The Delimiter Fixer is copyright 1991 by Geoff Duncan. The XFCN HPopUpMenus (v2.7.1) is copyright 1989, 90, and 91 by Jon Pugh and is used within limits specified by the author. The HCBalloon XCMD (v1.2) is ©1991 Len Saaf, Raliegh Associates.This stack may be distributed freely so long as it and and its documentation remain unaltered. </span><span class="style4"> Under no circumstances may fees be assessed for this stack or this stack's distribution.</span><span class="style1"> I believe that under the terms of use given with Jon Pugh's HPopupMenu XFCN, that this stack may be distributed by users groups so long as the only fee is for the shipping and/or the physical production of the disks on which it is provided to users.Special thanks go out to John Hickey (for providing incentive to write this thing in the first place), Jon Pugh (for providing quality software to the Mac community for years), and Len Saaf (for the HCBalloon XCMD which enables Balloon Help under system 7). Without any of you this stack either would not have happened or would have happened in a much less friendly form!Bug reports and problems may be mailed via USmail or electronic mail to:Geoff Duncan26101 Country Club Blvd. #1425North Olmsted, OH 44070sgd4589@oberlin <bitnet>sgd4589@ocvaxa.cc.oberlin.edu <internet>This product is supplied "as is" without warranty of any kind. The author is not responsible for any damages or loss of data resulting from the use of this product. </span></text>
</content>
<content>
<layer>background</layer>
<id>4</id>
<text><span class="style1"></span><span class="style3">◊ What The Delimiter Fixer Expects</span><span class="style1">The Delimiter Fixer expects three things from you:1) A HEADER describing the layout of the data you wish to convert (see below for details);2) A plain text (ASCII) import file containing the data that you wish to process;3) Sufficient disk space and time.</span><span class="style3">• The Header</span><span class="style1"> This is perhaps the most important aspect of The Delimiter Fixer: the Header tells this program how you would like your data processed. The Header may appear as the </span><span class="style9">first</span><span class="style1"> record in the data you wish to process, or you may enter it directly into this stack using the “Specify Header” button. </span><span class="style5">You </span><span class="style9">must</span><span class="style5"> provide a header no matter which “way” you're converting your data.</span><span class="style1"></span><span class="style14">Header Format:</span><span class="style1">The Header appears either as the first record in your data or is entered directly into this stack. The format of the header is as follows:It must begin with two “less-than” signs:</span><span class="style11"> <<</span><span class="style1">and end with two “greater-than” signs:</span><span class="style11"> >></span><span class="style1">Note these are </span><span class="style4">not</span><span class="style1"> the same as the standard print-merge characters « and ». Between these markers, you must specify the widths of the fields you wish to create or process, with each specification delimited by either a comma </span><span class="style4">or</span><span class="style1"> the field delimiter used in your data file. If you choose to enter your Header into this stack directly, you must use commas to delimit your column specifications. These widths you specify are not cumulative, but represent the </span><span class="style5">relative</span><span class="style1"> width of each field. For example. suppose you wanted to process a series of three-field records, the first of which occupied columns 1 - 20, the second 21-40, and the third 41-45. The following header would </span><span class="style4">correctly</span><span class="style1"> describe these fields: </span><span class="style11"><<20,20,5>></span><span class="style1">Notice how the Header specifies onlythe raw number of columns occupied by each field.An improper Header (describing the specific widths of the fields) would be as follows: </span><span class="style11"><<20,40,45>></span><span class="style1">This Header would be interpreted by The Delimiter Fixer in the following manner: “The first field occupies twenty columns, then the second fields occupes 40 columns, then the third field occupies 45 columns.” Not what was intended at all! Please be careful when specifying your Header. If you do not specify your Header properly, The Delimiter Fixer will not process your data correctly.</span><span class="style14">• Insert Guides…</span><span class="style1">One problem often found in working with fixed-field data is miscounting the number of columns a particular field occupies. I know that I often do this when working with statistical packages—I'll flatter myself and assume I'm not the only person with this difficulty. So I've worked in a bit of a column-counting aid in the form of the </span><span class="style5">Insert Guides...</span><span class="style1"> button.The</span><span class="style5"> Insert Guides...</span><span class="style1"> button appends a 100-digit "ruler" at the bottom of a data file. If you append this ruler to your data and then open up the data file in a word processor or other editor, you can use it to accurately count the number of columns each field occupies. If you need more than 100 digits, simply cut and paste parts of the ruler until it's long enough. One tip: make sure to set the font of your data to a fixed width font, such as Courier or Monaco (both supplied with your Macintosh). If you don't, the column positions on the ruler are unlikely to correspond to your data.Once you've determined where each field begins and ends, delete the ruler from your data; otherwise, The Delimiter Fixer will (unsuccessfully) attempt to process it as well.•</span><span class="style8"> DISK SPACE:</span><span class="style1"> You will need free disk space in which to store the converted data. If you are converting from fixed fields to variable-length fields, have free disk space equal to </span><span class="style5">at least</span><span class="style1"> 80% of the size of your original data. If you are converting from variable-length fields to fixed-length fields, have free disk space equal to about 120% of the size of your original data, depending how large your field widths will be and how much empty space you expect will be created. As a general rule, the wider your fields, the more space will be required.•</span><span class="style8"> TIME:</span><span class="style1"> The Delimiter Fixer is </span><span class="style5">not</span><span class="style1"> a fast program. For those of you out there who are experienced scripters, you will probably see a lot of ways to make this code faster. Fortunately for those of you with higher-end Macs, The Delimiter Fixer (and HyperCard) will happily chug away at your data in the background while you perform other tasks. (Be aware of the special key command interrupt—see </span><span class="style5">Operating The Delimiter Fixer</span><span class="style1">, above for details. It may potentially interfere with the use of some INITS and/or system extentions.) If you leave the </span><span class="style5">Low Memory Mode</span><span class="style1"> button unchecked, The Delimiter Fixer will try to take advantage of any extra RAM you may have allocated to HyperCard. In general, HyperCard can handle roughly a 150K data file in a 1 Meg partition. If you have a 1 Meg file to convert, I'd suggest giving HyperCard a 2 Meg partition, or else checking the </span><span class="style5">Low Memory Mode</span><span class="style1"> button, which will let you process a file of any size in as little as 700K of RAM, albeit at a slower pace. You could also break your data file into segments, reducing the amount of memory required to process a portion of your data. If you must, let this stack run overnight. But DO NOT modify this code to run faster and distribute it under my name. If you'd like to make changes for your own use, fine. Everything's in the stack script. But distribute your own product.</span><span class="style8">• RAM: </span><span class="style1">If you have enough RAM to run HyperCard, you have enough RAM to run the Delimiter Fixer (see above). In general, a 1 Megabyte memory partition is the minimum recommended for HyperCard.The Delimiter Fixer operates buy reading all your data into memory (which is faster than a disk) and then processing it. The problem with this approach is that, if you're dealing with large data files, 1 Megabyte Macs (Pluses and SE's) will run out of memory, causing The Delimiter Fixer to crash unpleasantly. The solution to this is the </span><span class="style5">Low Memory Mode</span><span class="style1"> button.If you check the </span><span class="style5">Low Memory Mode</span><span class="style1"> button, The Delimiter Fixer will operate in such a way that it can process a data file of any size in a very small memory partition. (In tests, it was able to process a 350K data file with a 700K memory partition.) the price for this is speed. Disk access is much slower than RAM access, so The Delimiter Fixer may take more than twice as long to process a data file this way as it would normally. But at least it's still useful to those of us with older, uh, </span><span class="style5">more</span><span class="style1"> </span><span class="style5">mature</span><span class="style1"> Macs and small budgets.</span><span class="style8">• ASCII IMPORT FILE: </span><span class="style1"> This is extremely important, since this stack cannot interpret the file formats used by the database applications in storing your original data. Most of these applications (from spreadsheets to multi-dimensional network-based systems) support some form of ASCII or “text-only” export. This is the form of export you must use.Within this text file, your fields and records must be </span><span class="style5">consistently</span><span class="style1"> delimited by the same characters. If you need to process data that can only be represented with multiple delimiters, it is suggested that you organize it in such a way that only one delimiter need be processed at a time. The Delimiter Fixer does not support multiple delimiters and will not correctly process files formatted in such a way.</span></text>
</content>
<content>
<layer>background</layer>
<id>5</id>
<text><span class="style1"></span><span class="style3">DELIMITER FIXER OPERATION NOTES</span><span class="style1"></span><span class="style3">◊ CRASHES</span><span class="style12"></span><span class="style1">The Delimiter Fixer may crash unpleasantly in the event you run out of disk space in which to store the converted output. (HyperCard provides no easy way of checking whether the </span><span class="style11">write</span><span class="style1"> command generates an error message.) If this happens, HyperCard should close the file it was creating and give an error message. The export file you specified should contain all work that HyperCard was able to complete before you ran out of disk space—meaning that if your disk fills up you shouldn't lose any work The Delimiter Fixer had already done for you.</span><span class="style3">◊ ASSUMPTIONS</span><span class="style13"></span><span class="style8">• The Header</span><span class="style13"></span><span class="style1">The Delimiter Fixer always assumes that the fields specfied in the Header are sequential and continguous. The Delimiter Fixer always begins its work with the first field in the data file—it cannot be told to start at the second field in the data file, or at </span><span class="style4">any</span><span class="style1"> field other than the first.</span><span class="style13"></span><span class="style8">• Regarding Fixed Field Records:</span><span class="style1">The Delimiter Fixer always assumes that fixed-field records are delimited by carriage returns. In other words, any fixed-field files it produces will have their records delimited by carriage returns, and The Delimiter Fixer assumes that any fixed-field records it reads will also be be delimited by carriage returns. If this is not the case, it is suggested that a word processing or similar program be used to replace the other record delimiter with a carriage return. The documentation that accompanied the other program should detail how this may be accomplished. </span><span class="style8">• Variable-length to Fixed Field Conversions:</span><span class="style1"> The Delimiter Fixer will truncate any information appearing beyond the specified column width in a given field. Thus, fields that are longer than the specified width will lose any information appearing after the specified column width. The Delimiter Fixer automatically inserts carriage returns as record delimiters in this conversion (see above).</span><span class="style8">• Fixed Field to Variable-length Conversions:</span><span class="style1"> The Delimiter Fixer assumes that fixed-field records are deimited by carriage returns (see above).</span><span class="style3">◊</span><span class="style1"> </span><span class="style3">EXTRANEOUS FIELDS</span><span class="style1">In the event the original data file contains more fields than those which are specified in the Header, The Delimiter Fixer will simply ignore any fields that are unspecified. Thus, it is possible to use the same data file to create several output files, each containing a different sequential subset of the original file's fields. For example, you could process an address file in such a way as to produce three output files containing 1) just the name and address, 2) the name, address, and city, and 3) the name, address, city, and state, without needing to create additional data files.</span><span class="style3">◊ Why HyperCard 2.1?</span><span class="style1">Why does The Delimiter Fixer only work with version 2.1 of HyperCard? Well, the simple fact is that a stack like this could have been written even on version 1.2.x of HyperCard. The reasons I chose not to do so were the following:• The</span><span class="style11"> itemdelimiter </span><span class="style1">property, new in HC 2.1, makes the programming of a stack like this </span><span class="style5">much</span><span class="style1"> easier;• The</span><span class="style11"> read </span><span class="style1">and</span><span class="style11"> write </span><span class="style1">commands (used to access files) have been significantly enhanced in HyperCard 2.1 which, again, made this stack and several of its features easier to write.• HyperCard 2.1 is compatible with systems 6.0.5 and higher, which is what the majority of the Mac community is using. More importantly, HC2.1 is the only version of HC recommended for use with System 7. In the future we will be seeing more and more Mac users using only System 7 and its decendents. It seemed important that this stack not be obsolete before it was released.• All versions of HyperCard prefer a Megabyte of memory. Thus, old 128 and 512 Macs (without upgrades) are already unable to use a stack of this nature. Writing this in 2.1 did not really restrict its audience or usefulness.</span></text>
</content>
<content>
<layer>background</layer>
<id>6</id>
<text><span class="style1"></span><span class="style3">Using The Delimiter Fixer</span><span class="style1">The following step by step instructions should guide you through your use of The Delimiter Fixer:</span><span class="style13">1) Select Import and Export Files.</span><span class="style1">Click on the </span><span class="style5">Import File...</span><span class="style1"> button to select an import file. This is the file that stores the actual data you wish to convert. HyperCard will display a dialog box from which you may select a file. Confirm your choice by pressing <return> or by clicking the </span><span class="style4">Open</span><span class="style1"> button on the dialog box. The name of the file you have chosen will appear in the field below the</span><span class="style5"> Import File...</span><span class="style1"> button.Click on the </span><span class="style5">Export File...</span><span class="style1"> button to name a destination file for the converted data. A dialog box will appearΓÇöenter a file name and click the dialog box's </span><span class="style4">Save</span><span class="style1"> button to proceed. If you choose the name of an existing file, you will be asked whether you wish to replace the existing file. Click the appropriate response. The name of the file you specify will appear in the field beneath the </span><span class="style5">Export File...</span><span class="style1"> button.</span><span class="style13">2) Select Field and Record Delimiters</span><span class="style1">Select from the popup menus the field and record delimiters that are appropriate to your data. (See </span><span class="style5">About The Delimiter Fixer</span><span class="style1">, above, for information about field and record delimiters as well as variable and fixed field formats.) Note that The Delimiter Fixer will only process data with a single field delimiter. If the delimiter in your data does not appear on the list, choose </span><span class="style5">Other...</span><span class="style1"> from the popup menu. You will be asked to enter the delimiter of your choice.</span><span class="style13">3) Select the Direction of the Conversion.</span><span class="style1">You may choose to convert your data from fixed field format to variable length format or from variable length format to fixed field format. Click on the appropriate radio button.</span><span class="style13">4) Supply a Valid Header</span><span class="style1">The Delimiter Fixer requires valid header information to process your data. (See </span><span class="style5">The Header</span><span class="style1">, under </span><span class="style5">What DF Expects</span><span class="style1">, above, for the specific format of the Header.) This information may either be the first record appearing in your data or else directly entered into this stack. If you wish to enter your Header into this stack, click on the </span><span class="style5">Specify Header...</span><span class="style1"> button. A field will appear in which you may type the appropriate Header. Click the </span><span class="style5">OK</span><span class="style1"> button when you have finished. If the Header is included as the first record in your file, you do not need to enter a Header into this stack. If you do so and both Headers appear to be valid, you will be asked which Header you would prefer to use.</span><span class="style13">5) Click the </span><span class="style16">GO</span><span class="style13"> button to proceed.</span><span class="style1">If everything appears to be in order, The Delimiter Fixer will proceed to convert your data. A status box will appear informing you how many records have been converted. Be aware that the Delimiter Fixer is not a fast program. See </span><span class="style5">What DF Expects</span><span class="style1">, above, for details. If something is wrong, an error dialog will appear and the conversion process will be halted. Proceed from the appropriate step above to correct the error.To interrupt the conversion process at any time, hold down the </span><span class="style5">command</span><span class="style1"> (∩ú┐) and </span><span class="style5">option</span><span class="style1"> keys while at the same time pressing the mouse. The conversion process will stop where it is and close all appropriate files.Please see the rest of this documentation for inportant information regarding the operation of The Delimiter Fixer.</span></text>
</content>
<content>
<layer>card</layer>
<id>8</id>
<text><span class="style1">To select a topic, choose anitem from the popup menu under</span><span class="style9">Table of Contents...,</span><span class="style1">above.To move through the text,select another item from the popupmenu, use the scrollbar, oruse the </span><span class="style5">Page Up</span><span class="style1"> and </span><span class="style5">Page Down</span><span class="style1"> keys(extended keyboards only).To print this documentation, click onthe </span><span class="style5">Printer</span><span class="style1"> icon, above.Click on this field to make it vanish.</span></text>
</content>
<name>DF Help</name>
<script>--note: this entire card is a kludge. I thought of the interface before I-- thought of how to best execute it. Forgive my programming ineptitude.-- gd-- ΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóon opencardshowfield introhide msgpass opencard --fer othersend opencard-- ΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóΓÇóon keydown which--allows PageUp and Page Down keys (on apple's extended keyboard)--to be used within the scrolling fieldsif chartonum(which) is 11 then PageField up, VisibleField()else if chartonum(which) is 12 then PageField down, VisibleField()else pass keydownend keydownon PageField direction, TheFieldput the bottom of TheField - the top of TheField into VisLengthif direction is up thenlock screenset the scroll of TheField to the scroll of TheField - round(.8 * Vislength)unlock screen with wipe up very fastelselock screenset the scroll of TheField to the scroll of TheField + round(.8 * VisLength)unlock screen with wipe down very fastend ifend PageFieldon showField whichrepeat with i = 1 to the number of bg fldsif not(the name of bg fld i contains which) thenhide bg fld ielseset the scroll of bg fld i to 0show bg fld iend ifend repeatend showFieldfunction VisibleFieldrepeat with i = 1 to the number of bg fldsif the visible of bg fld i then return the name of bg fld iend repeatreturn emptyend VisibleField</script>
</card>
card_4565.xml
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE card PUBLIC "-//Apple, Inc.//DTD card V 2.0//EN" "" >
<script>on mouseUpDFMainCardend mouseUpon mousewithinHCBalloon "Click here to return to The Delimiter FixerΓÇÖs main card.", 20,10, 5end mousewithin</script>
</part>
<content>
<layer>card</layer>
<id>2</id>
<text><span class="style1">tore</span><span class="style17"> </span><span class="style1">frequently used Headers in the field below; to use them again, Cut and Paste into the Specified Header field on the first card.</span></text>