📄 rfc138.txt
字号:
To insert a field, separate the input into the two terms to allow the inserted field between them. For example, to do line numbering for a 121 character/line printer with a leading carriage control character, use the following form. (NUMB.<=>.1); /*initialize line number counter to one*/ 1 CC(,E,,1:F(R(99))), /*pick up control character and save as CC*/ /*return a code of 99 upon exhaustion*/ LINE(,E,,121 : F(R(98))) /*save text as LINE*/ :CC, /*emit control character*/ (,E,NUMB,2), /*emit counter in first two columns*/ (,E,E".",1), /*emit period after line number*/ (,E,LINE,117), /*emit text, truncated in 117 byte field*/ (NUMB.<=.NUMB+1:U(1)); /*increment line counter and go to rule one*/;;DELETION Data to be deleted should be isolated as separate terms on the left, so they may be omitted (by not emitting them) on the right. (,B,,8), /*isolate 8 bits to ignore*/ SAVE(,A,,10) /*extract 10 ASCII characters from input stream*/ :(,E,SAVE,); /*emit the characters in SAVE as EBCDIC characters whose length defaults to the length of SAVE, i.e., 10, and advance to the next rule*/ In the above example, if either input stream term fails, the next sequential rule is applied.VARIABLE LENGTH RECORDS Some devices, terminals and programs generate variable length records. To following rule picks up variable length EBCDIC recordsAnderson, et al. [Page 18]RFC 138 Data Reconfiguration Service April 1971 and translates them to ASCII. CHAR(,E,,#), /*pick up all (an arbitrary number of) EBCDIC characters in the input stream*/ (,X,X"FF",2) /*followed by a hexadecimal literal, FF (terminal signal)*/ :(,A,CHAR,), /*emit them as ASCII*/ (,X,X"25",2); /*emit an ASCII carriage return*/STRING LENGTH COMPUTATION It is often necessary to prefix a length field to an arbitrarily long character string. The following rule prefixes an EBCDIC string with a one-byte length field. Q(,E,,#), /*pick up all EBCDIC characters*/ TS(,X,X"FF",2) /*followed by a hexadecimal literal, FF*/ :(,B,L(Q)+2,8), /*emit the length of the characters plus the length of the literal plus the length of the count field itself, in an 8-bit field*/ Q, */emit the characters*/ TS; */emit the terminal*/TRANSPOSITION It is often desirable to reorder fields, such as the following example. Q(,E,,20), R(,E,,10) , S(,E,,15), T(,E,,5) : R, T, S, Q ; The terms are emitted in a different order.CHARACTER PACKING AND UNPACKING In systems such as HASP, repeated sequences of characters are packed into a count followed by the character, for more efficient storage and transmission. The first form packs multiple characters and theAnderson, et al. [Page 19]RFC 138 Data Reconfiguration Service April 1971 second unpacks them. /*form to pack EBCDIC streams*/ /*returns 99 if OK, input exhausted*/ /*returns 98 if illegal EBCDIC*/ /*look for terminal signal FF which is not a legal EBCDIC*/ /*duplication count must be 0-254*/ 1 (,X,X"FF",2 : S(R(99))) ; /*pick up the EBCDIC and initialize count/* CHAR(,E,,1 : F(R(98))) , (CNT .<=. 1) ; /*count consecutive EBCDICs like CHAR*/ 2 (,E,CHAR,1 : F(3)) , (CNT .<=. CNT+1 : U(2)) ; /*emit count and current character*/ 3 : (,B,CNT,8), CHAR, (:U(1)); /*end of form*/;; /*form to unpack EBCDIC streams*/ /*look for terminal*/ 1 (,X,X"FF",2 : S(R(99))) ; /*emit character the number of times indicated*/ /*by the counter contents*/ CNT(,B,,8), CHAR(,E,,1) : (CNT,E,CHAR,CNT:U(1)); /*failure of form*/ (:U(R(98))) ;;V. PROPOSED USES OF DATA RECONFIGURATION SERVICE The following are some proposed uses of the DRS that were submitted by the sites indicated. UCLA 1. Pack/unpack text files. 2. Preprocessor to scan META compiler input. 3. Perhaps graphics. MIT 1. Reformatting within file transfer service. 2. Character conversions. 3. Possible graphics service (Evans and Sutherland output format). 4. Reformat arguments of subroutines remote to each other. U. OF ILLINOIS 1. Dependent upon remote use of DRS for many remote services. SDC 1. Would be essential to data transfer in general.Anderson, et al. [Page 20]RFC 138 Data Reconfiguration Service April 1971 2. Could be used in relation to data management language. UCSB 1. Checkout of I/O formats of file system. 2. Debugging Network services in general. 3. Mapping their services into future standards. RAND 1. To describe RJO/RJE message formats at UCSB. 2. To describe RJS message formats at UCLA. 3. To adapt Network to existing services, in general. MITRE 1. Character conversions. 2. Testing data formats going into data bases for correct field formatting. VI. IMPLEMENTATION PLANS Four sites currently plan to implement and offer the service on an experimental basis. 1. MIT Implementation of forms interpreter in MIDAS (assembly). Perhaps Tree Meta compiler of forms. Implementation on PDP-10. 2. UCLA Implementation on SIGMA-7 employing META-7 to compile forms. 3. UCSB Implementation on 360/75. 4. RAND Initial implementation on 360/65; compiler to be written in graphics CPS; compiled intermediate forms to be interpreted by assembler language subroutine. Later implemented on PDP-10. In addition to the above sites, the University of Illinois and Mitre plan to experiment with the service.Anderson, et al. [Page 21]RFC 138 Data Reconfiguration Service April 1971 APPENDIX ANote 1 to the DRS Working Group As you recall, we spent considerable time in discussing the use and meaning of the arbitrary symbol, #. To summarize, it was clear that inclusion of the # in both replication and length expressions led to ambiguities. We settled on its restricted use in the length expression of an input term, although no one was entirely satisfied with this definition. Recently, Jim White has again commented on the #. Jim feels that it is curious that one can pick up an arbitrary number of EBCDIC characters, for example, but can't pick up an arbitrary number of specific EBCDIC characters such as EBCDIC A's. Jim feels that a more natural way to interpret the length, value, and replication expressions would be as the IBM OS assembler interprets the attributes of the pseudo instruction, define constant (CD). The IBM OS assembler uses the following format. 1 2 3 4 duplication type modifiers nominal value factor The duplication factor, if specified, causes the constant to be generated the number of times indicated by the factor. The type defines the type of constant being specified. Modifiers describe the length, scaling, and exponent of the constant. Nominal value supplies the constant described by the subfields that precede it. Assume that we use the # only as a duplication factor (replication expression). Hence, in the example of the form to pack EBCDIC characters, the counter and looping can be eliminated. CHAR(,E,,1) ; LEN(#,#,CHAR,1) : (,B,L(LEN)+1,*) , CHAR ; The interpretation is that the data type, length expression, and value expression make up the unit value. This quantity can then be replicated. As our document now stands, only the data type and value expression make up the unit value. The application of a term according to Jim's suggestion is as follows. 1. The data type, value expression, and length expression together specify a unit value, call it x.Anderson, et al. [Page 22]RFC 138 Data Reconfiguration Service April 1971 2. The replication expression specifies the number of times x is to be repeated. The value of the concatenated xs becomes y of length L. 3. If the term is an input stream term then the value beginning at the current input pointer position. 4. If the input value satisfies the constraints of y over length L then the input value of length L becomes the value of the term.Note 2 to the DRS Working Group There has been recent debate of whether the input pointer should be advanced upon successful completion of a rule (as it now is defined) or upon successful completion of each term. See the example on page 22. If the input pointer is advanced upon successful completion of a term, then rules become equivalent to terms. I would like to for us to discuss at the SJCC both the term attributes and the input pointer advance issues. John [ This RFC was put into machine readable form for entry ] [ into the online RFC archives by Katsunori Tanaka 4/99 ]Anderson, et al. [Page 23]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -