The first IBM "Compile time preprocessor" was built by the IBM Boston Advanced Programming Center located in Cambridge, Mass, and shipped with the PL/I F compiler. The codice_5 statement was in the Standard, but the rest of the features were not. The DEC and Kednos PL/I compilers implemented much the same set of features as IBM, with some additions of their own. IBM has continued to add preprocessor features to its compilers. The preprocessor treats the written source program as a sequence of tokens, copying them to an output source file or acting on them. When a % token is encountered the following compile time statement is executed: when an identifier token is encountered and the identifier has been codice_114d, codice_115d, and assigned a compile time value, the identifier is replaced by this value. Tokens are added to the output stream if they do not require action (e.g. codice_116), as are the values of ACTIVATEd compile time expressions. Thus a compile time variable codice_117 could be declared, activated, and assigned using codice_118. Subsequent occurrences of codice_117 would be replaced by codice_120.