$ Set Sharing = PRIVATE 00100000Transform
$ Set Installation 1 00101000Transform
$ Set Tracing 00102000Transform
Begin 00103000Transform
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 00104000Transform
% COPYWRITE Transform Source % 00105000Transform
% % 00106000Transform
% This Library exports transform functions which may be used % 00107000Transform
% by the METALOGIC COPYWRITE library when transforming data % 00108000Transform
% during the transfer of files into a CDROM volume image. % 00109000Transform
% % 00110000Transform
% History % 00111000Transform
% % 00112000Transform
% 03/07/98 Initial version % 00113000Transform
% % 00114000Transform
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 00115000Transform
00116000Transform
Define 00117000Transform
CAND(A,B) = (If (A) then (B) Else FALSE)#; 00118000Transform
00119000Transform
$ Set Omit = Not Tracing 00120000Transform
00121000Transform
File 00122000Transform
ReportFile(Kind =PRINTER,FrameSize = 8,BlockStructure=EXTERNAL, 00123000Transform
MaxRecSize = 132,FileUse = OUT ); 00124000Transform
PROCEDURE Report(Text); 00125000Transform
Value Text; 00126000Transform
String Text; 00127000Transform
Write(ReportFile,LENGTH(Text),Text); 00128000Transform
00129000Transform
PROCEDURE DumpArray(Who,A,iStart,nWords,Writer); 00130000Transform
Value Who,iStart,nWords; 00131000Transform
String Who; 00132000Transform
Array A[0]; 00133000Transform
Integer iStart,nWords; 00134000Transform
PROCEDURE Writer(Text); 00135000Transform
Value Text; 00136000Transform
String Text; 00137000Transform
FORMAL; 00138000Transform
Begin 00139000Transform
Define 00140000Transform
WordsPerLine = 5#, 00141000Transform
CAND(A,B) = (If (A) then (B) Else FALSE)#; 00142000Transform
String 00143000Transform
Line; 00144000Transform
Integer 00145000Transform
K, 00146000Transform
iWord, 00147000Transform
nSame, 00148000Transform
cLine, 00149000Transform
iLast; 00150000Transform
Writer(Who !! " [" !! String(iStart,*) !! "] for " !! 00151000Transform
String(nWords,*) !! " Words"); 00152000Transform
Line:="(" !! String(iStart,8) !! ") "; 00153000Transform
iLast:=((iWord:=iStart)+nWords-1); 00154000Transform
While (iWord <= iLast) Do 00155000Transform
Begin 00156000Transform
nSame:=iWord+1; 00157000Transform
While CAND(nSame <= iLast,A[nSame] IS A[iWord]) Do nSame:=*+1;00158000Transform
nSame:=*-iWord; 00159000Transform
If (WordsPerLine-cLine) < (K:=If (nSame > 1) then 2 else 1)then 00160000Transform
Begin 00161000Transform
Writer(Line); 00162000Transform
Line:="(" !! String(iWord,8) !! ") "; 00163000Transform
cLine:=0; 00164000Transform
End; 00165000Transform
Line:=* !! Translate(String4(Pointer(A[iWord],4),12), 00166000Transform
HexToEBCDIC) !! " "; 00167000Transform
cLine:=*+1; 00168000Transform
If (nSame > 1) then 00169000Transform
Begin 00170000Transform
Line:=* !! "for " !! String(nSame,8) !! " "; 00171000Transform
cLine:=*+1; 00172000Transform
End; 00173000Transform
iWord:=*+nSame; 00174000Transform
End; 00175000Transform
If (nWords > 0) then 00176000Transform
Writer(Line); 00177000Transform
End of DumpArray; 00178000Transform
00179000Transform
$ Pop Omit 00180000Transform
00181000Transform
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 00182000Transform
% TRANSFORM Interface % 00183000Transform
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 00184000Transform
00185000Transform
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 00186000
%$ Include "COPYWRITE/LIBRARY." 10820000 - 11375000 00187000
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 00188000
% Note: Included here for Trial Customers 00189000
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 00190000CopyWrite
% Start of Transform Interface Include Range % 00191000CopyWrite
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 00192000CopyWrite
00193000CopyWrite
Define 00194000CopyWrite
% Result 00195000CopyWrite
CWTr_ErrorV = 0#, 00196000CopyWrite
CWTr_OKV = 1#, 00197000CopyWrite
CWTr_SkipRecordV = 3#, 00198000CopyWrite
CWTr_SkipFileV = 5#, 00199000CopyWrite
CWTr_SelectFileAndChangeTitleV = 7#, 00200000CopyWrite
CWTr_CreateNewFileV = 9#, 00201000CopyAndCat
% Context 00202000CopyWrite
CWTr_OpenVolumeV = 1#, 00203000CopyWrite
CWTr_StartOfFileV = 2#, 00204000CopyWrite
CWTr_DataRecordV = 3#, 00205000CopyWrite
CWTr_EndOfFileV = 4#, 00206000CopyWrite
CWTr_CloseVolumeV = 5#, 00207000CopyWrite
CWTr_OpenFileSystemV = 6#, 00208000CopyAndCat
CWTr_CloseFileSystemV = 7#, 00209000CopyAndCat
% File Information 00210000CopyWrite
CWTr_FileStructure(A) = A[0]#, 00211000CopyWrite
CWTr_FileType(A) = A[1]#, 00212000CopyWrite
CWTr_SectorSize(A) = A[2]#, 00213000CopyWrite
CWTr_ExtMode(A) = A[3]#, 00214000CopyWrite
CWTr_Units(A) = A[4]#, 00215000CopyWrite
CWTr_EOFSector(A) = A[5]#, 00216000CopyWrite
CWTr_EOFLastBits(A) = A[6]#, 00217000CopyWrite
CWTr_NumberOfSectors(A) = 00218000UnAllocate
(CWTr_EOFSector(A)+REAL(CWTr_EOFLastBits(A)^=0))#, 00219000UnAllocate
CWTr_RowTail(A) = A[7]#, 00220000CopyWrite
CWTr_RowSize(A) = A[8]#, 00221000CopyWrite
CWTr_BlockSize(A) = A[9]#, 00222000CopyWrite
CWTr_MaxRecSize(A) = A[10]#, 00223000CopyWrite
CWTr_LastRecord(A) = A[11]#, 00224000CopyWrite
CWTr_Filelength(A) = A[12]#, 00225000CopyWrite
CWTr_HdrLength(A) = A[13]#, 00226000CopyWrite
CWTr_FileKind(A) = A[14]#, 00227000CopyWrite
CWTr_FileSystem(A) = A[15]#, 00228000CopyWrite
CWTr_LibraryMaintenanceV = 0#, 00229000CopyWrite
CWTr_ISO9660V = 1#, 00230000CopyWrite
CWTr_JOLIETV = 2#, 00231000CopyWrite
CWTr_RecordSizeInBytes(A) = A[16]#, 00232000CopyWrite
CWTr_ApplyExtendedAttributes(A) = Boolean(A[17])#, 00233000CopyWrite
CWTr_RequestedFileKind(A) = A[18]#, 00234000CopyWrite
CWTr_VolumeIdentifierIndex(A) = A[19]#, 00235000CopyWrite
CWTr_VolumeIdentifierSize(A) = A[20]#, 00236000CopyWrite
CWTr_VolumeIdentifier(A) = 00237000CopyWrite
String(Pointer(A[CWTr_VolumeIdentifierIndex(A)],8),00238000CopyWrite
CWTr_VolumeIdentifierSize(A))#, 00239000CopyWrite
CWTr_VolumeTitleIndex(A) = A[21]#, 00240000CopyWrite
CWTr_VolumeTitleSize(A) = A[22]#, 00241000CopyWrite
CWTr_VolumeTitle(A) = 00242000CopyWrite
String(Pointer(A[CWTr_VolumeTitleIndex(A)],8), 00243000CopyWrite
CWTr_VolumeTitleSize(A))#, 00244000CopyWrite
CWTr_ToHostNameIndex(A) = A[23]#, 00245000CopyWrite
CWTr_ToHostNameSize(A) = A[24]#, 00246000CopyWrite
CWTr_ToHostName(A) = 00247000CopyWrite
String(Pointer(A[CWTr_ToHostNameIndex(A)],8), 00248000CopyWrite
CWTr_ToHostNameSize(A))#, 00249000CopyWrite
CWTr_TransformStringIndex(A) = A[25]#, 00250000CopyWrite
CWTr_TransformStringSize(A) = A[26]#, 00251000CopyWrite
CWTr_TransformString(A) = 00252000CopyWrite
String(Pointer(A[CWTr_TransformStringIndex(A)],8), 00253000CopyWrite
CWTr_TransformStringSize(A))#, 00254000CopyWrite
CWTr_PublisherIndex(A) = A[27]#, 00255000CopyWrite
CWTr_PublisherSize(A) = A[28]#, 00256000CopyWrite
CWTr_Publisher(A) = 00257000CopyWrite
String(Pointer(A[CWTr_PublisherIndex(A)],8), 00258000CopyWrite
CWTr_PublisherSize(A))#, 00259000CopyWrite
CWTr_DataPreparerIndex(A) = A[29]#, 00260000CopyWrite
CWTr_DataPreparerSize(A) = A[30]#, 00261000CopyWrite
CWTr_DataPreparer(A) = 00262000CopyWrite
String(Pointer(A[CWTr_DataPreparerIndex(A)],8), 00263000CopyWrite
CWTr_DataPreparerSize(A))#, 00264000CopyWrite
CWTr_NumberOfRows(A) = A[31]#, 00265000UnAllocate
CWTr_NumberOfAllocatedRows(A) = A[32]#, 00266000UnAllocate
CWTr_NumberOfUnAllocatedRowsBeforeLastRow(A) 00267000UnAllocate
= A[33]#, 00268000UnAllocate
CWTr_LastRow(A) = A[34]#, 00269000UnAllocate
CWTr_LastRowSize(A) = A[35]#, 00270000UnAllocate
CWTr_LastAllocatedRow(A) = A[36]#, 00271000UnAllocate
00272000UnAllocate
CWTr_FileInfoSizeInWords(A) = A[CWTr_FixedSizeInWordsV-1]#,00273000CopyWrite
CWTr_FixedSizeInWordsV = 50#, 00274000CopyWrite
00275000CopyWrite
CWTr_EndOfDefinitions=#; 00276000CopyWrite
00277000CopyWrite
Define 00278000CopyWrite
Declare_Copywrite_Transform_Function(CWTr_Name) = 00279000CopyWrite
Integer PROCEDURE CWTr_Name(Context,Hdr,FileInfo, 00280000CopyWrite
Record,sRecord,InsertRecord, 00281000CopyWrite
Scratch,Report,Options,Reason); 00282000CopyWrite
Value Context,Options; 00283000CopyWrite
Integer Context,sRecord; 00284000CopyWrite
Array Hdr,FileInfo,Record,Scratch[0]; 00285000CopyWrite
Real Options; 00286000CopyWrite
String Reason; 00287000CopyWrite
Boolean PROCEDURE InsertRecord(pDataRecord,sDataRecord,Reason);00288000CopyWrite
Value pDataRecord,sDataRecord; 00289000CopyWrite
Pointer pDataRecord; 00290000CopyWrite
Integer sDataRecord; 00291000CopyWrite
String Reason; 00292000CopyWrite
FORMAL; 00293000CopyWrite
PROCEDURE Report(Text); 00294000CopyWrite
Value Text; 00295000CopyWrite
String Text; 00296000CopyWrite
FORMAL#; 00297000CopyWrite
00298000CopyWrite
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 00299000CopyWrite
% End of Transform Interface Include Range % 00300000CopyWrite
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 00301000CopyWrite
00302000
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 00303000Transform
% ASCIICrLf % 00304000Transform
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 00305000Transform
00306000Transform
Declare_Copywrite_Transform_Function(CWTr_ASCIICrLf); 00307000Transform
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 00308000Transform
% Description: % 00309000Transform
% This is a transform for transforming files into the format% 00310000Transform
% commonly used on Windows systems. The format created is % 00311000Transform
% variable length text records in ASCII, with each line % 00312000Transform
% terminated by a CR LF. % 00313000Transform
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 00314000Transform
Begin 00315000Transform
Label 00316000Transform
OutOfCWTr_ASCIICrLf; 00317000Transform
Define 00318000Transform
Return(R) = 00319000Transform
Begin 00320000Transform
CWTr_ASCIICrLf:=(R); 00321000Transform
Go OutOfCWTr_ASCIICrLf; 00322000Transform
End#; 00323000Transform
Pointer 00324000Transform
pRecord; 00325000Transform
00326000Transform
$ Set Omit = Not Tracing 00327000Transform
DumpArray("CWTr_ASCIICrLf " !! String(sRecord,*) !! " bytes", 00328000Transform
Record,0,sRecord DIV 6 + 1, 00329000Transform
Report); 00330000Transform
$ Pop Omit 00331000Transform
00332000Transform
Case Context Of 00333000Transform
Begin 00334000Transform
CWTr_OpenVolumeV: 00335000Transform
CWTr_StartOfFileV: 00336000Transform
Return(CWTr_OKV); 00337000Transform
CWTr_DataRecordV: 00338000Transform
Case CWTR_FileStructure(FileInfo) Of 00339000Transform
Begin 00340000Transform
Value(ALIGNED180): 00341000Transform
pRecord:=Pointer(Record[0],8); 00342000Transform
Case CWTr_ExtMode(FileInfo) Of 00343000Transform
Begin 00344000Transform
Value(OCTETSTRING): 00345000Transform
; 00346000Transform
Value(ASCII): 00347000Transform
While CAND(sRecord > 0, 00348000Transform
pRecord+(sRecord-1) = 47"20" For 1) Do 00349000Transform
sRecord:=*-1; 00350000Transform
Replace pRecord+sRecord By 47"0D0A" for 2; 00351000Transform
sRecord:=*+2; 00352000Transform
Else: 00353000Transform
While CAND(sRecord > 0, 00354000Transform
pRecord+(sRecord-1) = 48"40" For 1) Do 00355000Transform
sRecord:=*-1; 00356000Transform
Replace pRecord+sRecord By 48"0D25" for 2; 00357000Transform
sRecord:=*+2; 00358000Transform
Replace pRecord By pRecord For sRecord With EBCDICToASCII;00359000Transform
End Case; 00360000Transform
Value(STREAM): 00361000Transform
pRecord:=Pointer(Record[0],8); 00362000Transform
Case CWTr_ExtMode(FileInfo) Of 00363000Transform
Begin 00364000Transform
Value(EBCDIC): 00365000Transform
Replace pRecord By pRecord For sRecord With EBCDICToASCII 00366000Transform
Else: 00367000Transform
; 00368000Transform
End Case; 00369000Transform
Else: 00370000Transform
; 00371000Transform
End Case; 00372000Transform
Return(CWTr_OKV); 00373000Transform
CWTr_EndOfFileV: 00374000Transform
CWTr_CloseVolumeV: 00375000Transform
Return(CWTr_OKV); 00376000Transform
Else: 00377000Transform
Return(CWTr_ErrorV); 00378000Transform
End Case; 00379000Transform
00380000Transform
OutOfCWTr_ASCIICrLf: 00381000Transform
End of CWTr_ASCIICrLf; 00382000Transform
00383000Transform
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 00384000Transform
% Initialization % 00385000Transform
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 00386000Transform
00387000Transform
Export 00388000Transform
CWTr_ASCIICrLf as "ASCIICRLF"; 00389000Transform
00390000Transform
Freeze(TEMPORARY); 00391000Transform
End. 00392000Transform
|