Lệnh Convert Date [CVTDAT] chuyển đổi định dạng của một giá trị ngày từ định dạng này sang định dạng khác mà không làm thay đổi giá trị của nó. Lệnh bỏ qua bất kỳ dấu phân cách ngày nào được sử dụng ở định dạng cũ, nhưng nếu dấu phân cách được bao gồm trong kết quả đã chuyển đổi, thì có thể chỉ định ký tự dấu phân cách trên lệnh
Chỉ những ngày hợp lệ mới có thể được chuyển đổi. Nếu định dạng từ hoặc định dạng sang chỉ sử dụng 2 chữ số để chỉ định năm [ví dụ: *MDY, *DMY, *YMD hoặc *JUL], ngày hợp lệ nằm trong khoảng từ ngày 1 tháng 1 năm 1940 đến . Mặt khác, ngày hợp lệ nằm trong khoảng từ ngày 24 tháng 8 năm 1928 đến ngày 9 tháng 5 năm 2071. Nếu năm được chỉ định chỉ với 2 chữ số, các năm trong phạm vi từ 40 đến 99 được giả định là từ 1940 đến 1999; . Lệnh hoạt động cùng với giá trị hệ thống QLEAPADJ
Những hạn chế. Lệnh này chỉ hợp lệ trong chương trình CL hoặc thủ tục ILE CL
Từ khóaMô tảLựa chọnGhi chúNgày được chuyển đổiGiá trị ký tựBắt buộc, Vị trí 1CL var cho ngày được chuyển đổi Giá trị ký tựBắt buộc, Vị trí 2Từ định dạng ngày*SYSVAL, *MDY, *DMY, *YMD, *JUL, *JOB, *MDYY, *DMYY, *YYMD, *CYMD, *ISO . ', ','Tùy chọn, Vị trí 5
Ngày được chuyển đổi [DATE]
Chỉ định hằng số hoặc biến CL chứa ngày được chuyển đổi. Khi một hằng số được chỉ định có chứa các ký tự phân cách, nó phải được đặt trong dấu nháy đơn [các ký tự phân cách bị bỏ qua trong quá trình chuyển đổi]. Nếu các dấu phân cách được sử dụng trong một hằng số, các số 0 đứng đầu trong mỗi phần của ngày có thể được bỏ qua [3/3/88 hoặc 03/03/88 đều hợp lệ]. Nếu một biến được chỉ định, nó phải đủ dài để chứa loại ngày và các dấu phân cách ngày của nó, nếu được sử dụng. Dấu phân cách ngày hợp lệ là dấu gạch chéo [/], dấu gạch nối [-], dấu chấm [. ] và dấu phẩy [,]. Một biến chứa tất cả các khoảng trống [X'40'] được coi là có ngày dài bằng 0 và không hợp lệ
Đây là thông số bắt buộc
CL var cho ngày chuyển đổi [TOVAR]
Chỉ định tên của biến CL chứa giá trị ngày được chuyển đổi
Đối với mọi định dạng ngoại trừ Julian, các trường con tháng và ngày trong kết quả được chuyển đổi có độ dài mỗi trường là 2 byte, được căn phải và [nếu cần] một số 0 ở đầu được sử dụng làm ký tự đệm để điền vào mỗi trường 2 byte
Đối với định dạng Julian và Julian dài, trường ngày dài 3 byte và được đệm bằng các số 0 ở đầu [nếu cần]. Trường năm dài 2 byte cho Julian và dài 4 byte cho Julian dài
Sử dụng các bảng sau để xác định độ dài tối thiểu cần thiết của biến
Kích thước trường và độ dài biến tối thiểu
TO FMT TO SEP Minimum Variable Length ---------------------- ------ ----------------------------- *JUL *NONE 5 *JUL Any 6 *MDY, *DMY, *YMD *NONE 6 *MDY, *DMY, *YMD Any 8 *MDYY, *DMYY, *YYMD *NONE 8 *MDYY, *DMYY, *YYMD Any 10 *CYMD *NONE 7 *CYMD Any 9 *LONGJUL *NONE 7 *LONGJUL Any 8 *ISO, *USA, *EUR, *JIS 10 *JOB Depends on job date format *SYSVAL Depends on value of QDATFMT
Field Size TO FMT Month Day Year ----------------------- ----- --- ---- *JUL N/A 3 2 *MDY, *DMY, *YMD 2 2 2 *MDYY, *DMYY, *YYMD 2 2 4 *ISO, *USA, *EUR, *JIS 2 2 4 *CYMD 2 2 2 [+1 byte century field]
Đây là thông số bắt buộc
Từ định dạng ngày [FROMFMT]
Chỉ định định dạng hiện tại của ngày được chuyển đổi
*JOBNgày có định dạng được chỉ định bởi thuộc tính công việc, DATFMT. *SYSVALNgày có định dạng được chỉ định bởi giá trị hệ thống, QDATFMT. *MDYNgày có định dạng tháng, ngày, năm, mmddyy. *MDYYNgày có định dạng tháng, ngày, năm, mmddyyyy. *DMYNgày có định dạng ngày, tháng, năm, ddmmyy. *DMYYNgày có định dạng ngày, tháng, năm, ddmmyyyy. *YMDNgày có định dạng năm, tháng, ngày, yymmdd. *YYMDNgày có định dạng năm, tháng, ngày, yyyymmdd. *CYMDNgày có định dạng thế kỷ, năm, tháng, ngày, cyymmdd, trong đó c là 0 cho các năm từ 1928 đến 1999 và là 1 cho các năm từ 2000 đến 2071. *THÁNG 7Ngày có định dạng Julian, yyddd. *ISONgày có định dạng ngày của Tổ chức Tiêu chuẩn hóa Quốc tế [ISO], yyyy-mm-dd. *USANgày có định dạng ngày của Hoa Kỳ, mm/dd/yyyy. *EURNgày có định dạng ngày châu Âu, dd. mm. yyyy. *JISNgày có định dạng ngày Tiêu chuẩn Công nghiệp Nhật Bản, yyyy-mm-dd. *LONGJULNgày có định dạng Julian dài, yyyydddĐịnh dạng đến nay [TOFMT]
Chỉ định định dạng mà ngày sẽ được chuyển đổi
*JOBĐịnh dạng ngày được chuyển đổi thành định dạng được chỉ định bởi thuộc tính công việc, DATFMT. *SYSVALĐịnh dạng ngày được chuyển đổi thành định dạng được chỉ định bởi giá trị hệ thống, QDATFMT. *MDYĐịnh dạng ngày được chuyển đổi sang định dạng tháng, ngày, năm, mmddyy. *MDYYĐịnh dạng ngày được chuyển đổi sang định dạng tháng, ngày, năm, mmddyyyy. *DMYĐịnh dạng ngày được chuyển đổi sang định dạng ngày, tháng, năm, ddmmyy. *DMYYĐịnh dạng ngày được chuyển đổi sang định dạng ngày, tháng, năm, ddmmyyyy. *YMDĐịnh dạng ngày được chuyển đổi sang định dạng năm, tháng, ngày, yymmdd. *YYMDĐịnh dạng ngày được chuyển đổi sang định dạng năm, tháng, ngày, yyyymmdd. *CYMDĐịnh dạng ngày được chuyển đổi sang định dạng thế kỷ, năm, tháng, ngày, cyymmdd, trong đó c là 0 cho các năm từ 1928 đến 1999 và là 1 cho các năm từ 2000 đến 2071. Nếu năm ở định dạng hiện tại chỉ có 2 chữ số, c sẽ được đặt thành 0 cho các năm từ 40 đến 99 và thành 1 cho các năm từ 00 đến 39. *THÁNG 7Định dạng ngày được chuyển đổi sang định dạng Julian, yyddd. *ISOĐịnh dạng ngày được chuyển đổi thành định dạng ngày của Tổ chức Tiêu chuẩn hóa Quốc tế [ISO], yyyy-mm-dd. *USAĐịnh dạng ngày được chuyển đổi sang định dạng ngày của Hoa Kỳ, mm/dd/yyyy. *EURĐịnh dạng ngày được chuyển đổi sang định dạng ngày Châu Âu, dd. mm. yyyy. *JISĐịnh dạng ngày được chuyển đổi thành định dạng ngày Tiêu chuẩn Công nghiệp Nhật Bản, yyyy-mm-dd. *LONGJULNgày có định dạng Julian dài, yyyydddDấu tách ngày [TOSEP]
Chỉ định loại dấu tách ngày [nếu có] được sử dụng trong ngày được chuyển đổi
ví dụ 1. Chuyển đổi sang định dạng DMY
DCL VAR[&DATE] TYPE[*CHAR] LEN[8] : CVTDAT DATE['12-24-88'] TOVAR[&DATE] TOFMT[*DMY]
Lệnh này chuyển đổi ngày 12-24-88, ở định dạng MDY. Bởi vì tham số FROMFMT không được chỉ định, mặc định của nó, *JOB, chỉ ra rằng thuộc tính công việc DATFMT chứa định dạng MDY. Ngày được chuyển đổi thành định dạng DMY và ký tự phân tách được chỉ định trong thuộc tính công việc DATSEP được chèn vào. Nếu DATSEP chứa dấu gạch chéo, kết quả quy đổi là 24/12/88
ví dụ 2. Chuyển đổi sang định dạng được chỉ định bởi thuộc tính công việc
DCL &PAYDAY *CHAR 6 DCL &NEWPDAY *CHAR 6 : CVTDAT DATE[&PAYDAY] TOVAR[&NEWPDAY] FROMFMT[*YMD] TOSEP[*NONE]
Lệnh này chuyển đổi định dạng của ngày được lưu trữ trong &PAYDAY từ năm, tháng, ngày sang định dạng được chỉ định bởi thuộc tính công việc DATFMT. Ví dụ: nếu DATFMT chứa định dạng MDY, định dạng của ngày được chuyển đổi là tháng, ngày và năm. Ngày đã chuyển đổi được lưu trữ trong biến &NEWPDAY. Bởi vì &NEWPDAY được khai báo là một biến gồm 6 ký tự nên TOSEP[*NONE] là bắt buộc;
ví dụ 3. Chuyển đổi sang định dạng CYMD
DCL &NEWDAY1 *CHAR 7 DCL &NEWDAY2 *CHAR 7 : CVTDAT DATE['01/24/1939'] TOVAR[&NEWDAY1] FROMFMT[*MDYY] TOFMT[*CYMD] TOSEP[*NONE] CVTDAT DATE['01/24/39'] TOVAR[&NEWDAY2] FROMFMT[*MDY] TOFMT[*CYMD] TOSEP[*NONE]
Lệnh CVTDAT đầu tiên chuyển đổi ngày được chỉ định trên tham số DATE từ định dạng tháng, ngày, năm 4 chữ số sang định dạng thế kỷ, năm, tháng, ngày. Vì năm được chỉ định bằng 4 chữ số và 2 chữ số đầu tiên là "19", chữ số thế kỷ được đặt thành "0", nên giá trị của "NEWDAY1 là "0390124"
Lệnh CVTDAT thứ hai chuyển đổi ngày được chỉ định trên tham số DATE từ định dạng tháng, ngày, năm sang định dạng thế kỷ, năm, tháng, ngày. Vì năm được chỉ định chỉ có 2 chữ số và năm nhỏ hơn 40, chữ số thế kỷ được đặt thành "1", vì vậy giá trị của "NEWDAY2 là" 1390124"