COPYWRITE/EXAMPLES/TRANSFORM |
$ 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 |