TCVN7561:2005

Tiêu chuẩn quốc gia TCVN 7561:2005 (ISO 6093:1985) về Xử lý thông tin - Cách trình bày các giá trị số trong chuỗi ký tự cho trao đổi thông tin TCVN 7561:2005 ISO 6093:1985 XỬ LÝ THÔNG TIN - CÁCH TRÌNH BÀY CÁC GIÁ TRỊ SỐ TRONG CHUỖI KÝ TỰ CHO TRAO ĐỔI THÔNG TIN Information processing - Representation of numerical values in character strings for information interchange Lời nói đầu TCVN 7561:2005 hoàn toàn tương đương với ISO 6093:1985 . TCVN 7561:2005 do Ban kỹ thuật tiêu chuẩn TCVN/TC 154 “Quá trình, các yếu tố dữ liệu và tài liệu trong thương mại, công nghiệp và hành chính” biên soạn, Tổng cục Tiêu chuẩn Đo lường Chất lượng đề nghị, Bộ Khoa học và Công nghệ ban hành. Tiêu chuẩn này được chuyển đổi năm 2008 từ Tiêu chuẩn Việt Nam cùng số hiệu thành Tiêu chuẩn Quốc gia theo quy định tại khoản 1 Điều 69 của Luật Tiêu chuẩn và Quy chuẩn kỹ thuật và điểm a khoản 1 Điều 6 Nghị định số 127/2007/NĐ-CP ngày 1/8/2007 của Chính phủ quy định chi tiết thi hành một số điều của Luật Tiêu chuẩn và Quy chuẩn kỹ thuật. XỬ LÝ THÔNG TIN - CÁCH TRÌNH BÀY CÁC GIÁ TRỊ SỐ TRONG CHUỖI KÝ TỰ CHO TRAO ĐỔI THÔNG TIN Information processing - Representation of numerical values in character strings for information interchange 1. Phạm vi áp dụng Tiêu chuẩn này quy định ba cách biểu diễn các giá trị số, được trình bày dưới dạng các chuỗi ký tự theo một dạng thức mà máy có thể đọc được, để sử dụng trong trao đổi giữa các hệ thống xử lý dữ liệu. Tiêu chuẩn này cũng cung cấp hướng dẫn sử dụng cho người xây dựng tiêu chuẩn về ngôn ngữ lập trình và người sử dụng sản phẩm lập trình. Các cách trình bày này được thừa nhận bởi con người, vì vậy tiêu chuẩn này có thể hữu ích trong trao đổi thông tin giữa con người. Cách trình bày ở đây dựa trên cơ số 10. Tiêu chuẩn này chỉ áp dụng cho các giá trị số bao gồm một số giới hạn các chữ số gồm hoặc không gồm ký tự dấu thập phân. Tiêu chuẩn này không quy định cơ chế trao đổi thông tin về độ chính xác của số được trình bày hoặc phương pháp giới hạn các cách trình bày hoặc tổ chức các cách trình bày số đó vào các tập hợp lớn hơn. 2. Sự phù hợp Cách trình bày giá trị số phù hợp với tiêu chuẩn này nếu cách trình bày đó là một trong ba cách được quy định sau đây: Công bố về sự phù hợp phải xác định cách biểu diễn đó và khi có thể phải quy định hoặc DẤU PHẨY hoặc DẤU CHẤM CÂU được sử dụng như ký tự dấu thập phân. Trong trường hợp không có công bố thì DẤU CHẤM CÂU được xem là ký hiệu dấu thập phân. 3. Tài liệu viện dẫn ISO 646, Information processing - ISO 7-bit coded character set for information interchange (Xử lý thông tin - Bộ ký tự mã hóa 7-bít của ISO trong trao đổi thông tin). ISO 2022, Information processing - ISO 7-bit và 8-bit coded character sets - Code extension techniques (Xử lý thông tin - Các bộ ký tự mã hóa 7-bít và 8-bít của ISO - Các kỹ thuật mở rộng mã). ISO 4873, Information processing - 8-bit code for information interchange - Structure và rules for implementation (Xử lý thông tin - Mã 8-bít cho trao đổi thông tin - Cấu trúc và các quy tắc thực hiện). 4. Định nghĩa Tiêu chuẩn này sử dụng các định nghĩa sau đây: 4.1. Ký hiệu dấu thập phân (decimal mark) Ký tự để phân tách các chữ số tạo nên phần nguyên của một số với các chữ số tạo nên phần thập phân của số đó. 4.2. Trường (field) Một chuỗi liên tục các vị trí của ký tự trên mang dữ liệu. 4.3. Mô tả trường (field decription) Tập các đặc điểm mà trường đó xử lý phải đảm bảo rằng nội dung của nó có cách thể hiện số học duy nhất đối với các bên tham gia trao đổi. Đối với mỗi trường trong một tập dữ liệu trao đổi thì mô tả trường được quy định trong tài liệu kết hợp với thỏa thuận trao đổi giữa các bên tham gia. Mô tả trường bao gồm đặc tả về độ dài của trường. 4.4. Độ dài trường (length of a field) Số vị trí của ký tự của một trường. 4.5. Quy ước vị trí (positional notation) Một hệ thống có đánh số trong đó một số thực được biểu diễn bởi một chuỗi các ký tự trong đó giá trị đó được thêm vào bởi một ký tự phụ thuộc vào vị trí cũng như giá trị của nó. 5. Bộ ký tự 5.1. Mô tả Bộ ký tự để biểu diễn các giá trị số phải là tập con của bộ ký tự mã hóa trong ISO 646. 5.2. Cú pháp Các đối tượng về cú pháp sau đây được xác định có sử dụng phương pháp đặc tả cú pháp được mô tả trong phụ lục A. a) Chữ số = 0/1/2/3/4/5/6/7/8/9 b) Dấu = +/- c) Ký hiệu Dấu thập phân = d) Khoảng trống = KHOẢNG TRỐNG e) Dấu hàm mũ = E/e 5.3. Ngữ nghĩa Các chữ số phải là các ký tự được mã hóa trong các vị trí 3/0 đến 3/9 của ISO 646. Các ký tự còn lại phải tương ứng với các vị trí 2/0 (KHOẢNG TRỐNG), 2/11 (DẤU CỘNG), 2/12 (DẤU PHẨY), 2/13 (DẤU TRỪ), 2/14 (DẤU CHẤM), 4/5 (CHỮ E HOA) và 6/5 (CHỮ e THƯỜNG): 5.4. Mã hóa Việc mã hóa các ký tự được quy định trong ISO 646. Bảng 4 được xây dựng lại từ bảng mã cho IRV của bộ ký tự mã hóa 7-bít trong ISO 646. Các dấu bổ sung trong bảng 4 xác định tập con của các ký tự đã được quy định ở trên. 6. Cách thứ nhất để biểu diễn số (NR1) Cách thứ nhất để biểu diễn theo số là một quy ước vị trí trong đó số phải được biểu diễn bởi một chuỗi các chữ số, ký hiệu dấu thập phân là ngầm hiểu và vị trí của nó là cố định. CHÚ THÍCH: Cách biểu diễn này cũng được gọi là: Biểu diễn ký hiệu dấu thập phân-ngầm hiểu. 6.1. Mô tả Mỗi trường hợp của NR1 phải bao gồm các khoảng trống tùy ý đứng đầu, theo sau là một dấu (trong biểu diễn có dấu) và một chuỗi các chữ số. Phải có ít nhất một chữ số. Không KHOẢNG TRỐNG nào được phép chèn vào giữa hoặc cuối của trường này. 6.2. Cú pháp NR1 = NR1 không dấu/NR1 có dấu NR1 không dấu = khoảng trống * chữ số/chữ số * NR1 có dấu = khoảng trống * (dấu/khoảng trống) chữ số/chữ số * 6.3. Ngữ nghĩa Mỗi một biểu diễn sẽ được chứa trong một trường mà độ dài của nó bằng tổng số KHOẢNG TRỐNG và số các chữ số cộng với 1 nếu có dấu. Phải có ít nhất một chữ số. Trong một NR1 không dấu giá trị được biểu diễn phải lớn hơn hoặc bằng 0. Trong một NR1 có dấu, DẤU CỘNG có thể được thay thế bởi KHOẢNG TRỐNG. Ký hiệu dấu thập phân ngầm hiểu phải theo sau chữ số cuối cùng bên phải trong NR1 đó, trừ khi một hệ số xác định tỷ lệ được áp dụng cho trường hợp này được quy định trong tài liệu kèm theo. Cách biểu diễn có dấu của giá trị 0 phải gồm một DẤU CỘNG hoặc KHOẢNG TRỐNG, nhưng không phải là DẤU TRỪ. 6.4. Ví dụ Trong các ví dụ sau độ dài trường được giả định là 7. Ký tự KHOẢNG TRỐNG được biểu diễn là Δ. Bảng 1 - Các ví dụ về NR1 Ký hiệu chung NR1 không dấu NR1 có dấu 4902 0004902 ΔΔ4902 ΔΔΔ4902 + 004902 Δ+04902 ΔΔ+4902 ΔΔΔ4902 +1234 0001234 ΔΔΔ1234 +001234 ΔΔ+1234 ΔΔΔ1234 -56780 Không trình bày -56780 Δ-56780 0 0000000 ΔΔΔΔΔΔ0 + 000000 ΔΔΔΔΔ+0 ΔΔΔΔΔΔ0 1234567 1234567 Không trình bày 7. Cách thứ hai để biểu diễn số (NR2) Cách thứ hai phải là một quy ước vị trí mà mỗi số hiệu phải được biểu diễn bởi một chuỗi các ký tự, ký hiệu dấu thập phân được biểu diễn bằng một ký tự đặc biệt. CHÚ THÍCH: Cách biểu diễn này cũng được gọi là: Cách biểu diễn ký hiệu dấu thập phân. 7.1. Mô tả Mỗi trường hợp của NR2 phải gồm có các KHOẢNG TRỐNG tùy ý đứng đầu, theo sau bởi một dấu (trong biểu diễn có dấu) và một chuỗi các chữ số. Phải có ít nhất một chữ số và không KHOẢNG TRỐNG nào được phép chèn vào giữa hoặc cuối của trường này. Khuyến cáo là có ít nhất một chữ số bên trái của ký hiệu dấu thập phân thậm chí khi chỉ có ít nhất một chữ số bên phải. 7.2. Cú pháp NR2 = NR2-không dấu/NR2-có dấu NR2-không dấu = (khoảng trống * chữ số/chữ số* ký hiệu dấu thập phân chữ số *)/(khoảng trống * chữ số * ký hiệu dấu thập phân/chữ số/chữ số *) NR2-có dấu = (khoảng trống * (dấu/khoảng trống) chữ số/chữ số * ký hiệu dấu thập phân số *)/(khoảng trống * (dấu/khoảng trống) số * ký hiệu dấu thập phân/chữ số/chữ số *) 7.3. Ngữ nghĩa Mỗi biểu diễn phải được chứa trong một trường mà độ dài của nó phải bằng tổng các khoảng trống và các chữ số cộng với 1; hoặc cộng với 2 trong NR2 có dấu biểu diễn. Phải có ít nhất một chữ số và ký hiệu dấu thập phân. Trong một NR2 không dấu, giá trị được biểu diễn phải lớn hơn hoặc bằng 0. Trong một biểu diễn có dấu, DẤU CỘNG có thể được thay thế bởi KHOẢNG TRỐNG. Vị trí của ký hiệu dấu thập phân phải biểu diễn vị trí của ký hiệu dấu thập phân thực theo giá trị, trừ khi một hệ số phân tỷ lệ được áp dụng cho trường được quy định trong tài liệu tính kèm. Biểu diễn có dấu của giá trị số 0 phải chứa một DẤU CỘNG hoặc một KHOẢNG TRỐNG, không gồm DẤU TRỪ. 7.4. Ví dụ Các ví dụ sau có độ dài trường được giả định là 8. Bảng 2 - Các ví dụ NR2 Ký hiệu chung NR2-không dấu NR2-có dấu 1327. 1327.000 0001327. ΔΔΔ1327. +1327.00 ΔΔ+1327. ΔΔΔ1327. 123,45 00123,45 ΔΔ123,45 Δ+123,45 ΔΔ123,45 1237,0 ΔΔ1237,0 Δ+1237,0 ΔΔ1237,0 .00001 00.00001 +0.00001 -5,678 Không biểu diễn -5,67800 -05,6780 1234,567 1234,567 Không biểu diễn 0 000,0000 ΔΔΔΔΔ0,0 +0,00000 ΔΔΔΔ+0,0 ΔΔΔΔΔ0,0 ΔΔΔΔΔΔ,0 8. Cách thứ ba để biểu diễn số (NR3) Cách biểu diễn số thứ ba phải là một quy ước mà một số được biểu diễn bởi hai chuỗi các chữ số được gọi là các chữ số có nghĩa và số mũ. Giá trị của số này bằng giá trị số có nghĩa nhân với 10, còn lũy thừa được biểu diễn bởi số mũ. CHÚ THÍCH: Cách biểu diễn này cũng được gọi là: Cách biểu diễn ký hiệu dấu thập phân. 8.1. Mô tả NR3 gồm các biểu diễn các giá trị số có dạng tổng quát (A) E (B) mà biểu diễn giá trị sau: A x 10 B Trong đó, B là một số nguyên. Trong mỗi trường hợp của NR3, số có nghĩa gồm các KHOẢNG TRỐNG tùy chọn đứng đầu, được theo sau bởi dấu tùy chọn (trong biểu diễn có dấu) và một chuỗi các chữ số. Phải có ít nhất một chữ số trong số có nghĩa; Vị trí dấu thập phân trong số có nghĩa được quy định rõ ràng trong chuỗi ký tự đó. Ký tự E (hoặc e) phải theo sau số có nghĩa và số mũ, được đứng trước bởi dấu, phải theo liền sau ký tự E (hoặc e). Số mũ phải bao gồm một dấu đứng đầu và theo sau ít nhất là một chữ số. Không KHOẢNG TRỐNG nào được phép chèn vào giữa hoặc cuối của trường này. Khuyến cáo là có ít nhất một chữ số bên trái của ký hiệu dấu thập phân thậm chí chỉ có ít nhất một chữ số bên phải. 8.2. Cú pháp NR3 = NR3-không dấu/NR3-có dấu NR3-không dấu = khoảng trống * số mũ có nghĩa-số mũ dấu NR3-có dấu = khoảng trống * (dấu/khoảng trống) số mũ có nghĩa-số mũ dấu Số có nghĩa = (chữ số/chữ số * dấu-thập phân/chữ số *)/(chữ số * dấu-thập phân chữ số/chữ số *) Số mũ = dấu? chữ số/chữ số * 8.3. Ngữ nghĩa Mỗi biểu diễn được chứa trong một trường mà độ dài của trường này phải bằng tổng các KHOẢNG TRỐNG và số các chữ số, cộng với 4; hoặc chỉ cộng với 3 nếu dấu của số có nghĩa được biểu diễn bằng KHOẢNG TRỐNG; hoặc chỉ với 2 nếu KHOẢNG TRỐNG sau cùng đã bị lược bỏ. Trong một NR3 không dấu, giá trị phải được biểu diễn lớn hơn hoặc bằng không. Trong một NR3 có dấu DẤU CỘNG của số có nghĩa có thể được thay thế bởi một KHOẢNG TRỐNG. Nếu số mũ có giá không thì dấu của nó phải là một DẤU CỘNG. Nếu số mũ không bằng không và nếu dấu của nó bị lược bỏ thì số mũ này là dương. Biểu diễn của giá trị không phải gồm một DẤU CỘNG hoặc một KHOẢNG TRỐNG, chỉ các số KHÔNG trong số có nghĩa và một dấu CỘNG và chỉ có các số KHÔNG trong số mũ. 8.4. Ví dụ Trong các ví dụ sau, độ dài trường được giả định là 8. Bảng 3 - Các ví dụ NR3 Quy ước chung NR3-có dấu 5600 + 0,56E + 4 + 5.6e + 03 .00003 + 0,3E - 04 Δ0,3e -04 --2,8 -2,8E+00 0 +0,0E+00 ΔΔΔ0.e+0 8.5. Dạng đã được chuẩn hóa Một biểu diễn NR3 trong đó chữ số có nghĩa phải là một phân số thích hợp trong dải. 0,1 < abs="" (s)=""><> Trong đó, ABS (s) phải là giá trị không dấu của số có nghĩa, được gọi là dạng được chuẩn hóa. Điều kiện này có thể được đáp ứng bởi lựa chọn thích hợp giá trị được biểu diễn bởi số mũ. Một số cho trước bất kỳ có thể được biểu diễn bởi một dạng đã được chuẩn hóa duy nhất. Ví dụ, cách biểu diễn đã được chuẩn hóa theo Quy ước chung 6,1902 x 10 3 Bao gồm: - Chữ số có nghĩa 0,61902 Và - Số mũ 4. Theo quy định của NR3, biểu diễn này sẽ có dạng + 0,61902E + 04. Bảng 4 - Bảng mã Phụ lục A (tham khảo) Phương pháp quy định cú pháp Cú pháp thông qua một dãy các quy tắc thay thế, xác định các đối tượng ngữ nghĩa của các kiểu chuỗi ký tự khác nhau, như là “số nguyên” hoặc “chữ số” và mô tả các chuỗi ký hiệu là đối tượng của các kiểu này. Trong cú pháp, các chữ hoa, các chữ số và (có thể có dấu nối ở giữa) các từ chữ thường được sử dụng như “các siêu tên”, nghĩa là; như các tên của các đối tượng cú pháp. Phần lớn các siêu tên này được xác định bởi các quy tắc thay thế dưới dạng các siêu tên khác. Để tiến trình này kết thúc, các siêu tên nào đó được chỉ định như các siêu tên “cuối cùng” và các quy tắc thay thế cho chúng không được chứa trong cú pháp. Nên chú ý rằng KHOẢNG TRỐNG và chữ E hoa là các siêu tên cuối cùng tự biểu thị chúng. Các toán tử cú pháp là: a) Dấu GẠCH CHÉO, chỉ định rằng một siêu tên có thể được thay thế theo một trong nhiều cách; b) Dấu HOA THỊ, chỉ định rằng đối tượng nó theo sau có thể xuất hiện bất kỳ số lần nào, gồm cả không lần; c) Dấu NGOẶC ĐƠN TRÁI và NGOẶC ĐƠN PHẢI, được sử dụng để nhóm các con số cùng nhau; d) Dấu hỏi, chỉ định rằng đối tượng nó theo sau có thể được lược bỏ. Phụ lục B (tham khảo) Sử dụng ký tự DẤU PHẨY như ký hiệu dấu thập phân Do việc sử dụng một cách rộng rãi ký tự DẤU PHẨY ở các Quốc gia Châu Âu để biểu diễn ký hiệu dấu thập phân trong cách viết và trong các chuỗi ký tự số, nên ký tự DẤU PHẨY được sử dụng trong tiêu chuẩn này và bởi vì sự tương ứng giữa cách thức biểu diễn của máy và cách thức biểu diễn thể đọc được của con người được mong đợi đối với dữ liệu được ghi trên các kiểu nào đó của môi trường bằng máy-có thể đọc được. Mặc dù một số các ngôn ngữ lập trình được sử dụng một cách rộng rãi, bao gồm FORTRAN và BASIC, nhưng không cung cấp các phương tiện rõ ràng để cho phép việc sử dụng DẤU PHẨY như ký hiệu dấu thập phân trong dữ liệu có thể được xử lý bởi các chương trình, điều thực tế này không phải là lý do phản đối quan trọng nhất đối với việc bao gồm DẤU PHẨY trong tiêu chuẩn này. Nếu một yêu cầu nhận thấy là có thật đối với việc sử dụng các chương trình được biên dịch để xử lý dữ liệu mà bao gồm DẤU PHẨY như ký hiệu dấu thập phân và ngôn ngữ lập trình đó không chuẩn bị điều khoản nào đối với một biểu diễn dữ liệu như vậy thì nó là nguyên tắc có thể để kết hợp chặt chẽ vào hệ thống biên dịch đó một đặc tính kiểm soát-tham số đặc biệt. Đặc tính này phải cho phép các ký tự thay thế được sử dụng trong dữ liệu đó tại vị trí của ký hiệu dấu thập phân tiêu chuẩn và ký hiệu phân tách khác mà được quy định rõ ràng trong ngôn ngữ lập trình đó. Phụ lục C (tham khảo) Áp dụng cho các ngôn ngữ lập trình C.1. Khái quát Khi các giá trị số mà biểu diễn của nó phù hợp với tiêu chuẩn này, được yêu cầu xuất hiện trong dữ liệu trao đổi, thao tác của các quá trình mà tạo ra hoặc chấp nhận các biểu diễn như vậy thường được quy định bằng các phương tiện câu lệnh khai báo trong một ngôn ngữ lập trình. Khuyến cáo rằng một ngôn ngữ lập trình được dự định để cho phép đặc tả các quy trình như vậy nên cho phép đặc tả các quy trình mà có thể tạo ra và đặc tả các quy trình có thể chấp nhận, ít nhất một trong các biểu diễn NR1, NR2 và NR3. Hơn nữa, nếu ngôn ngữ lập trình đó cho phép một hoặc nhiều các dạng của NR đã xác định được tạo bởi một quy trình đã quy định thì nó cũng nên cho phép mỗi dạng NR đó được chấp nhận bởi một quy trình đã được quy định phù hợp. Các ví dụ của các kỹ thuật ngôn ngữ lập trình chung hiện nay được chỉ ra trong các mục C.2 tới C.6 có thể được sử dụng để tạo và chấp nhận Các NR. Các ví dụ này không minh họa cho tất cả các khía cạnh. C.2. Các chuỗi ký tự hình của COBOL C.2.1. Các đặc tả đối với ứng dụng của tiêu chuẩn này cho các chuỗi ký tự hình trong ngôn ngữ lập trình COBOL được chỉ ra trong Bảng 5 và được giải thích trong C.2.2 tới C.2.10. Bảng 5 - Các ví dụ về ứng dụng của tiêu chuẩn này cho các chuỗi ký tự hình trong COBOL Dạng Đặc tả nguyên mẫu Ví dụ Đặc tả thực NR được tạo NR1 không dấu Z(w-1)9 Z(5)9 ΔΔΔΔ53 ΔΔΔΔΔ0 NR có dấu +(w-1)9 +(5)9 ΔΔΔ+53 ΔΔΔΔ+0 S9(w - 1) S9(5) +00053 +00000 NR2 không dấu Z(w-d-2)9.9(d) Z(5)9.9(2) ΔΔΔΔ53.26 ΔΔΔΔΔ0.15 Z(w-2)9. Z(5)9. ΔΔΔΔ53. ΔΔΔΔΔ0. Z(w-d-1).9(d) Z(5).9(2) ΔΔΔ53.26 NR2 có dấu + ( w - d )9.9(d) +(5)9.9(2) ΔΔΔΔΔ.15 ΔΔΔ+53.26 +(w-2)9. +(519. ΔΔΔΔ+0.15 ΔΔΔ+53. +(w-d-1).9(d) +(5).9(2) ΔΔΔΔ+0. ΔΔ+53.26 ΔΔΔΔ+. 15 NR3 có dấu (không áp dụng trong COBOL) C.2.2. Trong các biểu thức trong các dấu ngoặc đơn, w là số các ký tự trong trường đó và d là số các chữ số bên phải của ký hiệu dấu thập phân. C.2.3. Biểu thức trong các dấu ngoặc đơn phải được viết như các chữ số khác 0 không dấu, bên ngoài các dấu ngoặc đơn thì không yêu cầu. C.2.4. Độ rộng trường w , phải đủ rộng để chứa giá trị được biểu diễn, bao gồm dấu và ký hiệu dấu thập phân, khi thích hợp. C.2.5. Ít nhất phải xuất hiện một ký tự 9 trong chuỗi ký tự hình để hoàn thành các yêu cầu cho NR1 hoặc NR2. C.2.6. Số được chỉnh bên phải trong trường đó. C.2.7. Để tạo một NR có dấu, nhưng bỏ dấu khi giá trị được biểu diễn là dương, Ký tự HÌNH - phải được sử dụng thay thế ký tự +. C.2.8. Số các ký tự HÌNH +, -, hoặc Z được chứa trong chuỗi ký tự này xác định vị trí của ký tự bên phải nhất đến dấu có thể động hoặc các chữ số 0 bị lược bỏ. C.2.9. Chỉ chuỗi ký tự hình được mô tả trong Bảng 5 được chấp nhận trong ISO 1989, Các ngôn ngữ lập trình-COBOL, đối với một mục dữ liệu số đầu vào mà chỉ bao gồm ký tự hình 9 hoặc bội số của nó. C.2.10. Tiêu chuẩn Quốc gia Hoa Kỳ X3.23-1974, Ngôn ngữ lập trình COBOL, bao gồm cú pháp COBOL bổ sung (điều khoản về DẤU) mà sẽ tạo hoặc chấp nhận một NR1 có dấu với hạn chế là dấu này không động và các chữ số 0 không bị lược bỏ. Xem ví dụ thứ 2 về NR1 có dấu trong Bảng 5. C.3. Kiểm soát dấu và các ký hiệu soạn thảo của FORTRAN-77 C.3.1. Các đặc tả trình ứng dụng của tiêu chuẩn này cho việc kiểm soát dấu và các ký hiệu soạn thảo trong ngôn ngữ lập trình FORTRAN được chỉ ra trong Bảng 6 và được giải thích trong C.3.2 tới C.3.12. Bảng 6 - Các ví dụ về trình ứng dụng của tiêu chuẩn này cho việc kiểm soát dấu và các ký hiệu soạn thảo trong ngôn ngữ lập trình FORTRAN Dạng Đặc tả nguyên mẫu Ví dụ Đặc tả thực tế NR được tạo NR1 không dấu SS, Iw SS, 1 6 ΔΔΔΔ53 ΔΔΔΔΔ0 NR1 có dấu SP, Iw SP, 1 6 ΔΔΔ+53 ΔΔΔΔ+0 NR2 không dấu SS, Fw.d SS, F9.2 ΔΔΔΔ53.26 ΔΔΔΔΔ0.15 SS, F7.0 F7.6 ΔΔΔΔ53. ΔΔΔΔΔ0. .150000 NR2 có dấu SP, Fw.d SP, F9.2 ΔΔΔ+53.26 ΔΔΔΔ+0.15 SP, F7.0 SP, F7.5 ΔΔΔ+53. ΔΔΔΔ+0. +.15000 NR3 có dấu SP, Ew.dEe SP, El 1.4EZ +0.5326E+02 + 0.0000E + 00 SP, Gw.dEe Xem C.3.12 C.3.2. Ký hiệu w là số các ký tự trong trường đó, d là số các chữ số bên phải của ký hiệu dấu thập phân và bên trái của số mũ và e là số các chữ số trong số mũ đó. C.3.3. Các ký hiệu soạn thảo phải được ghi như các chữ số khác 0 không dấu. C.3.4. Độ rộng trường w, phải đủ rộng để chứa giá trị được biểu diễn, bao gồm khoảng trống cho (các) dấu, ký hiệu dấu thập phân và E khi thích hợp. Độ rộng trường không cần thiết bao gồm khoảng trống cho số 0 tùy ý bên trái của ký hiệu dấu thập phân. C.3.5. Trong mọi sản phẩm của một NR không nhất thiết phải có ít nhất một chữ số. Trường hợp đặc biệt, trong một NR3 phải có ít nhất một chữ số trong cả hai số có nghĩa và số mũ. C.3.6. Số đó được chỉnh bên phải trong trường đó. C.3.7. NR1 và NR2 không dấu có thể được tạo bởi bộ xử lý chỉ khi giá trị đó là dương và tồn tại kiểm soát lược bỏ dấu (SS), nói cách khác bộ xử lý này được phép tạo ra một dấu cộng đối với một giá trị dương nếu độ rộng trường khoảng trống cho một dấu. C.3.8. Một NR1, NR2 hoặc NR3 dương có dấu được tạo với một dấu cộng nếu kiểm soát dấu dương (SP) được quy định. Nếu kiểm soát SP không được quy định bộ xử lý thì có thể quyết định tạo ra một khoảng trống thay cho một dấu cộng. C.3.9. Một NR3 có thể được tạo chỉ nếu ký hiệu soạn thảo có dạng Ew.dEe và kiểm soát dấu dương (SP) được quy định có dạng Ew.d thì bộ xử lý được phép sai số trong dạng của số mũ và một khoảng trống có thể xuất hiện như một dấu dương. Số 0 bên trái của ký hiệu dấu thập phân là tùy ý tới bộ xử lý và nếu không có mặt thì dấu đó ở ngay bên trái của ký hiệu dấu thập phân. C.3.10. FORTRAN không phân biệt giữa một khoảng trống và một dấu cộng cho một NR1, NR2 hoặc NR3 có dấu ở đầu vào. C.3.11. Dw.d ký hiệu soạn thảo không yêu cầu phù hợp với tiêu chuẩn này. Ew.dEe ký hiệu soạn thảo có thể được sử dụng thay thế với giá trị chính xác gấp đôi. C.3.12. Gw.d Ee ký hiệu soạn thảo phù hợp với tiêu chuẩn này chỉ đối với các giá trị mà được biểu diễn với một số mũ ở đầu ra. Đối với các giá trị mà được biểu diễn dưới dạng NR2 thì các giá trị này không được chỉnh phải trong trường đó. C.4. Các chuỗi ký tự DẠNG THỨC của PL/I C.4.1. Các đặc tả về trình ứng dụng của tiêu chuẩn này cho các chuỗi ký tự DẠNG THỨC trong ngôn ngữ lập trình PL/I được chỉ ra trong Bảng 7 và được giải thích trong C.4.2 tới C.4.10. Bảng 7 - Các ví dụ về trình ứng dụng của tiêu chuẩn này cho các chuỗi ký tự dạng thức trong ngôn ngữ lập trình PL/I Dạng Đặc tả nguyên mẫu Ví dụ Đặc tả thực NR được tạo NR1 không dấu F(w) F(6) ΔΔΔΔΔΔ53 NR1 có dấu F(w,0) F(w) F(6) ΔΔΔΔΔ,53 F(w,0) 00ΔΔΔ0 NR2 không dấu F(w,d) F(9,2) ΔΔΔΔ53.26 NR2 có dấu F(w,d) F(9,2) ΔΔΔΔΔΔ,0.26 ΔΔΔΔΔ53.26 F(7,4) ΔΔΔΔΔΔ0.26 -0.1500 NR3 có dấu E(w,d) E(11,4) Δ0.5326E+01 Δ0.0000E+00 C.4.2. Ký hiệu w là số các ký tự trong trường và d là số các chữ số bên phải của ký hiệu dấu thập phân và bên trái của số mũ. C.4.3. Ký hiệu w phải được ghi như một chữ số khác 0 không dấu. Ký hiệu d phải được ghi như một chữ số khác 0 không dấu, trừ khi được sử dụng để tạo dạng NR1. C.4.4. Độ rộng trường w phải đủ rộng để chứa giá trị được biểu diễn, bao gồm khoảng trống cho (các) dấu, ký hiệu dấu thập phân và E khi thích hợp. C.4.5. Trong mỗi sản phẩm của NR phải có ít nhất một chữ số. Riêng trong NR3, phải có ít nhất một số trong cả số có nghĩa và số mũ. C.4.6. Số đó được chỉnh bên phải trong trường đó. C.4.7. NR1 và NR2 không dấu có thể được tạo chỉ khi giá trị được biểu diễn là dương. C.4.8. Một NR1, NR2 hoặc NR3 dương có dấu được tạo với một khoảng trống trong vị trí của dấu. C.4.9. PL/I quy định một dấu cộng đối với số mũ dương ở đầu vào. C.4.10. PL/I không phân biệt giữa một khoảng trống với dấu cộng đối với NR1, NR2 hoặc NR3 có dấu ở đầu vào. C.4.11. PL/I không tạo ký hiệu dấu thập phân được yêu cầu của NR3 có sử dụng đặc tả E(w,O). C.5. Các chuỗi ký tự HÌNH của PL/I C.5.1. Các đặc tả ứng dụng của tiêu chuẩn này cho các chuỗi ký tự hình trong ngôn ngữ lập trình PL/I được chỉ ra trong Bảng 8 và được giải thích trong C.5.2 tới C.5.11. C.5.2. Trong các biểu thức trong ngoặc đơn w là số các ký tự trong trường, b là số các chữ số bên trái của ký hiệu dấu thập phân, d là số các chữ số bên phải của ký hiệu dấu thập phân và bên trái của số mũ và f là số các chữ số trong số mũ. C.5.3. Biểu thức trong ngoặc đơn phải được ghi như các chữ số khác 0 không dấu, bên ngoài dấu ngoặc đơn đó thì không yêu cầu. C.5.4. Độ rộng trường w, phải đủ rộng để chứa giá trị được biểu diễn, bao gồm khoảng trống cho (các) dấu, ký hiệu dấu thập phân và E, khi thích hợp. C.5.5. Trong mọi sản phẩm của NR phải có ít nhất một chữ số. Riêng trong NR3 phải có ít nhất một số trong cả số có nghĩa và số mũ. C.5.6. Số được chỉnh bên phải trong trường đó. C.5.7. Để tạo một NR có dấu, nhưng lược bỏ dấu đó khi giá trị được biểu diễn là dương, ký tự HÌNH, -, phải được sử dụng thay thế S. C.5.8. Số các ký tự HÌNH S, -, hoặc Z được chứa trong chuỗi ký tự đó xác định vị trí ký tự bên phải nhất mà dấu có thể động hoặc các chữ số 0 bị lược bỏ. C.5.9. PL/I quy định dấu cộng đối với số mũ dương ở đầu vào. C.5.10. PL/I không phân biệt khoảng trống và dấu cộng đối với NR1, NR2, hoặc NR3 có dấu. C.5.11. PL/I quy định điểm cơ số nằm ở vị trí đã chỉ ra ở đầu vào được mô tả bởi một chuỗi ký tự HÌNH. C.6. Cách sử dụng việc truyền ĐỊNH HƯỚNG theo DANH SÁCH trong PL/I C.6.1. Tất cả các NR có thể nhập cho bất kỳ biến có sử dụng sự truyền định hướng theo DANH SÁCH. C.6.2. Đầu ra định hướng theo DANH SÁCH từ x PIC’p’ tương đương đầu ra của định hướng SOẠN THẢO thông qua dạng thức P’p’. Bảng 8 - Các ví dụ về việc áp dụng tiêu chuẩn này cho các chuỗi ký tự HÌNH trong ngôn ngữ lập trình PL/I Dạng Đặc tả nguyên mẫu Ví dụ Đặc tả thực NR được tạo NR1 không dấu P’(w-1)Z9V’ P’(5)Z9V’ ΔΔΔΔ53 ΔΔΔΔΔ0 NR1 có dấu P’(w-1)S9V’ P’(5)S9V’ ΔΔΔ+53 ΔΔΔΔ+0 NR2 không dấu P’(w - d - 2)Z9V. (d)9’ P’(5)Z9V.(2)9’ ΔΔΔΔ53.26 ΔΔΔΔΔ0.15 P’(w-2)Z9V.’ P’(5)Z9V.’ ΔΔΔΔ53. ΔΔΔΔΔ0. P’(w-d-1)ZV.(d)9’ P’(5)ZV.(2)9’ ΔΔΔ53.26 ΔΔΔΔΔ.15 NR2 có dấu P’(w-d-2)S9V.(d)9’ P’(5)S9V.(2)9’ ΔΔΔ+53.26 ΔΔΔΔ+0.15 P’(w-2)S9V.’ P’(5)S9V.’ ΔΔΔ+53. ΔΔΔΔ+0. P’(w-d--1) SV. (d)9’ P’(5)SV.(2)9’ ΔΔ+53.26 ΔΔΔΔ+.15 NR3 có dấu P’(w-b-d-f-3)S(b)9V.(d)9ES(f)9’ P’(3)S9V.(4)9ES(2)9’ +532.6000E-01 ΔΔ+0.0000E+00 P’(w-b-f-3)S(b) 9V.ES (f)9’ P’(7) S9V.ES (2)9’ +5326000.E-05 ΔΔΔΔΔΔ+0.E+00 P’(w-d-_f-3)SV.(d)9ES(f)9’ P’(4)SV.(4)9ES(2)9’ +532.6000E-01 ΔΔΔ+.0000E+00 C.6.3. Đầu ra định hướng theo DANH SÁCH từ ký hiệu DẤU THẬP PHÂN CỐ ĐỊNH (w-3) tương đương đầu ra định hướng SOẠN THẢO thông qua dạng hàm F(w) (đó là quá trình tạo một NR1). C.6.4. Đầu ra định hướng theo DANH SÁCH từ ký hiệu DẤU THẬP PHÂN CỐ ĐỊNH (w-3, d) tương đương đầu ra định hướng SOẠN THẢO thông qua F(w, d ) (đó là quá trình tạo một NR2). C.6.5. Đầu ra định hướng theo DANH SÁCH từ ký hiệu DẤU THẬP PHÂN ĐỘNG (w-n-4) tương đương đầu ra định hướng SOẠN THẢO thông qua E(w, w-n-5) (đó là quá trình tạo một NR3). C.7. Các tham số độ rộng trường của PASCAL C.7.1. Các đặc tả về trình ứng dụng của tiêu chuẩn này cho các tham số độ rộng trường trong ngôn ngữ lập trình PASCAL được chỉ ra trong Bảng 9 và được giải thích trong C.7.2 tới C.7.10. Bảng 9 - Các ví dụ về trình ứng dụng của tiêu chuẩn này cho các tham số độ rộng trường trong ngôn ngữ lập trình PASCAL Form Đặc tả nguyên mẫu Ví dụ Đặc tả thực NR được tạo NR1 không dấu :w :6 53 0 NR1 có dấu :w :6 53 0 NR2 không dấu :w:d :9:2 53.26 0.26 NR2 có dấu :w:d :9:2 -53.26 -0.26 NR3 có dấu :w :11 -5.3260E+01 2.6000E -01 C.7.2. Ký hiệu w là số các ký tự trong trường đối với các dạng NR1 và NR2 và d là số các chữ số bên phải của ký hiệu dấu thập phân cho các dạng NR2. C.7.3. Các ký hiệu w và d phải có các giá trị lớn hơn 0. C.7.4. Độ rộng trường w không cần thiết phải gồm giá trị có nghĩa được biểu diễn. PASCAL sẽ sử dụng một độ rộng đã tính toán nếu cần thiết. C.7.5. Trong mọi sản phẩm của một NR phải có ít nhất một chữ số. Riêng trong NR3 phải có ít nhất một chữ số trong cả số có nghĩa và số mũ. C.7.6. Số được chỉnh phải trong trường đó. C.7.7. NR1 và NR2 không dấu chỉ có thể được tạo chỉ nếu giá trị được biểu diễn không âm. C.7.8. NR1, NR2 hoặc NR3 dương có dấu được tạo với một khoảng trống trong vị trí dấu. C.7.9. PASCAL không yêu cầu một dấu cộng cho số mũ dương ở đầu vào. C.7.10. PASCAL không yêu cầu một dấu cộng cho một NR1, NR2 hoặc NR3 có dấu ở đầu vào. MỤC LỤC Lời nói đầu 1. Phạm vi áp dụng 2. Sự phù hợp 3. Tài liệu viện dẫn 4. Định nghĩa 4.1. 4.2. 4.3. 4.4. 4.5. 5. Bộ ký tự 5.1. Mô tả 5.2. Cú pháp 5.3. Ngữ nghĩa 5.4. Mã hóa 6. Cách thứ nhất để biểu diễn số (NR1) 6.1. Mô tả 6.2. Cú pháp 6.3. Ngữ nghĩa 6.4. Ví dụ 7. Cách thứ hai để biểu diễn số (NR2) 7.1. Mô tả 7.2. Cú pháp 7.3. Ngữ nghĩa 7.4. Ví dụ 8. Cách thứ ba để biểu diễn số (NR3) 8.1. Mô tả 8.2. Cú pháp 8.3. Ngữ nghĩa 8.4. Ví dụ 8.5. Dạng đã được chuẩn hóa Phụ lục A Phụ lục B Phụ lục C