MAIL *ADD SS* STEM*MAIL ADDRESS*S TEM* ILING*A * IL NG D RE S* Y * I * E *S S M*MA * M ILI ADD S*SY EM A G* DR *SY EM AILING E I *A R S*S TE M G DD *S T *MAILIN T * L G DDR S* ST * N AD E * S M* I S M* AI N SS YS M I *A RE Y EM*M L Y EM*MA I *AD ES SY EM*MAIL G* DRE SY EM* I S TEM*M L G*A R S A G DDRE *SYS A *SYSTEM*MAILING*ADDRESS*SYSTEM*MAILING*ADDRESS*SYSTEM*MA *S STEM LING RESS EM* *AD *SY M SS STE MA IN AD ES SYS M AILING DDRESS YSTEM* RE * ST *MA I *AD E *SY E MAILIN ADDRES SYST D SS* S M*M L G*A R YST ILING DRESS STE D Y EM* I NG* D S SYS M*MAILING*A RESS*S T A RES S TE MA IN AD ES SY EM*MAILING* DRESS* S * DRE * EM*M NG*A RES S A *AD *SY G*ADDRESS*SYSTEM*MAILING*ADDRESS*SYSTEM*MAILING*ADDRESS *AD * STEM AIL D S L G*ADD S G DDRESS* ST *M LING*ADDR S*SY EM*MAI G*A E N ADDRESS* EM* ILING*ADD SS*S TEM*MA G R ING DRESS* STEM*M ING*AD ESS* M*M L * D NG*A RESS YSTEM*MAI NG*A RESS YSTEM* IL NG D ILING* DRES SYSTEM*MA ING* DRES SYSTEM AILIN A A *ADDRE *SYS AILING DDRE E MAILI * MAILING*ADDRESS*SYSTEM*MAILING*ADDRESS*SYSTEM*MAILING Mailing Address System Donald E. Barth 8-Jun-83 MM MM A IIII LL IIII NN NN GGGGG MMM MMM AAA II LL II NNN NN GG MMMM MMMM AA AA II LL II NNNN NN GG MM MMM MM AA AA II LL II NN NN NN GG GGGG MM M MM AAAAAAA II LL II NN NNNN GG GG MM MM AA AA II LL II NN NNN GG GG MM MM AA AA IIII LLLLLLL IIII NN NN GGGGG A DDDD DDDD RRRRR EEEEEEE SSSSS SSSSS AAA DD DD DD DD RR RR EE SS SS AA AA DD DD DD DD RR RR EE SS SS AA AA DD DD DD DD RRRRR EEEEE SSS SSS AAAAAAA DD DD DD DD RR RR EE SS SS AA AA DD DD DD DD RR RR EE SS SS AA AA DDDD DDDD RR RR EEEEEEE SSSSS SSSSS SSSSS YY YY SSSSS TTTTTTTT EEEEEEE MM MM SS YY YY SS TT EE MMM MMM SS YYYY SS TT EE MMMM MMMM SSS YY SSS TT EEEEE MM MMM MM SS YY SS TT EE MM M MM SS YY SS TT EE MM MM SSSSS YY SSSSS TT EEEEEEE MM MM Mailing Address System Donald E. Barth 8-Jun-83 MAILING ADDRESS SYSTEM ------- ------- ------ This package consists of several FORTRAN programs which can print addresses onto various types of paper stock for use in making mass mailings. The addresses can be printed onto envelopes and labels and, with the use of an appropriate word processing program, can be inserted into customized form letters. The programs accumulate the addresses which are to be written in a single row, shift the addresses horizontally to be the proper distance from the edge of the paper stock, and generate enough blank lines above and below to place each row of addresses onto a new row of forms. The dimensions of several standard sizes of forms are built into the programs, but the user can also match the dimensions of other forms. The programs in this package are not used to maintain the address lists. Instead, the addresses are read from a file which has been previously generated by an independent program. There might be many address lists maintained by several programs. It is only necessary that each of the programs which maintain the address lists be able to generate the same form of intermediate files which can then be read by the programs in this package. The format of these intermediate files is described later in this document. The intermediate files can contain the completely formatted addresses, or can contain the individual components, each separately identified, of each of the lines which are to be included in the addresses. Both types of files can be read by most of the programs in this package, but the form of the intermediate files which specifies the components of the addresses is more generally useful. The programs in this package do not obtain the addresses directly from the original data bases because that would have required the writing of a separate version of the programs for each different data base structure. Having only a single version of each program makes the programs in this package easier to develop and to maintain. However, having the programs read an intermediate file rather than the original data base does require more run time since the intermediate file must first be produced by the program which maintains the address list, and requires more disk space to store the intermediate file. Once a programmer has converted the programs which maintain the address lists to produce the proper intermediate files, the user should be able to run the programs in this package without consulting this manual. The questions which are asked by these programs are all simple, although in some cases there are many of them. The user can request an explanation of the available options by pressing the question mark key and then the RETURN key in response to any request other than for the name of a file. 2 Mailing Address System The following programs are contained in this package. The ENVELO program writes the addresses to a file which can be printed later onto envelopes mounted on continuous fanfold paper. The ENVELO program can also type the addresses directly onto envelopes which are inserted individually by hand into the controlling terminal or which are mounted on continuous fanfold paper. The LABELS program writes the addresses to a file which can be printed later onto parallel columns of labels mounted on continuous fanfold paper. The LABELS program can also type the addresses directly onto labels mounted on continuous fanfold paper which has been inserted into the controlling terminal. The SPLICE program writes the addresses to a file which can be used with the aid of a suitable word processing program to insert inside addresses and salutations into form letters. The SPLICE program does not itself insert the addresses into the form letters. The MRGADR program merges 2 or more files which specify the components of the addresses and which are each sorted in zip code order. The resulting single address file can be processed by the ENVELO, LABELS or SPLICE programs. The MRGADR program does not itself print the addresses onto paper stock. INPUT FILES CONTAINING PREVIOUSLY FORMATTED ADDRESSES ----- ----- ---------- ---------- --------- --------- The addresses which are to be processed by the programs in this package are read from a file which was written by the program which maintains the address list. This file can contain either the previously formatted addresses, or the separate components of the addresses. If the addresses have already been formatted, then at least 1 line starting with a period in the left column must appear between successive addresses. Lines starting with periods can also appear at the start and at the end of the file but are not required at these positions. The contents of the lines which start with periods are not copied into the addresses. The addresses can include salutations which are to be incorporated into form letters. These salutations are suppressed when the addresses are typed onto labels or envelopes. In order to be recognized as a salutation, the salutation must appear on the final line in the address, must start with the word "Dear" and must end with either a colon or a comma. The salutation will not be recognized if Input Files Containing Previously Formatted Addresses 3 it violates any of these requirements. The salutation line should be separated from the rest of the address by at least one blank line, although this is not required. If the address does not end with a salutation line, then a salutation can instead be constructed from the person's name in the first line of the address. However, salutations constructed in this manner should be carefully checked by the user since the program cannot recognize all possible variations in people's names. INPUT FILES CONTAINING COMPONENTS OF ADDRESSES ----- ----- ---------- ---------- -- --------- Each line of a file which specifies the components of the addresses, rather than addresses which have already been formatted, starts with an at sign (the @ character) followed immediately by a single character which specifies the type of component which is defined by that line. These first 2 characters on each line are not copied into the resulting address. If the character to the right of the at sign is one of the alphabetic letters A through Z, then this letter can appear in either upper case (a capital letter) or lower case (a small letter). The various components of the address can be specified in any order. The programs in this package insert punctuation marks where needed into lines, such as the name line and the city line, which are constructed from several components. Those portions of the address which require a full line, for example the department name, the organization name, and the street address, can be continued on as many subsequent lines as are necessary, but the extra lines must each be identified by the same at sign character pair in the first 2 columns. Each continuation line begins a new line in the resulting address. If a single component is continued onto subsequent lines, then these continuation lines can be separated in the input file by lines which define other components. The initial and continuation lines for a particular component of the address are copied into the address in the order in which they were encountered in the input file, but grouped together on adjacent lines. Extra spaces are deleted at the left end of the initial line for a particular component, but are retained at the left end of the continuation lines for the same component. The at sign character pairs which identify the components needed by these programs to construct the addresses are listed below. If a particular component is not defined for an address, then a line starting with the corresponding at sign character pair, but containing nothing else, is allowed but not required. The contents of a line are ignored if the line begins with an at sign character pair which is not listed here. 4 Mailing Address System @# Start of new address. The address defined by the preceding lines is complete. The rest of the current line is ignored. The following lines start a new address. @@ End of file. Not required. Subsequent lines in the file are not read. @A Street address. This item can be continued on following lines. @C City name. @D Department name. This item can be continued on following lines. @E Suffix to be placed to the right of the person's last name. Examples are Jr., III, etc. @F Person's first name. @G Name for salutation. This might be a first name for a personal letter or a Mr. or Ms. prefix together with the last name for a business letter. This should not include either the word "Dear" or a following colon or comma. The word "Dear" and the final punctuation mark will be inserted by the SPLICE program. The salutation is ignored by the other programs. @K Code line. The LABELS program can place this line at the top of the labels. The code line is ignored by the other programs. This line can contain any characters. @L Person's last name. @M Person's middle name. This should include the period if it is an initial. @N Country. This is not needed if the address is for the local country. @O Organization name. This item can be continued on following lines. @P Prefix to be placed to the left of the person's first name. Examples are Mr., Ms., Professor, etc. @S State name. This can have any form, such as a 2 letter abbreviation, a 4 letter abbreviation or the full spelling. The state name is used exactly as supplied and is not verified. @T Title to be placed below the person's name. This item can be continued on following lines. The title is considered to be expendable if the address must be Input files Containing Components of Addresses 5 reduced in height to fit onto a small label. @X Line to be inserted below the salutation by the SPLICE program. This is ignored by the other programs. This item could be used for something which is to be inserted into the body of the letter. This item can be continued on following lines. @Y Any additional line to be at the bottom of the address. This will appear above the salutation as a part of the address. An example might be CAMPUS MAIL. @Z Zip code. This can have any form, such as 5 digits or 9 digits. The components defined by these at sign character pairs are inserted into the address in the order which is shown below. The list of items which appear in the address is defined by 2 arrays which appear in the PUTADR subroutine and which are easily changed. The contents of these arrays are described later in this document. .LITERAL Word processor instruction @K Code (optional) @P @F @M @L, @E Prefix First Middle Last, Suffix @T Title @D Department @O Organization @A Street @C, @S @Z, @N City, State Zip, Country @Y Final line in place of above line Dear @G: Salutation if supplied in input file Dear @F, Alternate form of personal salutation Dear @P @L: Alternate form of business salutation .END LITERAL.END SPLICE @X Extra line to be spliced into letter For example, an input file having the contents shown below @PMr. @FJohn @MB. @LSmith @EJr. @TDirector @DCareer Counseling Office @OCentral College @CRockport @SCT @Z06352 @GMr. Smith @# @GLinda @Z51222 6 Mailing Address System @STN @CVictorville @A6721 Main Street @OVillage University @OCollege of Science @DDepartment of Chemistry @LJones @MF. @FLinda @PMs. @@ would be converted by the SPLICE program into an output file having the contents shown below. .LITERAL Mr. John B. Smith, Jr. Director Career Counseling Office Central College Rockport, CT 06352 Dear Mr. Smith: .END LITERAL.END SPLICE .LITERAL Ms. Linda F. Jones Department of Chemistry Village University College of Science 6721 Main Street Victorville, TN 51222 Dear Linda: .END LITERAL.END SPLICE The file produced by the SPLICE program could itself be treated as an input file which is to be processed by the ENVELO, LABELS and SPLICE programs. If such a second generation file were to be processed again by the SPLICE program, then the resulting third generation file would exactly duplicate the second generation file. However, an output file which has been produced by the SPLICE program cannot be correctly processed by any of the programs in this package if this output file contains any lines after the .END LITERAL.END SPLICE commands which are to be merged by the word processing program into the body of the form letter. Starting at an Address Beyond First Address in File 7 STARTING AT AN ADDRESS BEYOND FIRST ADDRESS IN FILE -------- -- -- ------- ------ ----- ------- -- ---- An interruption while the addresses are being printed can mean that the paper stock has to be realigned in the printer or that the printing process has to be started over. Since considerable time or expensive paper stock might have been used for the addresses which have been printed correctly, it may be desirable to run the program which copied the addresses again starting at or just before the first address which was spoiled. The programs in this package allow the user to type a word or a phrase which appears in the first address which is to be copied but which does not appear in any address which is located earlier in the file. If the ENVELO program is being used to type the addresses onto separate envelopes, then, after any envelope has been completed, the user can merely press the RETURN key to type the next address or else the user can type a word or a phrase which is unique to a subsequent address to skip to that address. If the addresses are being typed onto labels or onto envelopes which are mounted on continuous fanfold paper, then all of the addresses appearing after the selected address will be generated. The word or phrase which the user types to select a particular address must be longer than 1 character. If the ENVELO program is being used, then a single printing character can be typed by the user before the first address is generated to obtain a target pattern instead, and a single printing character can be typed by the user after any address has been typed on a separate envelope to repeat that address. If there are several addresses which have not yet been generated and which contain the word or phrase, then the first of these will be selected. If the user is inserting individual envelopes and if an address is obtained which is too early in the file, then the user can merely specify the word or phrase again after the incorrectly selected address has been generated. However, if the addresses are being typed onto labels or onto envelopes which are mounted on continuous fanfold paper, then there is no way to interrupt the typing of the addresses other than to stop the program entirely. The word or phrase typed by the user will match the word or phrase having the same spelling in the address regardless of the cases of the alphabetic letters, i.e. whether these are capital or small letters. The word matched in the address must start with the first printing character on the line or must start with the first printing character following either a space or a comma. The word must extend through the final printing character on the line or must be followed by a space or must be followed by a printing character which is neither one of the alphabetic letters A through Z nor one of the digits 0 through 9. 8 Mailing Address System Spaces between words typed by the user indicate the only locations in the address at which spaces are allowed for a match, but spaces are not required for a match at these locations in the address. For example, if the user types the single word "NewHaven", then this word will match the single word "NewHaven" in the address, but will not match the 2 word phrase "New Haven" with a space between the words. If the user types the 2 word phrase "New Haven" with a space between the words, then this phrase will match either the single word "NewHaven" without a space or the 2 word phrase "New Haven" with a space between the words. FILE NAME CONVENTIONS ---- ---- ----------- On either the DECsystem10 or DECsystem20 computers, the names of the files which are read or written by the programs in this package must consist of 1 to 6 letters or digits, optionally followed by a period and then by 0 to 3 letters or digits. If the user does not type a period in the file name, or if a period is typed but nothing else is typed to the right of the period, then the name of the file will consist only of the characters which were actually typed. No default or standard file name extension (file type) is assumed. If the user types ABC as the file name, then the name of the file will be exactly this, not ABC.RNO or ABC.TXT or ABC.ADR or any other combination. The files written by the LABELS program are named LABELS.DDD where DDD is a decimal number from 001 through 999. The program checks for the first currently unused file name in the sequence and writes the new labels into this file. For a large label run in which more labels are generated than the operators of the computer want to have in a single file, the LABELS program will create additional output files as necessary, each time selecting the next unused file name in the sequence. The first output file would be named LABELS.001 if a file with this name did not already exist, the second output file would be named LABELS.002, and so on. The files written by the ENVELO program are similarly named ENVELO.DDD where DDD is a decimal number from 001 through 999. The user is not able to change the manner in which the names of the output files produced by the LABELS and ENVELO programs are constructed. Instructions for Using the ENVELO Program 9 INSTRUCTIONS FOR USING THE ENVELO PROGRAM ------------ --- ----- --- ------ ------- The ENVELO program writes the addresses into an output file which can be printed later onto envelopes which are mounted on continuous fanfold paper. The ENVELO program can also type the addresses directly onto separate envelopes which are inserted individually by hand into the controlling terminal or onto envelopes which are mounted on continuous fanfold paper. The dimensions of 2 standard sizes of envelopes are built into the program, but the user can also specify the exact dimensions of any other size of envelopes. The user can request that the program generate as many target patterns as are necessary to align the paper stock in the terminal prior to the generation of the actual addresses. If separate envelopes are being inserted individually by hand into the terminal, then the program can repeat an address if an envelope is seen to be spoiled. The program either can type just the destination addresses read from an input file onto the envelopes, or can type both the destination addresses and a return address specified by the user when the program is started. If a return address is requested, then the return address can be typed in the upper left corner with the destination address at the center, or these positions can be exchanged. Salutations specified by the input file are not typed onto the envelopes. If the input file specifies addresses which have already been formatted, then the salutation lines are recognized by their starting with the word "Dear" and ending with either a colon or a comma. It is strongly recommended that if the addresses are to be typed directly onto envelopes which are mounted on fanfold paper, then the initial interaction with the program be done on regular paper and that the fanfold paper be inserted into the terminal just before the program types the first address. Attempting to type the initial interaction onto envelopes which are mounted on fanfold paper can cause extremely bad paper jams when the terminal types onto the bottom edges of envelopes if these are attached only at the top. Once the typing of the addresses has begun, there is little danger of paper jams since the program will only type on the central portions of the envelopes. A typical dialog between the user and the ENVELO program is shown below. The phrases which end in question marks are the requests typed by the program. The characters to the right of the question marks were typed by the user in response to these requests. 10 Mailing Address System ENVELO (03/83) Separate or Continuous envelopes or File (S, C or F)? F Number of target envelopes in each file? 10 Maximum number of envelopes in each file? 1000 Wide, Narrow or Other size envelopes (W, N or O)? N Pica or Elite spacing (P or E)? P Light or dark type (L or D)? L Type how many copies of each envelope? 1 Did a blank line appear after your last answer (Y or N)? N Type return address (press RETURN key again when done) ?First line of Return address ? Return address at corner, middle or both (C, M or B)? C File containing addresses? ADDRSS Output file number 1 is named ENVELO.001 Output file number 1 contains 208 envelopes Process additional addresses (Y or N)? N Total envelopes produced: 208 EXIT The items which the user must type are described below in the order in which these items are requested. The user will not always be asked to specify every item. Which items are requested will depend upon what responses the user has already made. 1. Whether the addresses are to be written into an output file or are to be typed directly onto separate envelopes or directly onto envelopes mounted on fanfold paper. The user should respond by typing one of the following letters. S (for Separate) if the addresses will be typed directly onto separate envelopes which are inserted individually by hand into the terminal. The program will pause after each envelope is finished and wait for the user to insert the next envelope. C (for Continuous) if the addresses will be typed directly onto envelopes mounted on continuous fanfold paper. The program will not pause between envelopes. F (for File) if the addresses are to be written into an output file which will be printed later onto envelopes which are mounted on continuous fanfold paper. 2. The number of target envelopes which are to be written at the start of each output file for use in aligning the paper in the printer or terminal. This question is asked only if the addresses are being written into an output file rather than being typed directly onto the envelopes. The locations of the corner address and of Instructions for Using the ENVELO Program 11 the middle address will be outlined on each of these target envelopes. Target envelopes are also available when the addresses are being typed directly onto the envelopes, but in that case these target envelopes are requested one by one until the paper is properly aligned. 3. The maximum number of envelopes which can be written into a single output file. This question is asked only if the addresses are being written into an output file rather than being typed directly onto the envelopes. The maximum number of envelopes should include both the target envelopes and those actually bearing addresses. The program will begin a new output file starting with a set of target envelopes each time that the desired maximum number of envelopes has been written into the current output file. This limit should be used to assure that no more envelopes are written into a single output file than can be printed onto the envelopes which are mounted on a single length of continuous fanfold paper. 4. Whether the addresses will be typed onto wide or narrow envelopes, the dimensions of which are built into the program, or whether the user will specify the exact dimensions of the envelopes. The user should respond by typing one of the following letters. W (for Wide) if the envelopes are 9 1/2 inches wide by 4 1/8 inches high. N (for Narrow) if the envelopes are 7 1/2 inches wide by 4 inches high. O (for Other) if the envelopes have some other dimensions. The user will be asked the following additional questions if this option is selected. Maximum number of lines above corner address? Minimum number of lines below corner address? Maximum number of lines above middle address? Minimum number of lines below middle address? Height of envelope as number of lines? Number of blank columns left of corner address? Number of blank columns left of middle address? The dimensions of the 2 standard sizes of envelopes, narrow and wide, which are built into the ENVELO program, are shown below. The dimensions in this table should be consulted if only a minor adjustment of the size is necessary. Which address is labeled "corner" and which is labeled "middle" is based upon the default positions for these addresses. The positions of these addresses could be interchanged provided that the answers to the other questions 12 Mailing Address System which mention "corner" and "middle" are likewise reversed. The column offsets for the corner and middle addresses are stated assuming an elite spacing of 12 characters per inch. These offsets can be multiplied by 10/12 to get the corresponding offsets for a pica spacing of 10 characters per inch. size: Narrow Narrow Wide Wide how fed: Separate Fanfold Separate Fanfold locations: Middle Both Middle Both Middle Both Middle Both above corner - 0 - 2 - 0 - 2 below corner - 3 - 3 - 3 - 3 above middle 6 11 10 10 7 12 10 10 below middle 3 3 3 3 3 3 3 3 total height 17 22 21 21 18 23 21 21 offset corner - 0 - 0 - 0 - 0 offset middle 28 34 34 34 40 46 46 46 In the above table, the column headings "Narrow" and "Wide" refer to the envelope size. "Separate" and "Fanfold" refer to whether the envelopes are separately fed into the the terminal or are mounted on fanfold paper. "Middle" and "Both" refer to whether only the middle address is to be typed, or whether both the corner and middle addresses are to be typed. Minus signs appear where a dimension refers to the corner address but no corner address is being typed. If the addresses are being written into a file which will be typed later onto the envelopes, then the dimensions in the columns labeled "Fanfold" and "Both" are used, regardless of whether the envelopes bear return addresses or not. 5. Whether Pica or Elite character spacing is desired. The character spacing is used to calculate the offset of the central address from the left edge of the envelope. This question is not asked if the user is specifying the envelope dimensions directly. This program does not issue control character or escape character sequences to set the character spacing on the terminal or printer. Instead, it is the responsibility of the operator of the terminal or printer to adjust the terminal or printer to give the desired character spacing. The user should respond to this question by typing one of the following letters. P (for Pica) if the addresses are to be typed at 10 characters per inch. E (for Elite) if the addresses are to be typed at 12 characters per inch. Instructions for Using the ENVELO Program 13 6. Whether the addresses are to be overprinted to make them appear darker. This question is not asked if the addresses are being written into an output file to be typed later. The user should respond by typing one of the following letters. L (for Light) if each line is to be typed only once for normal density. D (for Dark) if each line is to be typed twice to make it darker. 7. The number of envelopes upon which each destination address or each combination of return address and destination address is to be typed. As an example, this would have the value 1 if both the return address and destination address are being typed and one envelope is desired with the destination address in the middle and a second envelope is desired with the destination address in the corner. 8. Whether a blank line appeared after the last answer typed by the user. This question is not asked if the addresses are being written into an output file which will be typed later. The particular FORTRAN operating system being used determines whether a blank line appears between a line typed by the user and the next line displayed by a program. The user will usually not have any control over which operating system is used. The answer to this question is used to keep track of the number of lines typed onto the terminal while the envelopes which are mounted on fanfold paper are being aligned in the terminal. After each envelope is finished, the program generates enough blank lines before the next address is typed so as to realign the paper with the top of the next address. If the addresses are being typed onto envelopes which are mounted on fanfold paper, then the correct calculation of the number of lines displayed on the terminal is necessary if the addresses are to be aligned the same as the target patterns, and also if the addresses in a subsequent file are to be aligned the same as the addresses in the first file. The user should respond by typing one of the following letters. Y (for Yes) if a blank line appeared after the last answer typed by the user. N (for No) if a blank line did not appear after the last answer typed by the user. 14 Mailing Address System 9. The return address. If the user specifies a return address here, then this return address will be typed on each of the envelopes in addition to the destination addresses read from the input address file. This return address will be typed on the envelopes exactly as it is typed by the user. The return address can be just a single line, or can be continued onto several lines. The user must press the RETURN key after each line, and must press the RETURN key an extra time after the last line has been typed. If no return address is desired, then the user must still press the RETURN key once in response to this request. 10. Whether the return address is to be typed at the upper left corner of the envelope with the destination address in the middle, or in the middle with the destination address at the upper left corner. This question is asked only if a return address has been specified. The user should respond by typing one of the following letters. C (for Corner) if the return address is to appear at the upper left corner of the envelope and the destination address is to appear in the middle. M (for Middle) if the return address is to appear in the middle of the envelope and the destination address is to appear at the upper left corner. B (for Both) if 2 times the number of copies of each envelope specified earlier are to be produced typed with each destination address. Half of these envelopes are to have the return address at the upper left corner and the other half are to have the return address in the middle. 11. The name of the address file which is to be read by this program. The address file either specifies the components of the addresses or contains the previously formatted addresses. If the address file specifies the components, then each line starts with an at sign. If the address file contains the previously formatted addresses, then these are separated by lines starting with periods. The program will instruct the user how to align the first envelope. After the first envelope has been inserted into the terminal, the user can press the RETURN key to signal to the program that the first address can be typed. The user can instead request that the program type a stylized test address onto the envelope currently in the terminal by pressing the key for a single printing character before pressing the RETURN key. If additional stylized test envelopes are needed to align the paper, then the user can again press the key for a single printing character and the Instructions for Using the ENVELO Program 15 RETURN key for each of these. If the addresses are being typed onto envelopes mounted on fanfold paper, then the program will type all of the addresses in the input file before halting. If the user is instead inserting individual envelopes into the terminal, then the user will have to press the RETURN key again after each envelope has been inserted to signal to the program that it can type the next address. If individual envelopes are being inserted into the terminal, and if one of these is spoiled in some manner, then the user can press either the TAB key or the key for any single printing character before pressing the RETURN key to cause the program to retype the current address. If the TAB key, which does not print anything on the envelope, is pressed, then the address will be retyped onto the envelope already in the terminal. If the key for a single printing character is pressed instead, then the program will type a stylized test address onto the envelope currently in the terminal and will then wait for the user to insert another envelope and press the RETURN key again. There is no way to retype an address which appeared before the current address other than to stop the program and then start over. Instead of merely pressing the RETURN key to generate the first address after the envelopes have been aligned, the user can type any word or phrase which appears on any line of an address appearing later in the file to select that address as the first which is to be generated. If the addresses are being typed onto separate envelopes which are being individually inserted into the terminal, then after any address has been typed, the user can insert a scrap sheet of paper into the terminal and type a word or phrase to skip forward to the address containing that word or phrase. If the addresses are being typed onto envelopes which are mounted on fanfold paper, then such a word or phrase can only be typed before the first address is generated and the paper stock must already have been correctly aligned. The word or phrase should be unique to the desired address. The word or phrase must be longer than 1 character since a single letter would cause the current address to be retyped instead. If there are several addresses which have not yet been typed and which contain the word or phrase, then the first of these will be selected. If the user is inserting individual envelopes and if an address is obtained which is too early in the file, then the user can merely specify the word or phrase again after the incorrectly selected address has been typed. However, if the addresses are being typed onto envelopes which are mounted on fanfold paper, then there is no way to interrupt the typing of the addresses other than to stop the program entirely. 16 Mailing Address System INSTRUCTIONS FOR USING THE LABELS PROGRAM ------------ --- ----- --- ------ ------- The LABELS program writes the addresses into an output file which can be printed later onto parallel columns of labels which are mounted on continuous fanfold paper. The LABELS program can also type the addresses directly onto labels mounted on continuous fanfold paper which has been inserted into the controlling terminal. Several rows of target labels can appear before the addresses for use in aligning the paper stock in the printer or terminal. A single minus sign is also printed at the left edge between the rows of addresses for confirming the alignment once printing has begun. If the paper stock is properly aligned, then these minus signs will be printed in the spaces between the labels. Since labels can be relatively small, the program can be given a vocabulary of words which can be abbreviated and of words which can be deleted to shorten long lines. The person's job title can also be deleted if the address contains too many lines. If the input file contains the previously formatted addresses, then the second line of each address is assumed to contain the job title and the following lines are assumed to be extensions of the job title if they are indented to the right of the left column. The vocabulary of words which can be abbreviated or deleted is read from an input file. These replacements and deletions are performed only in lines which are too long to fit onto the labels. If the user specifies that words in long lines cannot be abbreviated, then the file which defines the vocabulary will not be read and no such replacements will be made. Each line in the file which defines the vocabulary should contain either one or two words. Lines containing 1 and 2 words can be intermixed. The first word on a line can start either in the left column, or further to the right. If a line in the vocabulary file contains a single word, then this word is taken to be a word which can be deleted to shorten a line which is too long in an address. If a line in the vocabulary file contains 2 words separated by 1 or more spaces, then the shorter word is taken to be a synonym by which the longer word can be replaced. If the words are of the same length, then the first can be replaced by the second, although this would not change the length of the line and would be done only if the line were already too long. The words in the vocabulary are recognized ignoring the cases of the alphabetic letters A through Z. The cases of the alphabetic letters in the words which are inserted into the addresses are the same as were specified in the vocabulary file. The following lines could appear in the vocabulary file to specify that the word THE could be deleted and the word AND could be replaced by an ampersand (the & character). Instructions for Using the LABELS Program 17 THE AND & A typical dialog between the user and the LABELS program is shown below. The phrases which end in question marks are the requests typed by the program. The characters to the right of the question marks were typed by the user in response to these requests. LABEL (04/83) Type number which selects intial dimensions you then modify 1 for 1 column of 4 by 1 1/2 labels, 10 pitch, 6 lines/inch 2 for 4 columns of 3 3/8 by 1 labels, 12 pitch, 8 lines/inch Set dimensions initially to which default? 2 A) Asterisk on labels with code B) Boxes (rows of for alignment) 33 C) Columns of labels 4 D) Detach bottom line and zip code YES E) Each address on how many labels 1 G) Gutter width (spaces between) 4 H) Height of each label in inches 1.000 I) Initial code lines NO L) Line spacing (lines per inch) 8 M) Maximum rows of labels in file 5000 O) Offset (extra spaces at left) 0 P) Pitch (characters per inch) 12 S) Separate CAMPUS MAIL,zip,neither NO T) Tab characters replace spaces YES U) Upper case conversion NO W) Width of each label in inches 3.375 Are the above all correct (Y or N)? N Press RETURN key extra time when all items are correct Change item? B Number of rows of alignment boxes? 5 Press RETURN key extra time to list all items Change item? M1000 Change item? A) Asterisk on labels with code B) Boxes (rows of for alignment) 5 C) Columns of labels 4 D) Detach bottom line and zip code YES E) Each address on how many labels 1 G) Gutter width (spaces between) 4 H) Height of each label in inches 1.000 I) Initial code lines NO L) Line spacing (lines per inch) 8 M) Maximum rows of labels in file 1000 O) Offset (extra spaces at left) 0 P) Pitch (characters per inch) 12 S) Separate CAMPUS MAIL,zip,neither NO T) Tab characters replace spaces YES U) Upper case conversion NO W) Width of each label in inches 3.375 Are the above all correct (Y or N)? Y 18 Mailing Address System Are addresses to be written into an output file (Y or N)? Y Did a blank line appear after your last answer (Y or N)? N Abbreviate words in long lines (Y or N)? Y File specifying abbreviations? ABBREV Abbreviations Remove: THE Change: AND to & File containing addresses? SAMPLE Word or phrase unique to first label? Output file number 2 is named LABELS.002 Output file number 2 contains 416 labels Process additional addresses (Y or N)? N Total labels produced: 416 EXIT The values of the items which can be selected and changed by the user are summarized in the tables shown in the above dialog. To change a particular value or option specification, the user first types the letter which is shown to the left of the item in the table. Only the single letter, not the full word which it represents, should be typed by the user. The user can type the new value or option specification either to the right of the letter or else on the next line. If the user types the new value or option specification to the right of the letter, then one or more spaces can be typed between the letter and the new value or option specification, but such spaces are not required. If the user types the new value or option specification to the right of the letter, and if this value or option specification is within the valid range, then the program will merely ask what item the user wants to change next. If the user does not type a value or option specification to the right of the letter, then the program will display a short description of the item. The user can press the question mark (the ? character) key and then the RETURN key to obtain a more complete description. The short description will then be displayed again. Where a YES or NO answer is expected, Y and N are sufficient responses, but the user can type the full words instead. Where a height in inches or a width in inches is expected, the user can type a period between the whole number portion of the answer and the fractional portion. The original value or option specification will usually be retained if the user merely presses the RETURN key in response to the short description. However, an empty or null answer, when setting the code which is to be matched for addresses which are to be marked with asterisks on the labels, instead specifies that no addresses are to be marked in this fashion, and is a valid response. Instructions for Using the LABELS Program 19 The items which the user can set are described below. The letter by which the item is selected is shown to the left in the margin. To the right of this letter is shown the question which is displayed by this program to prompt the user to enter the new value or option specification. A Asterisks on labels with code (*,% are wild cards)? The user should type the identification code of any address which is to bear an asterisk (the * character) at the upper right corner of the label. This option is active only if the input file specifies the components of the addresses. The identification code is the sequence of characters which are defined in the input file on the line starting with an @K character pair. The label can be marked with an asterisk even if the identification code is not itself copied into the label. The cases of the alphabetic letters A through Z are ignored, both in the code typed by the user and in the codes specified in the input file. A percent sign (the % character) can be included in the code typed by the user where any single printing character is to be allowed. The percent sign will not match either a space or a code which is shorter than the location of the percent sign. An asterisk can be included at the right end of the code if any sequence of characters is to be allowed starting at that point. The asterisk will match a sequence of characters which contains a space or spaces and will not prevent the matching of a code which is shorter than the location of the asterisk. If the user specifies the code A%C*, then labels containing addresses having codes such as AAC..., ABC..., ACC... etc. would be marked with asterisks regardless of the cases of the letters in the codes. If the user selected a code previously, but has since decided that the labels are not to be marked with asterisks, then the user should just press the RETURN key again when asked to type the code. B Number of rows of alignment boxes? Several rows of label outlines can be generated before the first address in each output file to be used for alignment of the paper in the terminal or printer. The user should type the number of rows of empty boxes which are desired. Probably zero rows of labels outlines should be selected here if the addresses are to be typed directly onto the controlling terminal, since in that case the user can interactively request as many rows of label outlines as are necessary to align the paper in the controlling terminal. 20 Mailing Address System C Number of parallel columns of labels? The addresses can be arranged in a single column, or in 2 to 4 parallel columns. If 3 columns of labels are selected here, then the first 3 addresses would be placed on the first row of 3 labels, and the fourth address would be on the left label in the second row. D Detach bottom line and zip from address (Y or N)? The bottom line of the address, which usually contains the city and state names, can be separated from the rest of the address by an extra blank line, and the zip code at the right end of the bottom line can be shifted a few extra spaces to the right. In order to be recognized, the zip code must consist either of 5 digits or of 5 digits followed immediately by a minus sign and 4 digits. The user should type either of the following letters. Y to separate the bottom line from the rest of the address by an extra blank line and to shift the zip code slightly to the right. N to have the bottom line be contiguous with the rest of the address and to have the zip code be just to the right of the state. E Each address is to be printed on how many labels? The user should type the number of labels onto which each address is to be printed. If each address is to be printed onto 2 labels, then the number 2 would typed here. The duplicate copies of the addresses are printed on adjacent labels. To print 1 complete set of labels to be followed by a second complete set, either the input file should be processed twice, or this program should be run twice. G Width of gutters between labels (columns)? The user should type the number of columns of characters which are to be kept blank between adjacent labels to allow for horizontal misalignment of the paper stock in the terminal or printer. The user would type 4 here if 2 columns are to be kept blank at the right edge of each label and 2 more columns to be kept blank at the left edge of the adjacent label. The label width specified elsewhere in inches must include the width of these blank columns. Instructions for Using the LABELS Program 21 H Height of labels in inches? The user should type the distance between the tops of successive labels. The user should type 1.25 if the labels are 1 and 1/4 inches high. I Include initial code line (Y or N)? The code specified in the address file by a line starting with an @K character pair can be typed on a separate line above the rest of the address. This code can be included on the labels only if the input file specifies the components of the addresses. Inclusion of this code on the label is independent of the marking of an asterisk at the upper right corner of addresses having particular codes. The user should type either of the following letters. Y to include the code on the top line of each label. N to exclude the code. L 6 or 8 lines per inch? The line spacing is used to calculate the maximum number of lines in a single address. The operator must adjust the terminal or printer to obtain this line spacing. This program does not insert escape or control character sequences into the output file to set the terminal or printer to the desired line spacing automatically. The user should type either of the following numbers. 6 if the terminal or the printer is adjusted for 6 lines per inch. 8 if the terminal or the printer is adjusted for 8 lines per inch. M Maximum number of rows of labels? The user should type the maximum number of rows of labels which can appear in a single output file. A new output file will be begun after this many rows have been written to the current output file. The maximum number of rows of labels includes the rows of alignment boxes which are generated at the start of each output file. If each file starts with 10 rows of boxes, and if there are 3 parallel columns of labels, then selecting 1000 rows here would allow up to 3*(1000-10) or 2970 labels actually bearing addresses in each file. 22 Mailing Address System O Offset left label to right how many spaces? The user should type the number of extra spaces which are to be inserted to the left of the addresses in the leftmost column of labels. Unlike the spaces in the gutter between adjacent labels, the spaces inserted to the left of the addresses in the leftmost column of labels should not be included in the width of the labels stated in inches elsewhere. This offset shifts all of the addresses on each row of labels to the right. The offset does not change the placement of the addresses relative to one another. P Pitch? The pitch or characters per inch is used to calculate the number of characters which can appear across the width of each label. The operator must adjust the terminal or printer to obtain this character spacing. This program does not insert escape or control character sequences into the output file to set the terminal or printer to the desired character spacing automatically. The user should type either of the following numbers. 10 if 10 characters are being typed per inch (Pica spacing). 12 if 12 characters are being typed per inch (Elite spacing). S Separate CAMPUS MAIL, ZIP and neither (Y or N)? On the system for which these programs were originally developed, foreign and campus mail addresses often had derelict United States zip codes. The addresses which were sorted by United States zip codes could be separated into the correct groups only by making 3 passes through the input file. This option is probably useless elsewhere. The user should type either of the following letters. Y to scan the input file 3 times, producing first the labels which have CAMPUS MAIL on the last line, then the labels which have neither CAMPUS MAIL nor a zip code on the last line, and finally the labels which have a zip code on the last line. N to produce the labels exactly in the order in which these are specified in the input file. Instructions for Using the LABELS Program 23 T Convert multiple spaces to tab characters (Y or N)? This program can convert multiple spaces to tab characters to save transmission time to the terminal or printer and/or to save disk space if the labels are being written to an output file. The tab character is a non-printing character which causes the next printing character to appear to the right of the next integral multiple of 8 column positions. The user should type either of the following letters. Y if multiple spaces are to be converted to tab characters. N if multiple spaces are not to be converted to tab characters. This should be used if either the operating system or the output device does not support the tab character. U Convert lower case to upper case (Y or N)? Whether labels are more legible when the alphabetic letters A through Z are typed in the mixture of upper and lower cases specified in the address file or when all alphabetic letters have been converted entirely to upper case will depend upon the terminal or printer used. The user should type either of the following letters. Y to convert all lower case alphabetic letters in the addresses to upper case (capitals). N to keep all alphabetic letters in their original cases. W Width of labels in inches including gutters? The user should type the distance in inches between the left edges of adjacent parallel columns of labels. This distance must include the columns which are in the blank gutter between the labels. This distance must not include the columns by which the labels at the left are offset from the left edge of the paper. The user should type 3.5 if the labels are 3 and 1/2 inches wide. After the user has verified that the description of the labels is correct, the program will ask whether the addresses are to be written into an output file which will be printed later onto the labels. If the user responds by typing "NO", then the addresses are instead typed directly onto the controlling terminal. Later, just before the first address is typed onto the terminal, the user can 24 Mailing Address System interactively request one by one as many label outlines as are necessary to align the labels in the terminal. If the labels are being typed onto the controlling terminal, then the user will be asked whether a blank line appeared after the last answer typed by the user. The particular FORTRAN operating system being used determines whether a blank line appears between a line typed by the user and the next line displayed by a program. The user will usually not have any control over which operating system is used. The answer to this question is used to keep track of the number of lines typed onto the terminal while the labels which are mounted on fanfold paper are being aligned in the terminal. After each row of labels is finished, the program generates enough blank lines before the next row is typed so as to realign the paper with the top of the next address. The correct calculation of the number of lines displayed on the terminal is necessary if the addresses are to be aligned the same as the target patterns, and also if the addresses in a subsequent file are to be aligned the same as the addresses in the first file. The program will ask whether a list of words will be supplied which can be abbreviated or deleted in lines which are too long to fit onto the labels. If such a list is to be supplied, then the program will ask the user to specify the name of the file which specifies the list. A list of the deletions and substitutions which are specified by the file will be displayed to the user. After the user has specified the name of the address file, the user will be asked to type a word or phrase which is found first on any of the lines of the first address which is to be copied onto a label. Addresses which appear before the first appearance of this word or phrase will be discarded. If there are several addresses which contain the word or phrase, then the first of these will be selected. If a single word is typed, then it must be longer than a single character. All punctuation marks which appear between the words of a phrase must be included. The cases of the alphabetic letters A through Z are ignored. Only the RETURN key should be pressed to start with the first address. If the addresses are being typed onto the controlling terminal, then, instead of typing a word or a phrase which appears in the first address, the user can type just a single printing character before pressing the RETURN key to obtain a single row of target labels. The user can repeatedly type a single character to request such target labels until the paper is properly aligned in the terminal. Once the paper has been properly aligned, the user can either press the RETURN key an extra time to start with the first address, or can type a word or a phrase which appears in a later address to skip over the earlier addresses. Instructions for Using the SPLICE Program 25 INSTRUCTIONS FOR USING THE SPLICE PROGRAM ------------ --- ----- --- ------ ------- The SPLICE program writes addresses into an output file which can be processed later by an independent word processing program to insert these addresses into form letters. Extra lines are inserted before and after each address to serve as instructions for the word processing program named FROFF. The statements in the SPLICE program which generate these extra lines can be changed easily to generate whatever instructions are required by some other word processing program. FROFF emulates the RUNOFF word processing program, but FROFF provides many more features. FROFF is a FORTRAN program written by the same author as the programs in this package. A typical dialog between the user and the SPLICE program is shown below. The phrases which end in question marks are the requests displayed by the program. The characters to the right of the question marks were typed by the user in response to these requests. SPLICE (05/83) Business, Personal or No salutations (B, P or N)? B Default title if salutation is missing? Dr. Include lines to be merged into body of letter (Y or N)? Y Input address file? ADDRS1 Word or phrase unique to first address? JIM SMITH Output splice file? SPLICE Number of addresses read: 108 Number of addresses copied: 57 Number of added Salutations: 4 Process additional addresses (Y or N)? Y Input address file? ADDRS2 Word or phrase unique to first address? JANE DOE Continuing output file Number of addresses read: 9 Number of addresses copied: ALL Number of added Salutations: 1 Number of addresses copied: 66 (total) Process additional addresses (Y or N)? N Number of addresses read: 117 Number of addresses copied: 66 Number of added Salutations: 5 EXIT The items which the user must type are described below in the order in which these items are requested. The user will not always be asked to specify every item. Which items are requested will depend upon what responses the user has already made. 26 Mailing Address System 1. Whether the addresses are to include business or personal salutations or are not to include salutations at all. This determines whether a colon or a comma is to be attached to the right end of each salutation. If the input file specifies the previously formatted addresses separated by lines which start with periods, and if the bottom line in an address is a salutation, i.e. it starts with the word "Dear" and ends with either a comma or a colon, then the terminal comma or colon is removed and replaced by the punctuation mark selected by the answer to this question. If the input file does not specify a salutation for a particular address, then the answer to this question also specifies whether the person's first name or last name is to be used in the salutation. If the input file contains previously formatted addresses separated by lines which start with periods, then the name from which the salutation is constructed must be obtained from the contents of the first line of the address. Salutations which are constructed in this manner should be carefully verified by the user. The user should respond by typing one of the following letters. B (for Business) to place a colon at the right end of each salutation. A salutation will be constructed using the person's last name in each address for which a salutation is not defined by the input file. P (for Personal) to place a comma at the right end of each salutation. A salutation will be constructed using the person's first name in each address for which a salutation is not defined by the input file. N (for No) if no salutations are to be copied into the output file. Salutations will not be copied even if salutations are defined by the input file. Salutations will not be constructed in those addresses for which salutations are not defined by the input file. 2. If business salutations are selected, then the user will be asked to specify a title such as Professor or Doctor or Dr. which is to be used in constructing the salutation for each address which does not already end with a salutation. Such a salutation would be constructed from the information in the first line of the address. If the input file contains previously formatted addresses separated by lines which start with periods, and if the first line of an address starts with an abbreviation such as Ms. or Mr. which ends with a period, then this abbreviation will be used in constructing a salutation for that address instead of Instructions for Using the SPLICE Program 27 the title which you specify here. If the input file specifies the components of the addresses on lines which start with at signs, and if the name prefix for a particular address is specified by a line which starts with an @P character pair, then this name prefix will be used in constructing a salutation for that address instead of the title which you specify here. The user should merely press the RETURN key if all of the addresses already contain salutations or if a default title is not to be included in salutations which are constructed by this program. 3. Whether lines which start with an @X character pair in an input file which specifies the components of the addresses are to be copied into the output file after the .END LITERAL.END SPLICE commands so that the contents of these lines can be merged into the body of the letter. The user should respond by typing either of the following letters. Y if lines starting with an @X character pair are to be copied into the output file after the .END SPLICE command. N if lines starting with an @X character pair are not to be copied into the output file. The answer to this question is used only if the input file specifies the components of the addresses. This question must still be answered, but the answer is ignored, if the input file specifies previously formatted addresses separated by lines which start with periods. If lines which start with an @X character pair are to be copied into the output file, then each address should have the same number of lines which start with this character pair, and, if there is more than one input file, then all of the input files should specify the components of the addresses. 4. The name of the address file which is to be read by this program. The address file either specifies the components of the addresses or contains the previously formatted addresses. If the address file specifies the components, then each line should start with an at sign character pair. If the address file contains the previously formatted addresses, then these are separated by lines starting with periods. If the address file contains the previously formatted addresses, then blank lines within each address are retained, but blank lines at the start or end of each address are discarded. 28 Mailing Address System 5. A word or phrase which is found first in the first address which is to be copied into the output file. Addresses which appear before the first appearance of this word or phrase will be discarded. If a single word is typed, then it must be longer than a single character. All punctuation marks which appear between the words of a phrase must be included. The cases of the alphabetic letters A through Z are ignored. If the input address file specifies the components of the addresses, then the word or phrase, in order to be matched, must appear on one of the lines of the address, but not in the salutation nor in an extra line after the salutation which is to be merged into the body of the letter. Only the RETURN key should be pressed to start with the first address. 6. The name of the file into which the addresses are to be copied. A .LITERAL command will be inserted before each address which is copied into this file, and the pair of commands .END LITERAL.END SPLICE will be inserted after each address. Instructions for Using the MRGADR Program 29 INSTRUCTIONS FOR USING THE MRGADR PRORAM ------------ --- ----- --- ------ ------ The MRGADR program can merge up to 5 files each of which specify the components of a group of addresses and each of which are already sorted in increasing zip code order. The zip codes can consist either of 5 digits or of the 5 most significant digits followed by a minus sign and then by 4 less significant digits. The MRGADR program cannot process files which contain the previously formatted addresses rather than the components of the addresses. The program reads the first address contained in each of the input files, determines the address having the lowest zip code among these several addresses, writes out the address having the lowest zip code, and reads in the next address from the file from which the address having the lowest zip code code was originally read. The address having the lowest zip code among the new group of addresses is then determined, and so on until the ends of all of the input files have been reached. Addresses which were read from a particular file will be copied in their original order relative to the other addresses from the same file, but these addresses may be interspersed with addresses which were read from the other input files. If some of the addresses do not include zip codes, then these addresses should appear at the start of the input files. If more than one input file starts with addresses which do not include zip codes, or, for that matter, if more than one input file contains addresses which include a particular zip code, then these addresses are copied into the output file in any order which is convenient for the program. If the order of addresses which do not include zip codes must be maintained, then these addresses must appear in only one of the input files. A typical dialog between the user and the MRGADR program is shown below. The program only asks for file names, and nothing else. The phrases which end in question marks are the requests displayed by the program. The characters to the right of the question marks are the file names which were typed by the user in response to these requests. The MRGADR program does not have any built in help messages. 30 Mailing Address System MRGADR (05/83) Merges up to 5 address files previously sorted by zip code New composite file? MERGED Original file (press RETURN again if no more)? FIRST Original file (press RETURN again if no more)? SECOND Original file (press RETURN again if no more)? THIRD Original file (press RETURN again if no more)? FOURTH Original file (press RETURN again if no more)? Total number of addresses copied: 113 EXIT If the user wants to merge less than 5 address files, then only the RETURN key should be pressed in response to the request for the name of the next file. Arrays and Variables Used by These Programs 31 ARRAYS AND VARIABLES USED BY THESE PROGRAMS ------ --- --------- ---- -- ----- -------- The programs in this package use the same names for the arrays and variables which perform identical functions. The arrays which are used to store the components of the address and the dimensions of these arrays are described below. These arrays are used only if the components of the addresses are read from a file in which each line starts with an at sign. The arrays are not used if the addresses are read from a file in which the previously formatted addresses are separated by lines starting with periods. LTRKND = Array containing the characters which identify the various types of components of the address. Both LTRKND and ISTART are dimensioned at LMTKND. Currently, LTRKND contains the letters of the alphabet, and LMTKND is 26, so there can be 26 different types of components, each identified by a different letter of the alphabet. The number sign (the # character) and the at sign itself as a second character on the line are tested for explicitly and are not specified within the LTRKND array. If one or more lines in the input array start with an @C character pair, then ISTART(3) contains the subscript of the location within the LOCATN array which in turn contains the subscript of the location in the LTRSTR array which contains the first character of the first component specified by these lines. ISTART = Array containing the subscripts of the locations in the LOCATN array which in turn contain the subscripts of the locations in the LTRSTR which contain the first characters of the first components of each type. LMTKND = Dimension of the LTRKND and ISTART arrays. This is the number of different kinds of components of the address. LMTKND does not place a limit on the number of components of a single type however. LOCATN = Array containing the subscripts of the locations within the LTRSTR array which contain the first characters of each component of the address. The ICHAIN, LOCATN and LENGTH arrays are dimensioned at LMTSEC. If there is only 1 component of a particular type, then the parallel location in the ICHAIN array is zero. If there are several components of a particular type, then the parallel locations in the ICHAIN array contain the subscripts of the ICHAIN, LOCATN and LENGTH array locations which describe the next component of the same type. The ICHAIN entry for the final 32 Mailing Address System component of a particular type is always zero. ICHAIN = Array containing the subscripts of the locations within the ICHAIN, LOCATN and LENGTH arrays which describe the next component of a particular type. The ICHAIN entry for the final component of a particular type is always zero. LENGTH = Array containing the number of characters in each component. LMTSEC = Dimension of the ICHAIN, LOCATN and LENGTH arrays. LMTSEC is the maximum number of components of all types in a single address, counting separately every appearance of components of the same type. LTRSTR = Array which stores the letters of the components of the address in the order in which these are defined in the input file. LTRSTR is dimensioned at LMTSTR. LMTSTR = Dimension of the LTRSTR array. LMTSTR is the maximum number of characters which can appear in a single address. LTRBFR = Array into which each line in the input file is read. LTRBFR is dimensioned to LMTBFR which is therefore 2 more than the maximum number of characters in a single component of the address since the first 2 letters in each line in the input file identify the type of component being defined. LMTONE is the maximum length of a single component in the output file. LMTTWO is the maximum length of a line in the reconstructed address if this line is constructed of more than just a single component. If the next component which is to be appended to the line would cause the line to be longer than LMTTWO characters, then the line is split before this next component. Either the component already in the line or the component about to be added could be of length LMTONE. LMTONE is therefore an absolute upper limit, but LMTTWO is merely a suggested length. LMTTWO must be less than or equal to LMTONE. LMTONE would probably equal LMTBFR-2. Neither LMTONE nor LMTTWO are used as dimensions of any array. LMTBFR = Dimension of the LTRBFR array. This is the maximum number of characters including the initial at sign and the following character in a single line in the file which defines the components of the address. Arrays and Variables Used by These Programs 33 For example, if the input file contained the following specifications of the components of an address, @CFIRST @ASECOND @BTHIRD @BFOURTH @CFIFTH @BSIXTH then this information would be stored as is shown below. Subscript 1 is at the bottom in the diagram, subscript 2 immediately above, and so on. ISTART ICHAIN LENGTH LOCATN array array array array +-> 0 5 28 >------------------------+ ! ! ! 0 <---+ 5 23 >-------------------+ ! ! ! ! ! +-< 6 <-+ ! 6 17 >-------------+ ! ! ! ! ! ! ! +-< 1 /-> 4 >-+ ! 5 12 >--------+ ! ! ! ! / ! ! ! ! ! ! 3 >-/ /-> 0 ! 6 6 >--+ ! ! ! ! ! / ! ! ! ! ! ! ! 2 >-/ /-> 5 >---+ 5 1 ! ! ! ! ! ! / ! ! ! ! ! ! +-------/ FIRSTSECONDTHIRDFOURTHFIFTHSIXTH LTRSTR array The arrays which are needed for the assembly process and their dimensions are described below. The components stored in the LTRSTR array are copied into the LTRADR array and the lengths of the resulting lines are stored in the LNGLIN array. The KONTNT and ITRAIL arrays specify which types of components go into which lines and with what separating characters. If the input file specifies the components of the address, then neither the salutation nor the blank line before the salutation are stored in the LTRSTR AND LNGLIN arrays. The salutation and the blank line before the salutation must however be stored in these arrays if the input file contains the previously formatted addresses separated by lines which start with periods. LTRADR = The array which contains the characters of the formatted address. This is dimensioned at LMTCHR. LMTCHR = The maximum number of characters which can be in a formatted address. 34 Mailing Address System LNGLIN = The array which contains the lengths of each of the lines in the formatted address. This is dimensioned at LMTLIN. LMTLIN = The maximum number of lines in the formatted address. This does not include the salutation or the blank line before the salutation if the address is reassembled from its components. LMTONE = The maximum allowable length of a line consisting of a single component in the reassembled address. Any characters in excess of this are discarded. LMTTWO = The desired maximum width of a line in the reassembled address. The next component of the current line of the address is reserved for the next output line if addition of the next component to the line would cause the line to contain more than LMTTWO characters. LMTTWO must be less than or equal to LMTONE. KONTNT = The array which defines which components of the address are to appear on each line in the reassembled address. The values in the KONTNT array are the locations in the alphabet of the letters which identified the components in the original file which was read as data. The final component on each line is indicated by an extra zero value. The values in the ITRAIL array are parallel. ITRAIL = Indicates what characters are to be inserted before the item indicated by the parallel entry in the KONTNT array if this item is not the first on the current line of the address. No character is inserted before the component if the component is the first on the line either because it is the first component specified for the line by the KONTNT array or because it would have caused the line of which it would normally have been a part to have been too long. The value in this array is ignored if the parallel value in the KONTNT array is zero. = 0, Insert a single space between adjacent items on the same line. = 1, Insert a comma and a space between adjacent items on the same line. = 2, Insert 2 spaces between adjacent items on the same line. List of Files Forming This Package 35 LIST OF FILES FORMING THIS PACKAGE ---- -- ----- ------- ---- ------- The routines which manipulate file names and which open and close files are dependent upon the particular computer system being used. These routines have been collected together in a single file. A version of these routines is supplied for use with the TOPS10 emulator on the DECsystem20 computer. The argument lists and functions of these routines are described within the routines themselves. These routines should be relatively easy to modify for use on other computer systems. ENVELO.CMD Command file used to load the ENVELO program on the DECsystem10 or DECsystem20 computers. ENVELO.FOR The source of the ENVELO program. This file must be loaded with the LBLLIB, LBLD10 and MACRO (or MACD20) packages. ENVHLP.RNO Rough text used to construct the help messages for the ENVELO program. This file must be processed by the FORMAT program to produce the FORTRAN source of the ENVHLP routine. FORMAT is a FORTRAN program which was written by the same author as the programs in this package and which is available from the DECUS DECsystem10 program library. If this file is modified so as to change the number of lines in any message which is issued after the addresses start to be typed on the terminal, then the amount by which the KNTOUT variable is incremented after the message must be changed accordingly in the ENVELO main program. LABELS.CMD Command file used to load the LABELS program on the DECsystem10 or DECsystem20 computers. LABELS.FOR The source of the LABELS program. This file must be loaded with the LBLLIB, LBLD10 and MACRO (or MACD20) packages. LBLD10.FOR The computer dependent subroutines which are needed by the ENVELO, LABELS, MRGADR and SPLICE programs. The routines in this package evaluate file names typed by the user, open and close files, and convert contiguous spaces to tab characters. These routines are dependent upon the hardware, operating system and run-time library of the computer being used. This version is for the DECsystem10 computer or for use with the TOPS10 emulator on the DECsystem20 computer. These routines should be easily modified for use on other computers. 36 Mailing Address System LBLHLP.RNO Rough text used to construct the help messages for the LABELS program. This file must be processed by the FORMAT program to produce the FORTRAN source of the LBLHLP routine. If this file is modified so as to change the number of lines in any message which is issued after the addresses start to be typed on the terminal, then the amount by which the KNTOUT variable is incremented after the message must be changed accordingly in the LABELS main program. LBLLIB.FOR The computer independent subroutines which are needed by the ENVELO, LABELS and SPLICE programs. The routines in this package evaluate the commands typed by the user, read the file specifying the components of the addresses and construct the addresses from their components. MACRO.FOR A non-functional FORTRAN version of some useful but non-essential routines. If functional, these routines would set terminal output characteristics and turn off the exit messages from FORTRAN programs. MACD20.MAC An assembly language version of the routines which set terminal output characteristics and turn off the exit messages from FORTRAN programs. This version is for the DECsystem20. The file named MACRO.FOR contains a non-functional FORTRAN version of these routines. MAIL.DOC The instruction manual for the programs in this package. This was produced by processing the rough text in the MAIL.RNO file using the FROFF word processing program. FROFF is a FORTRAN program which was written by the same author as the programs in this package. MAIL.RNO Rough text which produces the instruction manual for the programs in this package when processed by the FROFF word processing program. Minor changes would be necessary if this file is to be processed by RUNOFF. MRGADR.CMD Command file used to load the MRGADR program on the DECsystem10 or DECsystem20 computers. MRGADR.FOR The source of the MRGADR program. This file must be loaded with the LBLD10 package. SPLICE.CMD Command file used to load the SPLICE program on the DECsystem10 or DECsystem20 computers. List of Files Forming This Package 37 SPLICE.FOR The source of the SPLICE program. This file must be loaded with the LBLLIB, LBLD10 and MACRO (or MACD20) packages. SPLHLP.RNO Rough text used to construct the help messages for the SPLICE program. This file must be processed by the FORMAT program to produce the FORTRAN source of the SPLHLP routine. TEST01.ADR Short address file which contains previously formatted addresses separated by lines which start with periods. TEST02.ADR Short address file which specifies the components of the addresses on lines which start with at sign character pairs.