The basic aim of the blocked character font (see Graphics User Note 2) is to provide users with a bold character set. This character set does not suffer from the fault that when the characters are larger than a certain size the lines making up the characters separate out. The font attempts to retain a uniform intensity for the shading no matter what size of text is chosen (assuming the intensity is not altered and that the character size is not too small). The font can only be accessed by SMOG users and is intended for output to the FR80. It is available on both the 1906A and the 360/195 although there are some differences which will be explained later.
The routine for writing the text WRIGHT has not been altered to take account of the enhancements to the system, such as, adjustable spacing. It will continue to function as described in Graphics User Note 2. For the enhanced system two additional writing routines have been provided. These are the routine WRITTE, which is biased towards the 1906A although it is available on the 360/195, and the routine WRITHE which is only available on the 360/195.
The two routines WRITTE and WRITHE have access to a larger character set than WRIGHT, including an upper case and a lower case alphabet. The other enhancements to the system are: adjustable spacing between characters, mono or proportional spacing and, sloping the text so that an italic effect can be produced.
The characters in the font are initially defined in a rectangle 40 units by 40 units including the spacing which is initially 10 units see Figure 1). The default spacing selected is mono and the units for the characters are set to 10 device rasters. Thus the string ABC will occupy a rectangular area 3*40-1*10 (no space after C) units wide by 1*40 units high which equals 110 units by 40 units, this being a rectangle 1100 rasters wide by 400 rasters high.
The font may be used from either region zero (device coordinates) or region one (user coordinates) of SMOG. Some of the user routines reflect this in that the arguments have different meanings dependent upon which region is currently selected. These differences are explained in more detail (where appropriate) below.
The transformations, such as rotation, are performed on the characters in the following order: firstly the coordinates for each individual block making up a character are calculated using the current expansion factors and the number of rasters per unit; then, if the text is to be slanted (for an italic effect, say) the coordinates are adjusted; and finally, if the text is to be rotated then the coordinates are again altered. The blocks are then output with the appropriate number of lines to shade them in. Thus the order for the transformations is expand, slant and rotate.
There is one other transformation that a potential user may wish to use and that is reflection. To achieve this effect use region one with either the X or Y coordinates reflected. For example, setting maximum X less than minimum X will cause a reflection of the text about the vertical, the text would in fact be drawn backwards from the specified point.
Most of the confusion when using the font is caused by the expansion routines. If one remembers that the characters are specified in a defining rectangle 40 units by 40 units and that each unit is initially set to 10 rasters then the method of calculating the character size should not be too difficult to follow, see the routines WCHFAC, WTHICK and WCHGAP for more details. The character size is determined by three items, the width and height within the defining rectangle, the current expansion factors, and the number of rasters for each unit.
The arguments for the subroutines follow the usual FORTRAN naming convention with the exception of the TEXT argument for WRIGHT, WRITTE and WRITHE which is explained in more detail in Appendix 7.
This routine writes the first N characters from the character string TEXT starting at the point (X,Y). See Appendices 2 and 3 for the 64 characters output by WRIGHT. Appendix 2 shows the internal machine codes for these 64 characters on the 1906A and similarly Appendix 3 shows the 360/195 internal machine codes.
The number of characters N can be a maximum of 60. (X,Y) defines the position of the bottom left corner of the defining rectangle for the first character in the TEXT string. See Appendix 7 for a definition of the TEXT argument.
This routine uses the same 64 characters for input in the TEXT string as WRIGHT but uses the last four as shift characters. They are characters 60, 61, 62 and 63 (decimal) of the 1906A internal character code or characters 5B, BD, CB and CD (hexadecimal) of the 360/195 internal character code. They are usually printed as the following four characters $, ], + and ← and are used for alpha shift, beta shift, delta shift and undefined respectively.
The default shift is alpha and the shifts are selected in the following way: when $ is encountered in the TEXT string then alpha shift is selected or when ] is encountered beta shift is selected. If + is encountered then delta shift is selected for the next character only and then the shift reverts back to alpha or beta dependent upon which had last been selected. Five characters are currently defined for delta shift and they are T, U, V, W and ! producing $, ], ↑ ←, and \ respectively, see Table 3 0f Appendix 4. The alpha shift contains the upper case alphabet see Table 1 of Appendix 4 and beta shift contains the lower case alphabet and is shown in Table 2 of Appendix 4.
The number of characters N also includes the shift characters, for example:
CALL WRITTE (1.0,5.0,'A$B]C↑TUV$W',11)
would produce the following output string:
ABc$uvW
The number of characters N, has a maximum of 80.
This routine is only available on the 360/195 and writes the first N characters from the string TEXT starting at the point (X,Y). See Appendix 5 for those characters that are currently defined. The TEXT string may contain upper and lower case characters which can be input directly, for example, entering a file to ELECTRIC with ENTTYP=BVLC on a Newbury Laboratories terminal supporting upper and lower case characters. N has a maximum of 80.
This routine is used to alter the expansion factors for the characters. If used whilst in region zero (device coordinates) XFAC and YFAC are the X and Y expansion factors for the defining rectangle. For example, setting XFAC=1.5 and YFAC=2.0 will give a defining rectangle for the characters of 60 units by 80 units. This will not alter the characters as originally defined it just specifies that they are to be output 1.5 times as wide and twice as high.
If called whilst in region one XFAC and YFAC are in the users coordinates and define the desired character size. WCHFAC takes account of the current setting for the units (initially 10 rasters) and then calculates the expansion factors necessary to produce a character size of XFAC in the X direction and YFAC in the Y direction.
If using region one, the routines WTHICK and WCHFAC are order dependent. If WTHICK is called first then the characters will be darker or lighter depending on the value of NRASTS and the character size will be XFAC by YFAC. Whereas if WCHFAC is called first the size of the characters is altered firstly by WCHFAC and then by WTHICK. When used from region zero both routines affect the character size. For example setting NRASTS to 5, XFAC to 2.0 and YFAC to 3.0 will give a character size of 40 × 5 × 2.0 rasters by 40 × 5 × 3.0 rasters, which is 400 rasters by 600 rasters.
It is advisable not to set the expansion factors to less than 1.0. For example, to produce a character size 80 rasters square when using region zero would require setting XFAC, YFAC to 1.0 and NRASTS to 2 (see routine WTHICK).
This routine is used to adjust the gap between the individual lines used to shade the characters. It has two effects, one is to alter the intensity of the character making it darker or lighter and the other is to alter the size (see the routine WCHFAC for more details). NRASTS is initially set to 10 as this is just about the line thickness on all of the FR80 cameras.
If called whilst in region one then the spacing will be set to WIDE units (in the current user limits). If in region zero then WIDE alters the spacing from a quarter of the defining rectangle (10.0 units) to the desired gap, that is WIDE units. This routine has no effect when using WRIGHT which has a gap of a quarter of the width set up by WCHFAC (XFAC,YFAC).
Note: The author calls the above three routines in the following order WTHICK, WCHFAC and WCHGAP.
ISPACE = 0 for mono spacing (the default)
ISPACE = 1 for proportional spacing
Mono spacing (see Section 5.3.4 of the SMOG manual) assumes each character is 30 units wide (WRIGHT only has mono spacing) whereas proportional spacing (see Section 5.3.5 of the SMOG manual) uses the character widths in Appendix 6.
This routine sets up a rotation for subsequent use by any of the three writing routines. The rotation is about the point (XROT,YROT) and is DEG degrees clockwise, where DEG= 0.0 (the default) produces horizontal text. The rotation is not incremental in nature so that to return text to the horizontal call WANGLE with XROT, YROT and DEG = 0.0. Once a rotation has been set up it affects all subsequent text output until WANGLE is called again.
This routine is used to produce an italic effect. The characters are slanted so that the base remains in the same place but the top (of the standard defining rectangle) is moved by SLOPE units of the current character height. SLOPE may be negative or positive and is usually in the range -2.0 ≤ SLOPE ≤ 2.0 (assuming XFAC = YFAC). Outside this range the characters become very distorted.
To determine the angle of the slant from the vertical the following formula can be used:
angle of slant= tan-1 (SLOPE * XFAC/YFAC)
The system will print out up to ten non-fatal error messages before it stops. To increase the number of errors allowed set MERROR to the desired amount, where MERROR < 1000. The first ten errors will be printed out and then the system will stop once MERROR errors have been detected. This is mainly of use when the text is being considerably reduced in size and any individual block which is too small to shade in produces an error message and is not drawn.
(1) The routines can only be used by SMOG users, they cannot be accessed successfully with SPROGS.
(2) The font is available on the 1906A and the 360/195. On the 1906A the routines are part of the Graphics Algorithms Library and so the additional parameter LIB :GRAFLIB.GRAFLIB is needed to select the Library. On the 360/195 they can be accessed by use of the standard SMOG JCL.
(3) Problems may be experienced when inputting the character strings from different terminals. For example, a Data Dynamics 390 connected to the 1906A has SHIFT - 4 as a $ (dollar) whereas in fact the symbol input is £ (pound), similarly SHIFT - L shows as a \ (back slash) at the terminal but is input as a $ (dollar). Another terminal the author has had problems with is the Newbury Laboratories 2180 connected to the360/195 where the ↑ (up arrow) key appears on the screen as just the head of the arrow, in fact it is input as a circumflex so the screen was correct and the key was wrong. The best method the author has found for solving this problem is to write a small program to read in characters and output the character codes numerically.
The cine area of the hardcopy camera in many-up mode is selected. This area is 16K rasters wide and the characters (with default spacing) occupy 400 rasters by default. The user limits for the cine area are set to 40 units by 30 units because of the cine ratio of 4 to 3 and the fact that about 40 characters can be plotted across the frame. To show the boundary of the cine area a box is drawn around it as follows:
C SELECT THE CINE AREA AND PUT A BOX AROUND IT CALL FRHCM CALL CINE CALL JLIMV (0,0,40,30) CALL BOXA (0.0,0.0,40.0,30.0)
The first row of text output is "Mono Spacing" to show the text that is output by default. Note the shift characters are included in the string and in the count of the number of characters:
C USE THE FONT WITH ALL THE DEFAULTS SET. CALL WRITTE (2.0,27.0,'M]ONO $S]PACING',15)
For the next row of text (and all subsequent rows) proportional spacing is selected because of the different widths of the lower case (beta shift) alphabet.
C SELECT PROPORTIONAL SPACING CALL WCHMOP (1) CALL WRITTE (2.0,24.5, 'P]ROPORTIONAL $S]PACING',23)
The next two rows of text are slanted, the first forward by 0.5 and the second backwards by -1.0. The slanting is switched off by setting SLOPE to 0.0:
C SLOPE THE TEXT FORWARDS AND BACKWARDS CALL WSLANT (0.5) CALL WRITTE (2.0,22.0,'S]LOPING $F]ORWARDS',19) CALL WSLANT (-1.0) CALL WRITTE (2.0,19.5,'$S]LOPING $ B]ACKWARDS',21) CALL WSLANT (0.0)
For the next two rows the spacing between the individual lines used for shading is altered, not only does the intensity of the output change but as the text gets lighter it gets larger and as it gets darker it gets smaller. The change in intensity does not show up too well because the FR80 output is on many up hardcopy. If it were on hardcopy single (or any of the other cameras) then the first row of text would have a gap between each line and the second row would be noticeably darker than the default shading:
C SEPERATE LINES CALL WTHICK (20) CALL WRITTE (2.0,16.0,'LIGHTER',8) C C CLOSE GAPS UP CALL WTHICK (5) CALL WRITTE (2.0,14.0, 'D]ARKER',7)
The spacing between the individual lines is returned to normal, that is, 10 rasters. Two rows of text are then written vertically at the right side of the frame. One is written down and the other is written up the frame:
CALL WTHICK (10) C C ROTATE A FEW LINES CALL WANGLE (36.0,27.0,90.0) CALL WRITTE (36.0,27.0,'+90 D]EGREES',12) CALL WANGLE (37.0,3.0,-90.0) CALL WRITTE (37.0,3.0,'-90 D]EGREES',12)
The example in the bottom left of the frame shows how to combine rotation and slanting. The slant of -1.0 returns the vertical lines making up the characters to the vertical because the text expansion factors in the X and Y directions are equal and the rotation is 45 degrees, This can be checked using the formula for calculating the angle of slant (8.2(9)). With SLOPE=-1.0 and XFAC=YFAC=1.0=default the angle of slant is tan -1 (-1.0) which is -45 degrees. If this is then rotated by 45 degrees the resulting angle is zero degrees giving vertical lines for the sloped text. The slant is then returned to the default but there is no need to adjust the angle of rotation as this is altered in the next example:
C ROTATE AND SLANT TEXT CALL WSLANT (-1.0) CALL WANGLE (2.0,11.5,45.0) CALL WRITTE (2.0,11.5,'S]LIDING $D]OWN',15) CALL WSLANT (0.0)
The last two sections of the example program show three things. Firstly how to increase the size of the text without altering the apparent intensity of the shading. Secondly, how the shape of the characters is altered by setting the expansion factors unequal, in the example XFAC > YFAC therefore the characters are widened. Thirdly, how to alter the spacing between the characters independently of the character size. Both rows of text are rotated about the same point by 90 degrees showing how a set of text with a left margin when rotated produces a set with the margin at the top. The expansion factors are set to 4.0 user units in the X direction and 3.0 user units in the Y direction and for the second row of the output the gap is set to 2.5 user units:
C CHANGE SIZE AND SHAPE AND ROTATE CALL WCHFAC (4.0,3.0) CALL WANGLE (28.0,28.0,90.0) CALL WRITTE (28.0,28.0,'B]IGGER',7) C C INCREASE SPACING CALL WCHGAP (2.5) CALL WRITTE (28.0,22.0,'B]IGGER',7)
Finally the call to ENDSPR terminates the graphics part of the example program.
C SELECT THE CINE AREA AND PUT A BOX AROUND IT CALL FRHCM CALL CINE CALL JLIMV (0,0,40,30) CALL BOXA (0.0,0.0,40.0,30.0) C USE THE FONT WITH ALL THE DEFAULTS SET. CALL WRITTE (2.0,27.0,'M]ONO $S]PACING',15) C SELECT PROPORTIONAL SPACING CALL WCHMOP (1) CALL WRITTE (2.0,24.5, 'P]ROPORTIONAL $S]PACING',23) C SLOPE THE TEXT FORWARDS AND BACKWARDS CALL WSLANT (0.5) CALL WRITTE (2.0,22.0,'S]LOPING $F]ORWARDS',19) CALL WSLANT (-1.0) CALL WRITTE (2.0,19.5,'$S]LOPING $ B]ACKWARDS',21) CALL WSLANT (0.0) C SEPERATE LINES CALL WTHICK (20) CALL WRITTE (2.0,16.0,'LIGHTER',8) C C CLOSE GAPS UP CALL WTHICK (5) CALL WRITTE (2.0,14.0, 'D]ARKER',7) CALL WTHICK (10) C C ROTATE A FEW LINES CALL WANGLE (36.0,27.0,90.0) CALL WRITTE (36.0,27.0,'+90 D]EGREES',12) CALL WANGLE (37.0,3.0,-90.0) CALL WRITTE (37.0,3.0,'-90 D]EGREES',12) C ROTATE AND SLANT TEXT CALL WSLANT (-1.0) CALL WANGLE (2.0,11.5,45.0) CALL WRITTE (2.0,11.5,'S]LIDING $D]OWN',15) CALL WSLANT (0.0) C CHANGE SIZE AND SHAPE AND ROTATE CALL WCHFAC (4.0,3.0) CALL WANGLE (28.0,28.0,90.0) CALL WRITTE (28.0,28.0,'B]IGGER',7) C C INCREASE SPACING CALL WCHGAP (2.5) CALL WRITTE (28.0,22.0,'B]IGGER',7) CALL ENDSPR STOP END ****
The command issued (whilst logged in at MOP) to run the program is:
TASK F,SM,*CR :GRAFEX.BLOCKEX,LIB :GRAFLIB.GRAFLIB,*LP,#LP6,JT35 The LIB Parameter is needed because the blocked font routines are part of the Graphics Algorithms Library.
Notes:
The routine WRITTE has been used throughout for writing the text. Only alpha shift($) or beta shift(]) have been used.
The default shift is alpha although in one of the examples this is selected anyway just to show that it does no harm.
A vertical gap of 1.5 units is left between each row of text written at the left of the frame.
Positive rotation is clockwise and negative rotation is anti-clockwise.
The point of rotation is usually the same as the starting point for a string of text to save any calculations as to what the mapping for the start point really is.
The output produced is the same as for section 8.4 although there are several differences in the program. The major difference is the use of the routine WRITHE instead of WRITTE, for example:
C C USE THE FONT WITH ALL THE DEFAULTS SET CALL WRITHE (2.0,17.0,'Mono Spacing',12)
The upper and lower case text was entered into a file with ENTTYP=BVLC on a Newbury Laboratories terminal. Note how the text string is 12 characters long not 15.
The other changes are: the use of FRSPEC in place of FRHCM and the removal of the LIST and MASTER statements. FRSPEC selects the FR80 camera as specified in the //G.GRAPHICS card in the JCL, it is the preferred method for 360/195 SMOG users. See section 8.5.3 for the program.
The JCL is as for normal use of SMOG, the example can be run EXECing the file 3RMAINDR.EX85(EX). Three optional parameters may be planted:
PH First 2 chars of jobname default XA JBNM Up to 6 chars for rest of jobname default MPLE NAME Programmer name default EXAMPLE
C CHANGE SIZE AND SHAPE AND ROTATE CALL WCHFAC (4.0,3.0) CALL WANGLE (28.0,28.0,90.0) CALL WRITTE (28.0,28.0,'B]IGGER',7) C C INCREASE SPACING CALL WCHGAP (2.5) CALL WRITTE (28.0,22.0,'B]IGGER',7)
Finally the call to ENDSPR terminates the graphics part of the example program.
//XAMPESC FORTH,CPRINT=YES,SYSLIF='SYS1.SMOG',REGION.G=210K //C.SYSIN DD * C SELECT THE CINE AREA AND PUT A BOX AROUND IT CALL FRHCM CALL CINE CALL JLIMITV (0.0,0.0,40.0,30.0) CALL BOXA (0.0,0.0,40.0,30.0) C USE THE FONT WITH ALL THE DEFAULTS SET. CALL WRITHE (2.0,27.0,'Mono Spacing',12) C SELECT PROPORTIONAL SPACING CALL WCHMOP (1) CALL WRITHE (2.0,24.5, 'Proportional Spacing',20) C SLOPE THE TEXT FORWARDS AND BACKWARDS CALL WSLANT (0.5) CALL WRITHE (2.0,22.0,'Sloping Forwards',16) CALL WSLANT (-1.0) CALL WRITHE (2.0,19.5,'Sloping Backwards',17) CALL WSLANT (0.0) C SEPERATE LINES CALL WTHICK (20) CALL WRITHE (2.0,16.0,'Lighter',7) C C CLOSE GAPS UP CALL WTHICK (5) CALL WRITHE (2.0,14.0, 'Darker',6) CALL WTHICK (10) C C ROTATE A FEW LINES CALL WANGLE (36.0,27.0,90.0) CALL WRITHE (36.0,27.0,'+90 Degrees',11) CALL WANGLE (37.0,3.0,-90.0) CALL WRITTE (37.0,3.0,'-90 Degrees',11) C ROTATE AND SLANT TEXT CALL WSLANT (-1.0) CALL WANGLE (2.0,11.5,45.0) CALL WRITHE (2.0,11.5,'Sliding Down',12) CALL WSLANT (0.0) C CHANGE SIZE AND SHAPE AND ROTATE CALL WCHFAC (4.0,3.0) CALL WANGLE (28.0,28.0,90.0) CALL WRITTE (28.0,28.0,'Bigger',6) C C INCREASE SPACING CALL WCHGAP (2.5) CALL WRITHE (28.0,22.0,'Bigger',6) CALL ENDSPR STOP END
The following names are used by the blocked font and should be avoided by the user:
WANGLD WANGLE WCHERR WCHFAC WCHGAP WCHMOP WDCODE WDCODF WFLERR WPLOTC WPLOTD WPLOTE WPLOTF WRIGHT WRITHE WRITTE WSEMI WSIZE WSLAND WSLANT WTHICK WVFXPL WVFXRC WVFYPL WVFYRC
Table A2-1 shows the internal machine codes (octal) for the 64 characters input to WRIGHT and WRITTE on the 1906A. The table also shows the output produced by WRIGHT. Most of these characters have a one-one correspondence with the keys at a terminal or card punch. For example, to input an A which is octal 4l (or decimal 33) type A which will be input as octal 41!
Table A3-1 shows the internal machine codes (hexadecimal) for the 64 characters input to WRIGHT and WRITTE on the 360/195. The Table shows the output produced by WRIGHT. For example, inputting 5 (F5 hexadecimal) to WRIGHT will output the character 5.
The character codes input to WRITTE are shown in Appendix 2 for the 1906A and Appendix 3 for the 360/195, Table A4-1I shows the characters output when alpha shift has been selected, Table A4-2 shows beta shift and Table A4-3 shows delta shift. The codes in all three tables are in decimal.
For example, to output \ (back slash) on the 1906A. Delta shift has to be selected by ↑ (up arrow) which is character 62 (octal). The \ is in position 17 (21 octal) which if checked in Table A2-1 is ! (exclamation mark). Thus the two characters needed for \ are ↑ ! (on most terminals).
To output # (number) on the 360/195, beta shift must have previously been selected by ] (right bracket), character BD (hexadecimal). The number is in position 19 (23 octal). Character 23 in Table A2-1 is #x2260; (not equals) which is character 7B (hexadecimal) in Table A3-1. On most terminals character 7B is input by typing # (SHIFT -3).
Table A5-1 shows the internal machine codes (hexadecimal) for those characters defined on the 360/195 and output by WRITHE. There is a one-one correspondence between the code of the character input and the character as defined in the table. As can be seen from the table undefined characters produce a space.
The codes in the table correspond to the codes as defined in the Rutherford Laboratory's EBCDIC Standard (see section 4 of RL-76-121/C "Standard Character Codes for the RL Central Computer System" by C D Osland).
6a Code a are decimal and 195 Code is hexadecimal.
^ is used to indicate that it occurs in WRIGHT and WRITTE.
Number Char Width 6A Code 195 Code WRIGHT WRITTE WRITHE 1 A 30 33 C1 ^ alpha ^ 2 B 30 34 C2 ^ alpha ^ 3 C 30 35 C3 ^ alpha ^ 4 D 30 36 C4 ^ alpha ^ 5 E 30 37 C5 ^ alpha ^ 6 F 30 38 C6 ^ alpha ^ 7 G 30 39 C7 ^ alpha ^ 8 H 30 40 C8 ^ alpha ^ 9 I 30 41 C9 ^ alpha ^ 10 J 30 42 D1 ^ alpha / 11 K 30 43 D2 ^ alpha ^ 12 L 30 44 D3 ^ alpha ^ 13 M 30 45 D4 ^ alpha ^ 14 N 30 46 D5 ^ alpha ^ 15 O 30 47 D6 ^ alpha ^ 16 P 30 48 D7 ^ alpha ^ 17 Q 30 49 D8 ^ alpha ^ 18 R 30 50 D9 ^ alpha ^ 19 S 30 51 E2 ^ alpha ^ 20 T 30 52 E3 ^ alpha ^ 21 U 30 53 E4 ^ alpha ^ 22 V 30 54 E5 ^ alpha ^ 23 W 30 55 E6 ^ alpha ^ 24 X 30 56 E7 ^ alpha ^ 25 Y 30 57 E8 ^ alpha ^ 26 Z 30 58 E9 ^ alpha ^ 27 space 30 16 40 ^ alpha 28 , 30 28 6B ^ alpha 29 . 30 30 4B ^ alpha 30 0 30 0 F0 ^ alpha 31 1 30 1 F1 ^ alpha 32 2 30 2 F2 ^ alpha 33 3 30 3 F3 ^ alpha 34 4 30 4 F4 ^ alpha 35 5 30 5 F5 ^ alpha 36 6 30 6 F6 ^ alpha 37 7 30 7 F7 ^ alpha 38 8 30 8 F8 ^ alpha 39 9 30 9 F9 ^ alpha 40 + 30 27 4E ^ alpha ^ 41 - 30 29 60 ^ alpha ^ 42 * 30 26 5C ^ alpha ^ 43 ÷ 30 31 EB ^ alpha ^ 44 = 30 13 7E ^ a1pha ^ 45 > 30 14 6E ^ alpha 46 < 30 12 4C ^ alpha 47 ) 30 25 5D ^ alpha 48 ( 30 24 4D ^ alpha 49 ≠ 30 19 BE ^ alpha ^ 50 : 30 10 7A ^ alpha 51 ; 30 11 5E ^ alpha 52 ? 30 15 6F ^ alpha ^ 53 ! 30 17 5A ^ alpha 54 " 30 18 7F ^ alpha 55 ' 30 23 7D ^ alpha 56 [ 30 59 AD ^ alpha 57 ] 30 61 BD ^ BETA 58 ↑ 30 62 CB ^ DELTA 59 ← 30 63 CD ^ UND ^ 60 £ 30 20 DB ^ alpha ^ 61 % 30 21 6C ^ alpha 62 & 30 22 50 ^ alpha 63 @ 30 32 7C ^ alpha ^ 64 $ 30 60 5B ^ ALPHA ^ 65 a 20 33 81 beta ^ 66 b 20 34 82 beta ^ 67 c 20 35 83 beta ^ 68 d 20 36 84 beta ^ 69 e 20 37 85 beta ^ 70 f 20 38 86 beta ^ 71 g 20 39 87 beta ^ 72 h 20 40 88 beta ^ 73 i 6 41 89 beta ^ 74 j 20 42 91 beta ^ 75 k 20 43 92 beta ^ 76 l 6 44 93 beta ^ 77 m 30 45 94 beta ^ 78 n 20 46 95 beta ^ 79 o 20 47 96 beta ^ 80 p 20 48 97 beta ^ 81 q 26 49 98 beta ^ 82 r 20 50 99 beta ^ 83 s 20 51 A2 beta ^ 84 t 20 52 A3 beta ^ 85 u 20 53 A4 beta ^ 86 V 20 54 A5 beta ^ 87 w 30 55 A6 beta ^ 88 x 20 56 A7 beta ^ 89 y 20 57 A8 beta ^ 90 z 20 58 A9 beta ^ 91 [ 20 59 AD beta ^ 92 ] 20 BD ^ 93 ↑ 20 CB ^ 94 20 62 DELTA 95 20 63 UND 96 20 32 beta 97 0 30 0 F0 beta ^ 98 1 12 1 F1 beta ^ 99 2 30 2 F2 beta ^ 100 3 30 3 F3 beta ^ 101 4 30 4 F4 beta ^ 102 5 30 5 F5 beta ^ 103 6 30 6 F6 beta ^ 104 7 30 7 F7 beta ^ 105 8 30 8 F8 beta ^ 106 9 30 9 F9 beta ^ 107 : 10 10 7A beta ^ 108 ; 10 11 5E beta ^ 109 < 20 12 4C beta ^ 110 = 30 13 7E beta ^ 111 > 20 14 6E beta ^ 112 ? 30 15 6F beta ^ 113 space 20 16 40 beta ^ 114 ! 6 17 5A beta ^ 115 " 18 18 7F beta ^ 116 # 30 19 7B beta ^ 117 £ 30 20 DB beta ^ 118 % 20 21 6C beta ^ 119 & 30 22 50 beta ^ 120 ' 6 23 7D beta ^ 121 ( 10 24 4D beta ^ 122 ) 10 25 5D beta ^ 123 * 30 26 5C beta ^ 124 + 30 27 4E beta ^ 125 , 10 28 6B beta ^ 126 - 30 29 60 beta ^ 127 . 10 30 4B beta ^ 128 / 30 31 61 beta ^ 129 - 30 BF ^ 130 | 30 FA ^ 131 + 30 8F ^ 132 r 30 AC ^ 133 . 30 AB ? 134 . 30 BB ^ 135 , 30 BC ^ 136 under 30 6D ^ 137 | 6 4F ^ 138 : 6 6A ^ 139 140 141 142 143 144 145 146 \ 30 17 EO delta ^ 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 $ 30 52 E3 delta 181 ] 30 53 E4 delta 182 ↑ 30 54 E5 delta 183 ← 30 55 E6 delta 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200
The TEXT argument passed to the WRIGHT, WRITHE and WRITTE routines can take either of two forms:
(a) a text constant, for example:
'A STRING IN QUOTES' 15HA TEXT CONSTANT
(b) a variable or an array element containing the string of text. The text can either be read in or assigned in a DATA statement for example:
DATA ITEXT,JCHARS/4HWORD,9HMORE TEXT/
where JCHARS is an array.
Care has to be taken when using the 1906A or the 360/195 because different data types are of different lengths and thus will hold a different number of characters. For example a LOGICAL*1 variable on the 360 will only hold one character whereas a REAL*8 variable will hold 8 characters.