FPT and WinFPT Reference Manual - Command-line Commands

| SimCon Home | Reference Manual Home |


INSERT FUNCTION TO TRANSLATE READ / WRITE ACCESS

Syntax:

INSERT [ <type> [ * <size> ]] FUNCTION [::] <identifier> TO TRANSLATE { READ | WRITE }
   ACCESS TO [SYMBOL] [::] <identifier>
				

Function:

When code is migrated from one environment to another there may be hardware interfaces or binary files which supply or require foreign data types. For example, a Gould-SEL flight simulator may have interfaces which supply Gould-SEL real numbers. If the code is migrated to a PC which uses IEEE real numbers, the Gould-SEL numbers must be translated when they are used in expressions. This command specifies the translation function. It does not command fpt to make the insertions. The insertions are made in response to the command INSERT TRANSLATIONS OF FOREIGN OBJECTS . When this command is made, the functions are inserted to encapsulate the foreign data types and appropriatre declarations are made.

Where to use this command:

Operating system command line

Yes


Configuration file, config.fsp

Yes


Specification (FSP) files, *.fsp

Yes


Interactively, to FPT> prompt:

Yes


Interactive command files

Yes


Embedded in the Fortran code

Yes


Default:

No translation sub-programs are defined by default (Note that defaults may be modified in the configuration file).

Example:

The code fragment shown below is part of a Gould-SEL program which was migrated to a PC. Air search radar data are supplied by external hardware and the number formats are those used on the original Gould-SEL host.

REAL*4 ASR_H0,ASR_X0,ARS_Y0 REAL*4 ASR_H,ASR_X,ASR_Y REAL*4 ASR_R,ASR_AZ,ASR_EL : * Get the air search radar data CALL GET_ASR(ASR_R,ASR_AZ,ASR_EL) * Convert to range Cartesians ASR_H = ASR_H0 + ASR_R * SIN(ASR_EL) ASR_X = ASR_X0 + ASR_R * COS(ASR_EL) * COS(ASR_AZ) ASR_Y = ASR_Y0 + ASR_R * COS(ASR_EL) * SIN(ASR_AZ)

The code is modified by the commands:

% insert real*4 function :: sel2pc to translate read access to asr_r
% insert real*4 function :: sel2pc to translate read access to asr_az
% insert real*4 function :: sel2pc to translate read access to asr_el
% insert translations of foreign objects

The code is converted to:

REAL*4 sel2pc REAL*4 asr_h0,asr_x0,ars_y0 REAL*4 asr_h,asr_x,asr_y REAL*4 asr_r,asr_az,asr_el ! ! Get the air search radar data CALL get_asr(asr_r,asr_az,asr_el) ! Convert to range Cartesians !% TRANSLATION FUNCTION INSERTED FOR: asr_el asr_h = asr_h0+asr_r*SIN(sel2pc(asr_el)) !% TRANSLATION FUNCTION INSERTED FOR: asr_el !% TRANSLATION FUNCTION INSERTED FOR: asr_az asr_x = asr_x0+asr_r*COS(sel2pc(asr_el))*COS(sel2pc(asr_az)) !% TRANSLATION FUNCTION INSERTED FOR: asr_el !% TRANSLATION FUNCTION INSERTED FOR: asr_az asr_y = asr_y0+asr_r*COS(sel2pc(asr_el))*SIN(sel2pc(asr_az))

Note that the embedded command !% TRANSLATION FUNCTION INSERTED FOR: ... is inserted to mark the changes and to prevent fpt from repeating the insertion if the code is processed again.


Copyright ©1995 to 2014 Software Validation Ltd. All rights reserved.